# Session One: Recomeçar | SQL Por: Isabelly de Souza Nascimento, 18 - INFO D [toc] ## Modelagem 1: Sistema de um catálogo de filme no estilo Netflix >Create Script ```sql= create table tb_genero( id_genero int primary key auto_increment, ds_genero varchar(100), bt_ativo bool ); create table tb_filme( id_filme int primary key auto_increment, nm_filme varchar(100), id_genero int, vl_avaliacao decimal(10,2), bt_disponivel bool, dt_lancamento date, foreign key (id_genero) references tb_genero(id_genero) ); ``` >Insert Script ```sql= insert into tb_genero(ds_genero, bt_ativo) values('Ação', true); insert into tb_genero(ds_genero, bt_ativo) values('Romance', true); insert into tb_genero(ds_genero, bt_ativo) values('Terror', true); insert into tb_genero(ds_genero, bt_ativo) values('Drama', true); insert into tb_genero(ds_genero, bt_ativo) values('Ficção Científica', true); insert into tb_filme(nm_filme, id_genero, vl_avaliacao, bt_disponivel, dt_lancamento) values('O Assassino: O Primeiro Alvo', 1, 8.0, true,'2017-09-11'); insert into tb_filme(nm_filme, id_genero, vl_avaliacao, bt_disponivel, dt_lancamento) values('Resgate', 1, 9.0, true,'2020-04-24'); insert into tb_filme(nm_filme, id_genero, vl_avaliacao, bt_disponivel, dt_lancamento) values('Com Amor, Simon', 2, 9.4, true,'2018-03-22'); insert into tb_filme(nm_filme, id_genero, vl_avaliacao, bt_disponivel, dt_lancamento) values('Me Chame Pelo Seu Nome', 4, 9.2, true,'2018-01-08'); insert into tb_filme(nm_filme, id_genero, vl_avaliacao, bt_disponivel, dt_lancamento) values('Fragmentado', 3, 8.9, true,'2017-03-17'); insert into tb_filme(nm_filme, id_genero, vl_avaliacao, bt_disponivel, dt_lancamento) values('Mentes Sombrias', 5, 7.4, true,'2018-08-16'); insert into tb_filme(nm_filme, id_genero, vl_avaliacao, bt_disponivel, dt_lancamento) values('O Ódio que Você Semeia', 4, 9.3, true,'2018-12-06'); insert into tb_filme(nm_filme, id_genero, vl_avaliacao, bt_disponivel, dt_lancamento) values('Até o Último Homem', 4, 9.5, true,'2017-01-26'); insert into tb_filme(nm_filme, id_genero, vl_avaliacao, bt_disponivel, dt_lancamento) values('Grese — Nos Tempos da Brilhantina', 2, 8.9, true,'1978-09-14'); insert into tb_filme(nm_filme, id_genero, vl_avaliacao, bt_disponivel, dt_lancamento) values('Nos', 3, 7.4, true,'2019-03-21'); ``` >Update Script ```sql= UPDATE tb_filme SET nm_filme ='Nós', bt_disponivel = false WHERE id_filme = 10; UPDATE tb_filme SET nm_filme ='Grease — Nos Tempos da Brilhantina', vl_avaliacao = 3.9 WHERE id_filme = 9; ``` >Delete Script ``` --DELETE FROM tb_filme --WHERE id_filme = 1; --DELETE FROM tb_filme --WHERE id_filme = 7; ``` >Select Script ```sql= select g.ds_genero, f.nm_filme, f.vl_avaliacao, f.bt_disponivel, f.dt_lancamento from tb_filme f inner join tb_genero g on f.id_genero = g.id_genero; select f.nm_filme from tb_filme f inner join tb_genero g on f.id_genero = g.id_genero where g.ds_genero = 'Ação'; select f.nm_filme from tb_filme f inner join tb_genero g on f.id_genero = g.id_genero where g.ds_genero like '%a%' and f.nm_filme like '%a%'; select f.nm_filme from tb_filme f inner join tb_genero g on f.id_genero = g.id_genero where f.vl_avaliacao >= 8.0; select f.nm_filme from tb_filme f inner join tb_genero g on f.id_genero = g.id_genero where dt_lancamento between ('2010-1-1') and ('2020-12-31') and character_length(nm_filme) < 10; select f.nm_filme from tb_filme f inner join tb_genero g on f.id_genero = g.id_genero where g.ds_genero not like '%a'; select f.nm_filme from tb_filme f inner join tb_genero g on f.id_genero = g.id_genero where day(dt_lancamento) between 03 and 15; select f.nm_filme from tb_filme f inner join tb_genero g on f.id_genero = g.id_genero where year(f.dt_lancamento) in (2018); select f.nm_filme, ceiling(vl_avaliacao), floor(vl_avaliacao) from tb_filme f inner join tb_genero g on f.id_genero = g.id_genero order by vl_avaliacao; select f.nm_filme from tb_filme f inner join tb_genero g on f.id_genero = g.id_genero where g.ds_genero not like '%a%' and f.nm_filme like '%a%'; ``` ## Modelagem 2: Sistema de gerencia de informações alunos de uma escola >Create Script ```sql= create table tb_turma( id_turma int primary key auto_increment, nm_turma varchar(1), nr_ano_letivo int, nm_curso varchar(100) ); create table tb_aluno( id_aluno int primary key auto_increment, id_turma int, ds_sexo varchar(100), nm_aluno varchar(100), nr_chamada int, tp_status varchar(1), foreign key (id_turma) references tb_turma(id_turma) ); ``` >Insert Script ```sql= insert into tb_turma(nm_turma, nr_ano_letivo, nm_curso) values('A', 2019, 'Informática'); insert into tb_turma(nm_turma, nr_ano_letivo, nm_curso) values('B', 2021, 'Informática'); insert into tb_turma(nm_turma, nr_ano_letivo, nm_curso) values('E', 2020, 'Informática'); insert into tb_turma(nm_turma, nr_ano_letivo, nm_curso) values('D', 2018, 'Informática'); insert into tb_aluno(id_turma, ds_sexo, nm_aluno, nr_chamada, tp_status) values( 3, 'Feminino', 'Ana Carolina Souza da Cruz', 01, 'F'); insert into tb_aluno(id_turma, ds_sexo, nm_aluno, nr_chamada, tp_status) values( 4, 'Feminino', 'Laisa Yukare de Lima Tokuno', 27, 'F'); insert into tb_aluno(id_turma, ds_sexo, nm_aluno, nr_chamada, tp_status) values( 3, 'Masculino', 'Luccas Nunes ', 30, 'D'); insert into tb_aluno(id_turma, ds_sexo, nm_aluno, nr_chamada, tp_status) values( 2, 'Feminino', 'Melissa Teixeira Soares', 32, 'F'); insert into tb_aluno(id_turma, ds_sexo, nm_aluno, nr_chamada, tp_status) values( 1, 'Masculino', 'Gabriel Lima Rodrigues', 14, 'F'); insert into tb_aluno(id_turma, ds_sexo, nm_aluno, nr_chamada, tp_status) values( 4, 'Masculino', 'Ryan Rodrigues Oliveira', 45, 'F'); insert into tb_aluno(id_turma, ds_sexo, nm_aluno, nr_chamada, tp_status) values( 3, 'Masculino', 'Kauã Lucas Santos', 25, 'D'); insert into tb_aluno(id_turma, ds_sexo, nm_aluno, nr_chamada, tp_status) values( 1, 'Feminino', 'Marina Pires Carneiro', 30, 'F'); insert into tb_aluno(id_turma, ds_sexo, nm_aluno, nr_chamada, tp_status) values( 2, 'Feminino', 'Beatriz de Lourdes dos Santos', 04, 'F'); insert into tb_aluno(id_turma, ds_sexo, nm_aluno, nr_chamada, tp_status) values( 4, 'Masculino', 'Jhean Medeiros Lopes', 23, 'D'); ``` >Update Script ```sql= UPDATE tb_turma SET nm_turma ='C' WHERE id_turma = 3; UPDATE tb_aluno SET nm_aluno ='Beatriz de Lourdes dos Santos da Silveira', nr_chamada = 05 WHERE id_aluno = 9; ``` >Delete Script ```sql= --DELETE FROM tb_aluno --WHERE id_aluno = 4; --DELETE FROM tb_aluno --WHERE id_aluno = 8; ``` >Select Script ```sql= select t.nm_turma, t.nr_ano_letivo, t.nm_curso, a.ds_sexo, a.nm_aluno, a.nr_chamada, a.tp_status from tb_aluno a inner join tb_turma t on a.id_turma = t.id_turma; select t.nm_turma, a.nm_aluno, a.nr_chamada from tb_aluno a inner join tb_turma t on a.id_turma = t.id_turma order by t.nm_turma; select * from tb_aluno a inner join tb_turma t on a.id_turma = t.id_turma where t.nm_turma = 'C' order by a.nm_aluno; select t.nr_ano_letivo, t.nm_turma, a.nm_aluno, a.nr_chamada, a.ds_sexo from tb_aluno a inner join tb_turma t on a.id_turma = t.id_turma where a.tp_status = 'F' and t.nr_ano_letivo >= 2020 order by t.nm_turma; select a.nm_aluno, a.ds_sexo from tb_aluno a inner join tb_turma t on a.id_turma = t.id_turma where t.nm_turma between 'B' and 'D' and a.ds_sexo = 'masculino' order by t.nr_ano_letivo; select a.nr_chamada from tb_aluno a inner join tb_turma t on a.id_turma = t.id_turma where a.nm_aluno not like '%u%'; select a.nm_aluno from tb_aluno a inner join tb_turma t on a.id_turma = t.id_turma where a.nr_chamada >= 30; select a.nm_aluno, length(a.nm_aluno) from tb_aluno a inner join tb_turma t on a.id_turma = t.id_turma; select a.nm_aluno from tb_aluno a inner join tb_turma t on a.id_turma = t.id_turma where a.nm_aluno like '%a%' and a.tp_status = 'D'; select a.nm_aluno from tb_aluno a inner join tb_turma t on a.id_turma = t.id_turma where a.nm_aluno not like '%i%' or a.ds_sexo = 'Masculino'; ```