Skip to content

Instantly share code, notes, and snippets.

@nathan130200
Last active May 31, 2019 19:42
Show Gist options
  • Save nathan130200/d18a6ed23fd5b09d7bc77ade250ea5b5 to your computer and use it in GitHub Desktop.
Save nathan130200/d18a6ed23fd5b09d7bc77ade250ea5b5 to your computer and use it in GitHub Desktop.
Testando coisas de SQL e modelo relacional.
-------------------------
---- Questão: 106432 ----
-------------------------
-- ALUNO (matricula, nome, endereço, telefone)
-- CURSA (matricula, codigo)
-- matricula REFERENCIA matricula em ALUNO
-- codigo REFERENCIA codigo em DISCIPLINA
-- DISCIPLINA (codigo, nome, creditos)
use ead;
drop table if exists cursa;
drop table if exists disciplina;
drop table if exists aluno;
create table aluno (
matricula int not null,
nome varchar(255) not null,
endereco varchar(255) not null,
telefone varchar(255) not null,
constraint pk_matricula primary key (matricula)
);
create table disciplina (
codigo varchar(255) not null,
nome varchar(255) not null,
creditos int default 20,
constraint pk_codigo primary key(codigo)
);
create table cursa (
matricula int not null,
codigo varchar(255) not null,
constraint fk_matricula_aluno foreign key(matricula) references aluno(matricula),
constraint fk_codigo_disciplina foreign key(codigo) references disciplina(codigo),
constraint pk_cursa primary key(matricula, codigo)
);
-- insere os registros dos alunos.
insert into aluno (matricula, nome, endereco, telefone) values (1122334455, 'Fulano', 'Rua Fulano', '12121212');
insert into aluno (matricula, nome, endereco, telefone) values (1122664499, 'Ciclano', 'Rua Ciclano', '34343434');
insert into aluno (matricula, nome, endereco, telefone) values (1233664477, 'Beltrano', 'Rua Beltrano', '56565656');
-- insere os registros das disciplinas.
insert into disciplina (codigo, nome, creditos) values ('CCT0198', 'Estudo 0198', 20);
insert into disciplina (codigo, nome, creditos) values ('CCT0199 ', 'Estudo 0199', 20);
insert into disciplina (codigo, nome, creditos) values ('CCT0200', 'Estudo 0200', 25);
-- insere os registros de relacionamento de que alunos cursam em tal disciplina.
insert into cursa (matricula, codigo) values(1122334455, 'CCT0199');
insert into cursa (matricula, codigo) values(1122334455, 'CCT0200');
insert into cursa (matricula, codigo) values(1122664499, 'CCT0199');
insert into cursa (matricula, codigo) values(1233664477, 'CCT0200');
insert into cursa (matricula, codigo) values(1233664477, 'CCT0199');
insert into cursa (matricula, codigo) values(1233664477, 'CCT0198');
-- seleciona todos os alunos
select a.matricula, a.nome from aluno a;
-- seleciona todos os alunos que cursam a disciplina de código CCT0199.
select a.matricula, a.nome from aluno a
join cursa c on c.matricula = a.matricula and c.codigo = 'CCT0199';
-- seleciona todos os alunos com o código de suas respectivas disciplinas.
select a.matricula, a.nome, c.codigo from aluno a
join cursa c on c.matricula = a.matricula;
/*
-- Informações do Teste --
Descrição: seleciona todos os alunos que cursam a disciplina de código CCT0199.
SGBG: MySQL, MariaDB.
IDE: MySQL Workbench.
Servidor: Local
Resultado:
# matricula, nome
1122334455, Fulano
1122664499, Ciclano
1233664477, Beltrano
*/
/*
-- Informações do Teste --
Descrição: seleciona todos os alunos com o código de suas respectivas disciplinas.
SGBG: MySQL, MariaDB.
IDE: MySQL Workbench.
Servidor: Local
Resultado:
# matricula, nome, codigo
1122334455, Fulano, CCT0199
1122334455, Fulano, CCT0200
1122664499, Ciclano, CCT0199
1233664477, Beltrano, CCT0198
1233664477, Beltrano, CCT0199
1233664477, Beltrano, CCT0200
*/
-- Fontes que e ajudaram a criar esse script
-- http://www.macoratti.net/13/06/sql_arcb.htm
-- https://www.w3schools.com/sql/sql_foreignkey.asp
-- https://www.devmedia.com.br/forum/chave-estrangeira-composta-tem-jeito/38138
-- https://www.profissionaisti.com.br/2009/06/entendendo-outer-joins-sql-parte-2-conexoes-internas-inner-join/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment