---
# System prepended metadata

title: Session Recomeçar

---

# Session Recomeçar
autor: Guilherme Oliveira Verissimo
turma: InfoC
número: 21

[toc]


## Modelagem Filme

>Create Script
```sql=
CREATE TABLE TB_GENERO (
  ID_GENERO INT PRIMARY KEY AUTO_INCREMENT,
  DS_GENERO VARCHAR(200),
  BT_ATIVO  BOOL
 );
 
CREATE TABLE TB_FILME (
  ID_FILME      INT PRIMARY KEY AUTO_INCREMENT,
  NM_FILME      VARCHAR(200),
  ID_GENERO     INT,
  VL_AVALIACAO  DECIMAL(15,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),
        ("Ficção", true),
        ("Comédia", true),
        ("Infantil", true),
        ("Aventura", true);
 
 INSERT INTO TB_FILME (NM_FILME, ID_GENERO, VL_AVALIACAO, BT_DISPONIVEL, DT_LANCAMENTO)
 VALUES ("V&F 9", 1, 4.9, true, "2021-04-01"),
        ("The Avengers", 2, 4.7, true, "2012-04-27"),
        ("Vovó Zona", 3, 4.5, true, "2000-05-31"),
        ("The Last Naruto: O Filme", 5, 4.8, true, "2015-05-28"),
        ("Os Incríveis", 4, 4.7, true, "2004-12-10"),
        ("Mortal Kombat", 1, 4.0, true, "2021-04-15"),
        ("Rambo IV", 1, 4.6, true, "2011-02-28");
 ```     
 
 >Update/Delete Script
```sql=
 UPDATE TB_FILME
 SET VL_AVALIACAO = 4.80
 WHERE ID_FILME = 2;
 
 UPDATE TB_FILME
 SET DT_LANCAMENTO = "2003-12-10"
 WHERE ID_FILME = 5;
 
 DELETE FROM TB_FILME
 WHERE ID_FILME = 1;
 
 DELETE FROM TB_FILME
 WHERE ID_FILME = 3; 
```

### Desafios

>Select Script

```sql=
--4. Consultar todos os filmes com gênero igual a ‘Ação’.
SELECT F.NM_FILME
FROM TB_FILME F
INNER JOIN TB_GENERO G
ON F.ID_GENERO = G.ID_GENERO
WHERE DS_GENERO = "Ação";
```
```sql=
--5. Consultar todos os filmes que possuam o nome e gênero contendo a letra ‘a’.
SELECT F.NM_FILME
FROM TB_FILME F
INNER JOIN TB_GENERO G
ON F.ID_GENERO = G.ID_GENERO
WHERE NM_FILME LIKE "%A%"
AND DS_GENERO LIKE "%A%";
```
```sql=
--6. Consultar todos os filmes que estejam disponíveis e com avaliação maior que 8. (minhas avaliações vão de 0 a 5, não 8, por isso mudei um pouco)
SELECT NM_FILME
FROM TB_FILME F
WHERE BT_DISPONIVEL = true
AND VL_AVALIACAO > 4.0;
```
```sql=
--7. Consultar todos os filmes que foram lançados entre 2010 e 2020 com nome de filme menor que 10 caracteres.
SELECT NM_FILME
FROM TB_FILME
WHERE DT_LANCAMENTO BETWEEN "2010-01-01" AND "2020-12-31"
AND LENGTH (NM_FILME) < 10;
```

### Minhas 5 consultas
```sql=
--1. Consultar os filmes que se encontram disponiveis e possuem as letras O e M no nome.
SELECT NM_FILME
FROM TB_FILME F
WHERE NM_FILME LIKE "%O%"
AND   NM_FILME LIKE "%M%"
AND BT_DISPONIVEL = true;
```
```sql=
--2. Consultar os filmes que tenham avaliação entre 4.2 e 4.8.
SELECT NM_FILME
FROM TB_FILME F
WHERE VL_AVALIACAO 
BETWEEN 4.2 AND 4.8;
```
```sql=
--3. Consultar os filmes que foram lançados depois de 01/01/2017.
SELECT NM_FILME
FROM TB_FILME F
WHERE DT_LANCAMENTO > "2017-01-01";
```
```sql=
--4. Consultar os filmes que possuam a letra A no nome
SELECT NM_FILME
FROM TB_FILME F
INNER JOIN TB_GENERO G
ON F.ID_GENERO = G.ID_GENERO
WHERE DS_GENERO LIKE "%A%"
AND VL_AVALIACAO < 4.6 
OR VL_AVALIACAO > 4.8;
```
```sql=
--5. Consultar os filmes lançados depois de 01/01/2011 e que sejam de Ação ou Ficção
SELECT NM_FILME
FROM TB_FILME F
INNER JOIN TB_GENERO G
ON F.ID_GENERO = G.ID_GENERO
WHERE DT_LANCAMENTO > "2011-01-01" 
AND DS_GENERO = "Ação"
OR DS_GENERO = "Ficçâo";
```

## Modelagem Alunos

>Create Script
```sql=
CREATE TABLE TB_TURMA (
  ID_TURMA		INT PRIMARY KEY AUTO_INCREMENT,
  NM_TURMA		VARCHAR(50),
  NR_ANO_LETIVO	INT,
  NM_CURSO		VARCHAR(50)
  );
    
CREATE TABLE TB_ALUNOS (
  ID_ALUNO      INT PRIMARY KEY AUTO_INCREMENT,
  ID_TURMA      INT,
  NM_ALUNO      VARCHAR(50),
  NR_CHAMADA    INT,
  DS_SEXO       VARCHAR(50),
  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 ("Info A", 2021, "Informatica"),
        ("Info B", 2021, "Informatica"),
        ("Info C", 2021, "Informatica"),
        ("Info D", 2021, "Informatica");
       
 INSERT INTO TB_ALUNOS (ID_TURMA, NM_ALUNO, NR_CHAMADA, DS_SEXO, TP_STATUS)
 VALUES (1, "Bruno Conceição de Souza", 1, "Masculino", "P"),
        (1, "Davi Gabriel Freitas de Lima", 5, "Masculino", "F"),
        (1, "Nayara Vitória Bernardo Ehnert", 37, "Feminino", "F"),
        (2, "Daniel Aristótelis Assunção da Silva", 7, "Masculino", "P"),
        (2, "Felipe Costa Sanches Vale", 11, "Masculino", "P"),
        (3, "Heloysa dos Santos Arruda", 22, "Feminino", "P"),
        (3, "Karoline Sampaio Silva", 27, "Feminino", "P"),
        (4, "Letícia Simões da Silva", 26, "Feminino", "F"),
        (4, "Gustavo da Cunha Vicente", 14, "Masculino", "F"),
        (4, "Catarina dos Santos Siqueira", 3, "Feminino", "P");
 ```     
 
 >Update/Delete Script
```sql=
 UPDATE TB_ALUNOS
 SET NR_CHAMADA = 2
 WHERE ID_ALUNO = 1;
 
 UPDATE TB_ALUNOS
 SET TP_STATUS = "F"
 WHERE ID_ALUNO = 4;
 
 DELETE FROM TB_ALUNOS
 WHERE ID_ALUNO = 10;
 
 DELETE FROM TB_ALUNOS
 WHERE ID_ALUNO = 2;
```

### Desafios

>Select Script

```sql=
--4. Selecionar turma, nome e chamada da tabela alunos filtrando por turma.
SELECT G.NM_TURMA,
       F.NM_ALUNO,
       F.NR_CHAMADA
FROM TB_ALUNOS F
INNER JOIN TB_TURMA G
ON F.ID_TURMA = G.ID_TURMA
WHERE NM_TURMA = "Info C";
```
```sql=
--5. Selecionar todos campos da tabela alunos filtrando por nome e turma de forma parcial.
SELECT *
FROM TB_ALUNOS F
INNER JOIN TB_TURMA G
ON F.ID_TURMA = G.ID_TURMA
WHERE NM_ALUNO LIKE "%Sil%"
AND NM_TURMA LIKE "%C%";
```
```sql=
--6. Selecione ano letivo, turma, nome, chamada, sexo da tabela alunos filtrando os frequentes por turma e ano letivo.
SELECT G.NR_ANO_LETIVO,
	   G.NM_TURMA,
       F.NM_ALUNO,
       F.NR_CHAMADA,
       F.DS_SEXO
FROM TB_ALUNOS F
INNER JOIN TB_TURMA G
ON F.ID_TURMA = G.ID_TURMA
WHERE TP_STATUS = "P"
AND NM_TURMA = "Info C"
AND NR_ANO_LETIVO = 2021;
```
```sql=
--7. Selecione nome, sexo da tabela alunos filtrando por ano, turma e sexo.
SELECT F.NM_ALUNO,
       F.DS_SEXO
FROM TB_ALUNOS F
INNER JOIN TB_TURMA G
ON F.ID_TURMA = G.ID_TURMA
WHERE NR_ANO_LETIVO = 2021
AND NM_TURMA = "Info B"
AND DS_SEXO = "Masculino";
```

### Minhas 5 consultas
```sql=
--Selecionar o nome dos alunos que tenham o número da chamada entre 20 e 30.
SELECT NM_ALUNO
FROM TB_ALUNOS 
WHERE NR_CHAMADA BETWEEN 20 AND 30;
```
```sql=
--Selecionar o nome dos alunos que tenham a letra C no nome e que são presentes.
SELECT NM_ALUNO
FROM TB_ALUNOS 
WHERE NM_ALUNO LIKE "%C%"
AND TP_STATUS = "P";
```
```sql=
--Selecionar o nome dos alunos que são da turma Info A e são do sexo masculino.
SELECT NM_ALUNO
FROM TB_ALUNOS 
INNER JOIN TB_TURMA 
ON TB_ALUNOS.ID_TURMA = TB_TURMA .ID_TURMA
WHERE NM_TURMA = "Info A"
AND DS_SEXO = "Masculino";
```
```sql=
--Selecionar o nome dos alunos que não são presentes e que tenham o número da chamada maior que 20.
SELECT NM_ALUNO
FROM TB_ALUNOS 
INNER JOIN TB_TURMA 
ON TB_ALUNOS.ID_TURMA = TB_TURMA .ID_TURMA
WHERE TP_STATUS = "F"
AND NR_CHAMADA > 20;
```
```sql=
--Selecionar o nome do alunos que tenha Silva no nome e que seus números são menores que 10 ou maiores que 20. 
SELECT NM_ALUNO
FROM TB_ALUNOS 
INNER JOIN TB_TURMA 
ON TB_ALUNOS.ID_TURMA = TB_TURMA .ID_TURMA
WHERE NM_ALUNO LIKE "%SILVA%"
AND NR_CHAMADA < 10
OR NM_ALUNO LIKE "%SILVA%"
AND NR_CHAMADA > 20;

```