# Session Two Banco de Dados: Getting Better **Autor**: Elias de Freitas Cavalcante **Número**: 12 **Turma**: INFO C [toc] ## Tabela Filme > Create script ```sql= CREATE TABLE tb_genero ( id_genero int primary key auto_increment, nm_genero varchar(255), bt_ativo bool ); CREATE TABLE tb_filme ( id_filme int primary key auto_increment, nm_filme varchar(255) not null, dt_lancamento date, vl_avaliacao decimal(15,1) default 5, bt_disponivel bool not null ); CREATE TABLE tb_filme_genero ( id_filme_genero int primary key auto_increment, id_filme int, id_genero int, FOREIGN KEY (id_filme) REFERENCES tb_filme(id_filme), FOREIGN KEY (id_genero) REFERENCES tb_genero(id_genero) ); ``` ### Inserts **Inserir 5 registros na tabela.** ```sql= INSERT INTO tb_genero (nm_genero, bt_ativo) VALUES ('Comédia', true), ('Ação', true), ('Terror', true); INSERT INTO tb_filme (nm_filme, dt_lancamento, vl_avaliacao, bt_disponivel) VALUES ('Gente Grande', '2010-01-02', 9, true), ('As branquelas', '2008-01-02', 8.5, true), ('Invocação do Mal 2', '2014-06-09',8.5, true), ('Amor e Monstros', '2021-02-14', 9.5, true), ('No Limite do Amanhã', '2014-05-29', 6.0, true); INSERT INTO tb_filme_genero (id_filme, id_genero) VALUES (1, 1), (2, 1), (2, 2), (3, 3), (4, 1), (5, 2); ``` ### SELECTS **Selecionar fime, gênero aplicando o relacionamento nas tabelas, sem filtros, ordenando por filme.** ```sql= SELECT f.nm_filme, g.nm_genero FROM tb_filme_genero fg INNER JOIN tb_filme f ON f.id_filme = fg.id_filme INNER JOIN tb_genero g ON g.id_genero = fg.id_genero ORDER BY f.nm_filme ASC; ``` **Selecionar id do filme, filme, id do gênero e gênero aplicando o relacionamento nas tabelas, filtrando os que possuem avaliação maior que 4, ordenando por filme.** ```sql= SELECT* FROM tb_filme_genero fg INNER JOIN tb_filme f ON f.id_filme = fg.id_filme INNER JOIN tb_genero g ON g.id_genero = fg.id_genero WHERE f.vl_avaliacao > 4; ``` **Selecionar filme, avaliação, lançamento aplicando o relacionamento nas tabelas, filtrando os filmes disponíveis com gênero igual a ‘ação’, ordenando por avaliação.** ```sql= SELECT f.nm_filme, f.vl_avaliacao, f.dt_lancamento FROM tb_filme_genero fg INNER JOIN tb_filme f ON f.id_filme = fg.id_filme INNER JOIN tb_genero g ON g.id_genero = fg.id_genero WHERE g.nm_genero = 'Ação' ORDER BY f.vl_avaliacao ASC; ``` **Selecionar filme, avaliação, lançamento, disponível, gênero aplicando o relacionamento nas tabelas, filtrando os filmes que possuam os gêneros ‘romance’ e ‘comédia’.** ```sql= SELECT f.nm_filme, f.vl_avaliacao, f.dt_lancamento, f.bt_disponivel, g.nm_genero FROM tb_filme_genero fg INNER JOIN tb_filme f ON f.id_filme = fg.id_filme INNER JOIN tb_genero g ON g.id_genero = fg.id_genero WHERE g.nm_genero = 'Comédia'; ``` ### UPDATES **Alterar 1 filme, 1 gênero, 1 vínculo de filmeXgênero das tabelas.** ```sql= UPDATE tb_filme SET nm_filme ='Star Wars' WHERE id_filme = 5; ``` ```sql= UPDATE tb_genero SET nm_genero ='Avetentura' WHERE id_genero = 3; ``` ```sql= UPDATE tb_filme_genero SET id_filme = 1 WHERE id_filme = 2; ``` ### DELETS **Remover 1 filme, 1 gênero, 1 vínculo de filmeXgênero das tabelas.** ```sql= DELETE FROM tb_filme WHERE nm_filme = 'Gente Grande'; ``` ```sql= DELETE FROM tb_genero SET id_genero = 1; ``` ```sql= DELETE FROM tb_filme_genero WHERE id_genero = 3; ``` ### Consultas Personalizadas ```sql= SELECT* FROM tb_filme_genero fg INNER JOIN tb_filme f ON f.id_filme = fg.id_filme INNER JOIN tb_genero g ON g.id_genero = fg.id_genero WHERE f.dt_lancamento = '2014-01-01'; ``` ```sql= SELECT* FROM tb_filme_genero fg INNER JOIN tb_filme f ON f.id_filme = fg.id_filme INNER JOIN tb_genero g ON g.id_genero = fg.id_genero WHERE f.nm_filme LIKE '%S'; ``` ```sql= SELECT* FROM tb_filme_genero fg INNER JOIN tb_filme f ON f.id_filme = fg.id_filme INNER JOIN tb_genero g ON g.id_genero = fg.id_genero WHERE f.vl_avaliacao = 9; ``` ```sql= SELECT* FROM tb_filme_genero fg INNER JOIN tb_filme f ON f.id_filme = fg.id_filme INNER JOIN tb_genero g ON g.id_genero = fg.id_genero WHERE f.vl_avaliacao <= 9 ORDER BY f.nm_filme ASC; ``` ```sql= SELECT* FROM tb_filme_genero fg INNER JOIN tb_filme f ON f.id_filme = fg.id_filme INNER JOIN tb_genero g ON g.id_genero = fg.id_genero WHERE g.nm_genero LIKE 'C%'; ``` ## Tabela Boletim > Create script ```sql= CREATE TABLE tb_diciplina ( id_diciplina int primary key auto_increment, nm_diciplina varchar(255), nm__professor varchar(255) ); CREATE TABLE tb_aluno ( id_aluno int primary key auto_increment, nm_turma varchar(255), nr_ano_letivo int, nm_aluno varchar(255), nr_chamada int, ds_sexo varchar(20), tp_status varchar(1) ); CREATE TABLE tb_boletim( id_boletim int primary key auto_increment, id_aluno int, id_diciplina int, vl_nota decimal(15,1), qtd_faltas int, FOREIGN KEY (id_aluno) REFERENCES tb_aluno(id_aluno), FOREIGN KEY (id_diciplina) REFERENCES tb_diciplina(id_diciplina) ); ``` ### SELECTS **Selecionar aluno, turma, ano, disciplina, nota aplicando o relacionamento nas tabelas, sem filtros, ordenando por aluno.** ```sql= SELECT a.nm_aluno, a.nm_turma, a.nr_ano_letivo, d.nm_diciplina, ad.vl_nota FROM tb_boletim ad INNER JOIN tb_aluno a ON a.id_aluno = ad.id_aluno INNER JOIN tb_diciplina d ON d.id_diciplina = ad.id_diciplina ORDER BY a.nm_aluno ASC; ``` **Selecionar aluno, turma, ano, disciplina, nota aplicando o relacionamento nas tabelas, filtrando por turma e ano letivo, ordenando por nota da maior para a menor.** ```sql= SELECT a.nm_aluno, a.nm_turma, a.nr_ano_letivo, d.nm_diciplina, ad.vl_nota FROM tb_boletim ad INNER JOIN tb_aluno a ON a.id_aluno = ad.id_aluno INNER JOIN tb_diciplina d ON d.id_diciplina = ad.id_diciplina ORDER BY ad.vl_nota ASC; ``` **Selecionar aluno, turma, ano, disciplina, nota aplicando o relacionamento nas tabelas, filtrando os alunos aprovados por ano e turma, ordenando por ano, turma e chamada.** ```sql= SELECT a.nm_aluno, a.nm_turma, a.nr_ano_letivo, d.nm_diciplina, ad.vl_nota FROM tb_boletim ad INNER JOIN tb_aluno a ON a.id_aluno = ad.id_aluno INNER JOIN tb_diciplina d ON d.id_diciplina = ad.id_diciplina WHERE a.tp_status ='A' ORDER BY a.nr_ano_letivo, a.nm_turma, a.nr_chamada ASC; ``` **Selecionar aluno, turma, ano aplicando o relacionamento nas tabelas, filtrando os alunos reprovados por ano e turma.** ```sql= SELECT a.nm_aluno, a.nm_turma, a.nr_ano_letivo, d.nm_diciplina, ad.vl_nota FROM tb_boletim ad INNER JOIN tb_aluno a ON a.id_aluno = ad.id_aluno INNER JOIN tb_diciplina d ON d.id_diciplina = ad.id_diciplina WHERE a.tp_status ='R' ORDER BY a.nr_ano_letivo, a.nm_turma ASC; ``` ### UPDATES **Alterar 1 aluno, 1 disciplina, 2 notas.** ```sql= UPDATE tb_aluno SET nm_aluno = 'Taylor' WHERE id_aluno = 1; ``` ```sql= UPDATE tb_diciplina SET nm_diciplina = 'Portugues' WHERE id_diciplina = 1; ``` ```sql= UPDATE tb_boletim SET vl_nota = 0.0 WHERE id_boletim = 2; ``` ```sql= UPDATE tb_boletim SET vl_nota = 10.0 WHERE id_boletim = 3; ``` ### DELETS **Remover 1 nota, 1 disciplina, 1 aluno.** ```sql= DELETE FROM tb_boletim WHERE vl_nota = 3.0; ``` ```sql= DELETE FROM tb_diciplina WHERE id_diciplina = 2; ``` ```sql= DELETE FROM tb_aluno WHERE nm_aluno = 'Elias da Silva'; ``` ### Consultas Personalizadas ```sql= SELECT a.nm_aluno, a.nm_turma FROM tb_boletim ad INNER JOIN tb_aluno a ON a.id_aluno = ad.id_aluno INNER JOIN tb_diciplina d ON d.id_diciplina = ad.id_diciplina WHERE d.nm_diciplina = 'Ingles'; ``` ```sql= SELECT a.nm_aluno, a.nm_turma, ad.vl_nota FROM tb_boletim ad INNER JOIN tb_aluno a ON a.id_aluno = ad.id_aluno INNER JOIN tb_diciplina d ON d.id_diciplina = ad.id_diciplina WHERE ad.vl_nota > 5.0 ORDER BY ad.vl_nota ASC; ``` ```sql= SELECT a.nm_turma, a.nm_aluno FROM tb_boletim ad INNER JOIN tb_aluno a ON a.id_aluno = ad.id_aluno INNER JOIN tb_diciplina d ON d.id_diciplina = ad.id_diciplina WHERE a.nm_turma LIKE '%B%' ORDER BY a.nm_turma, a.nm_aluno ASC; ``` ```sql= SELECT a.nm_aluno FROM tb_boletim ad INNER JOIN tb_aluno a ON a.id_aluno = ad.id_aluno INNER JOIN tb_diciplina d ON d.id_diciplina = ad.id_diciplina WHERE a.nm_aluno LIKE '%s%'; ``` ```sql= SELECT a.nm_aluno, a.nm_turma FROM tb_boletim ad INNER JOIN tb_aluno a ON a.id_aluno = ad.id_aluno INNER JOIN tb_diciplina d ON d.id_diciplina = ad.id_diciplina WHERE ad.vl_nota <= 4.0; ```
{"metaMigratedAt":"2023-06-15T23:56:57.157Z","metaMigratedFrom":"Content","title":"Session Two Banco de Dados: Getting Better","breaks":true,"contributors":"[{\"id\":\"330b3204-61c5-4231-8ab3-e59d5589a829\",\"add\":10843,\"del\":1697}]"}
Expand menu