# Session Two
autor: Felipe Oliveira Verissimo
turma: Info C
número: 16
[toc]
## Tabelas Filme e Genero
>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),
DT_LANCAMENTO DATE,
VL_AVALIACAO DECIMAL(15,2),
BT_DISPONIVEL BOOL
);
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)
);
```
>Insert Script
```sql=
INSERT INTO TB_GENERO (NM_GENERO, BT_ATIVO)
VALUES ("COMEDIA", TRUE),
("AÇAO", TRUE),
("AVENTURA", TRUE),
("TERROR", TRUE),
("FICÇÃO CIENTIFICA", TRUE),
("ROMANCE", TRUE);
INSERT INTO TB_FILME (NM_FILME, DT_LANCAMENTO, VL_AVALIACAO, BT_DISPONIVEL)
VALUES ("VELOSES E FURIOSOS 8", "2017-4-13", 7.8, TRUE),
("VELOSES E FURIOSOS 5", "2011-4-15", 6.7, TRUE),
("JURISSIC WORD", "2015-6-11", 8.8, TRUE),
("JURASSIC PARK", "1993-6-25", 7, TRUE),
("ANNABELLE", "2014-10-9", 8, TRUE),
("A CINCO PASSOS DE VOCÊ", "2019-3-21", 9, TRUE),
("AMOR AO ACASO", "2016-4-9", 5.9, TRUE);
INSERT INTO TB_FILME_GENERO (ID_FILME, ID_GENERO)
VALUES (1, 2),
(1, 3),
(2, 3),
(3, 2),
(3, 3),
(4, 5),
(4, 3),
(5, 4),
(6, 6),
(7, 1);
```
### Delete e update
```sql=
UPDATE TB_FILME
SET DT_LANCAMENTO = "2011-12-11"
WHERE ID_FILME = 3;
UPDATE TB_GENERO
SET NM_GENERO = "TERROR"
WHERE ID_GENERO = 4;
UPDATE TB_FILME_GENERO
SET ID_FILME = 7
WHERE ID_GENERO = 6;
DELETE FROM TB_FILME
WHERE ID_FILME = 1;
DELETE FROM TB_GENERO
WHERE NM_GENERO = 1;
DELETE FROM TB_FILME_GENERO
WHERE ID_FILME = 1
```
### DML
>Select Script
```sql=
--1.Selecionar filme, gênero aplicando o relacionamento nas tabelas, sem filtros, ordenando por filme.
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;
```
```sql=
--2.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.
SELECT F.ID_FILME,
F.NM_FILME,
G.ID_GENERO,
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 F.VL_AVALIACAO > 4
ORDER BY F.NM_FILME;
```
```sql=
--3.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.
SELECT F.NM_FILME,
F.DT_LANCAMENTO,
F.VL_AVALIACAO
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.VL_AVALIACAO;
```
```sql=
--4.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’.
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 = "ROMANCE"
OR G.NM_GENERO = "COMEDIA";
```
### Consultas personalizadas
```sql=
--1.Seleciona o filme do genero ação que tenha a avaliação maior ou igual que cinco.
SELECT F.NM_FILME
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ÇAO"
AND F.VL_AVALIACAO >= 5;
```
```sql=
--2.Seleciona o filme do genero aventura que tenha a avaliação maior ou igual que cinco.
SELECT F.NM_FILME
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 = "AVENTURA"
AND F.VL_AVALIACAO >= 5;
```
```sql=
--3.Seleciona o filme do genero ação cujo a data de lançamento seja maior ou igual que 2015.
SELECT F.NM_FILME
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ÇAO"
AND F.DT_LANCAMENTO >= 2015-1-1;
```
```sql=
--4.Seleciona o filme do genero aventura cujo a data de lançamento seja maior ou igual que 2018
SELECT F.NM_FILME
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 = "AVENTURA"
AND F.DT_LANCAMENTO >= 2018-1-1;.
```
```sql=
--5.Seleciona o filme do genero aventura cujo a avaliação seja maior ou igual que 7.0;
SELECT F.NM_FILME
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 = "AVENTURA"
AND F.VL_AVALIACAO >= 7.0;
```
## Modelagem Alunos e Disciplina
>Create Script
```sql=
CREATE TABLE TB_ALUNOS (
ID_ALUNO INT PRIMARY KEY AUTO_INCREMENT,
NM_TURMA VARCHAR(100),
NR_ANO_LETIVO INT,
NM_ALUNO VARCHAR(100),
NR_CHAMADA INT,
DS_SEXO VARCHAR(100),
TP_STATUS VARCHAR(100)
);
CREATE TABLE TB_DISCIPLINA (
ID_DISCIPLINA INT PRIMARY KEY AUTO_INCREMENT,
NM_DISCIPLINA VARCHAR(100),
NM_PROFESSOR VARCHAR(100)
);
CREATE TABLE TB_BOLETIM (
ID_BOLETIM INT PRIMARY KEY AUTO_INCREMENT,
ID_ALUNO INT,
ID_DISCIPLINA INT,
VL_NOTA DECIMAL(15,2),
QTD_FALTAS INT,
FOREIGN KEY (ID_ALUNO) REFERENCES TB_ALUNOS (ID_ALUNO) ON DELETE CASCADE,
FOREIGN KEY (ID_DISCIPLINA) REFERENCES TB_DISCIPLINA (ID_DISCIPLINA) ON DELETE CASCADE
);
```
>Insert Script
```sql=
INSERT INTO TB_ALUNOS (NM_TURMA, NR_ANO_LETIVO, NM_ALUNO, NR_CHAMADA, DS_SEXO, TP_STATUS)
VALUES ("INFO C", 2021, "FELIPE OLIVEIRA VERISSIMO", 16, "MASCULINO", "PRESENTE"),
("INFO C", 2021, "BEATRIZ GOMES FELICIANO", 7, "FEMININO", "PRESENTE"),
("INFO C", 2021, "GUILHERME OLIVEIRA VERISSIMO", 21, "MASCULINO", "PRESENTE");
INSERT INTO TB_DISCIPLINA (NM_DISCIPLINA, NM_PROFESSOR)
VALUES ("LINGUAGEM DE PROGRAMAÇÃO", "BRUNO OLIVEIRA"),
("PREPARAÇÃO PARA O MERCADO DE TRABALHO", "CLAYTON"),
("MATEMÁTICA", "CARLOS"),
("INGLÊS INSTRUMENTAL", "CLAYTON"),
("OPERAÇÃO E SUPORTE A APLICATIVOS", "ROBERTO CARLOS");
INSERT INTO TB_BOLETIM (ID_ALUNO, ID_DISCIPLINA, VL_NOTA, QTD_FALTAS)
VALUES (1, 1, 8.0, 0),
(1, 2, 7.0, 0),
(1, 3, 7.5, 0),
(1, 4 , 9.0, 0),
(1, 5, 8.0, 0),
(2, 1, 9.0, 0),
(2, 2, 8.0, 0),
(2, 3, 7.0, 0),
(2, 4, 8.0, 0),
(2, 5, 8.0, 0),
(3, 1, 7.0, 0),
(3, 2, 4.0, 0),
(3, 3, 9.0, 0),
(3, 4, 8.0, 0),
(3, 5, 10.0, 0);
```
### Update/Delete Script
```sql=
UPDATE TB_ALUNOS
SET NR_CHAMADA = 33
WHERE ID_ALUNO = 3;
UPDATE TB_DISCIPLINA
SET NM_DISCIPLINA = "LINGUAGEM DE PROGRAMAÇÃO"
WHERE ID_DISCIPLINA = 5;
UPDATE TB_BOLETIM
SET VL_NOTA = 10
WHERE ID_BOLETIM = 3;
UPDATE TB_BOLETIM
SET VL_NOTA = 10
WHERE ID_BOLETIM = 1;
DELETE FROM TB_ALUNOS
WHERE ID_ALUNO = 3;
DELETE FROM TB_DISCIPLINA
WHERE ID_DISCIPLINA = 4;
DELETE FROM TB_BOLETIM
WHERE ID_BOLETIM = 1;
```
### DML
>Select Script
```sql=
--1. Selecionar aluno, turma, ano, disciplina, nota aplicando o relacionamento nas tabelas, sem filtros, ordenando por aluno.
SELECT A.NM_ALUNO,
A.NM_TURMA,
A.NR_ANO_LETIVO,
AB.NM_DISCIPLINA,
B.VL_NOTA
FROM TB_BOLETIM B
INNER JOIN TB_ALUNOS A
ON A.ID_ALUNO = B.ID_ALUNO
INNER JOIN TB_DISCIPLINA AB
ON AB.ID_DISCIPLINA = B.ID_DISCIPLINA
ORDER BY A.NM_ALUNO;
```
```sql=
--2. 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.
SELECT A.NM_ALUNO,
A.NM_TURMA,
A.NR_ANO_LETIVO,
AB.NM_DISCIPLINA,
B.VL_NOTA
FROM TB_BOLETIM B
INNER JOIN TB_ALUNOS A
ON A.ID_ALUNO = B.ID_ALUNO
INNER JOIN TB_DISCIPLINA AB
ON AB.ID_DISCIPLINA = B.ID_DISCIPLINA
WHERE A.NM_TURMA = "INFO C"
AND A.NR_ANO_LETIVO = 2021
ORDER BY B.VL_NOTA DESC;
```
```sql=
--3. 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.
SELECT A.NM_ALUNO,
A.NM_TURMA,
A.NR_ANO_LETIVO,
AB.NM_DISCIPLINA,
B.VL_NOTA
FROM TB_BOLETIM B
INNER JOIN TB_ALUNOS A
ON A.ID_ALUNO = B.ID_ALUNO
INNER JOIN TB_DISCIPLINA AB
ON AB.ID_DISCIPLINA = B.ID_DISCIPLINA
WHERE B.VL_NOTA >= 5
AND A.NR_ANO_LETIVO = 2021
AND A.NM_TURMA = "INFO C"
ORDER BY A.NR_ANO_LETIVO, A.NM_TURMA, A.NR_CHAMADA;
```
```sql=
--4. Selecionar aluno, turma, ano aplicando o relacionamento nas tabelas, filtrando os alunos
SELECT A.NM_ALUNO,
A.NM_TURMA,
A.NR_ANO_LETIVO
FROM TB_BOLETIM B
INNER JOIN TB_ALUNOS A
ON A.ID_ALUNO = B.ID_ALUNO
INNER JOIN TB_DISCIPLINA AB
ON AB.ID_DISCIPLINA = B.ID_DISCIPLINA
WHERE B.VL_NOTA < 5
AND A.NR_ANO_LETIVO = 2021
AND A.NM_TURMA = "INFO C";
```
### Consultas personalizadas
```sql=
--1.Selecionar os alunos que tiraram notas acima de sete.
SELECT A.NM_ALUNO
FROM TB_BOLETIM B
INNER JOIN TB_ALUNOS A
ON A.ID_ALUNO = B.ID_ALUNO
INNER JOIN TB_DISCIPLINA AB
ON AB.ID_DISCIPLINA = B.ID_DISCIPLINA
WHERE B.VL_NOTA > 7;
```
```sql=
--2.Selecionar os alunos que tiraram notas abaixo de sete.
SELECT A.NM_ALUNO
FROM TB_BOLETIM B
INNER JOIN TB_ALUNOS A
ON A.ID_ALUNO = B.ID_ALUNO
INNER JOIN TB_DISCIPLINA AB
ON AB.ID_DISCIPLINA = B.ID_DISCIPLINA
WHERE B.VL_NOTA < 7;
```
```sql=
--3.Selecionar os alunos que tem o número da chamada entre dez e vinte e cinco.
SELECT A.NM_ALUNO
FROM TB_BOLETIM B
INNER JOIN TB_ALUNOS A
ON A.ID_ALUNO = B.ID_ALUNO
INNER JOIN TB_DISCIPLINA AB
ON AB.ID_DISCIPLINA = B.ID_DISCIPLINA
WHERE A.NR_CHAMADA BETWEEN 10 AND 25;
```
```sql=
--4.Selecioanar os alunos que o nome contem a letra e.
SELECT A.NM_ALUNO
FROM TB_BOLETIM B
INNER JOIN TB_ALUNOS A
ON A.ID_ALUNO = B.ID_ALUNO
INNER JOIN TB_DISCIPLINA AB
ON AB.ID_DISCIPLINA = B.ID_DISCIPLINA
WHERE A.NM_ALUNO LIKE "%E%";
```
```sql=
--5.Selecioanar os alunos que o nome contem a letra t.
SELECT A.NM_ALUNO
FROM TB_BOLETIM B
INNER JOIN TB_ALUNOS A
ON A.ID_ALUNO = B.ID_ALUNO
INNER JOIN TB_DISCIPLINA AB
ON AB.ID_DISCIPLINA = B.ID_DISCIPLINA
WHERE A.NM_ALUNO BETWEEN "%T%";
```
{"metaMigratedAt":"2023-06-16T00:09:42.959Z","metaMigratedFrom":"Content","title":"Session Two","breaks":true,"contributors":"[{\"id\":\"6a057479-8a7c-401d-8967-32d1fedb4e2c\",\"add\":16294,\"del\":4617}]"}