# Recomeçar (MySql)
Autor: Letícia Rocha✨💕
[toc]
## Modelagem: Sistema de filmes no estilo Netflix
>Create Table
```sql=
--tabela de genero
Create Table Tb_Genero(
Id_Genero Int primary key auto_increment,
Ds_Genero Varchar(200),
Bt_Ativo Bool
);
```
>Create Table
```sql=
--tabela de filmes
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)
);
```
## Desafios:
> 1.1 **Inserir 10 registros na tabela.**
> Insert script
```sql=
--tabela de genero
Insert Into Tb_Genero (Ds_Genero, Bt_Ativo)
Values ('Clássico', TRUE),
('Romance', TRUE),
('Drama', TRUE),
('Terror', TRUE),
('Anime', TRUE),
('Ação',TRUE),
('Documentário', True),
('Comedia', TRUE),
('Fantasia', TRUE),
('Ficção', TRUE);
```
>1.2 **Inserir 10 registros na tabela.**
> Insert script
```sql=
--tabela de alunos
Insert Into Tb_Filme (nm_filme, id_genero, vl_avaliacao, bt_disponivel, dt_lancamento)
Values('Amor Com Data Marcada', 2, 10.5, TRUE, '2020-10-28'),
('Seis Vezes Confusão', 8, 9.7, TRUE, '2019-08-16'),
('A Cinco Passos De Você', 3, 10.9, TRUE, '2020-07-05'),
('The Perfect Date', 2, 10.5, TRUE, '2019-04-12'),
('Elite', 6, 10.2, TRUE, '2018-10-05'),
('Na Mesma Onda', 3, 7.9, TRUE, '2021-03-27'),
('Amnésia', 4, 8.2, TRUE, '2015-03-16'),
('Meu Amigo ToToro', 5, 7.7, TRUE, '1988-04-16'),
('Dumplin', 2, 9.9, TRUE, '2015-07-15'),
('Legacies', 9, 10.9, TRUE, '2018-10-25');
```
> 2.1 **Alterar 2 registros da tabela.**
>Insert script
```sql=
Update Tb_Filme
Set Nm_Filme = "Barraca do Beijo"
Where Id_filme = 3;
```
>2.2 **Alterar 2 registros da tabela.**
>Insert script
```sql=
Update Tb_Filme
Set Dt_lancamento = "2021-01-29"
Where Id_filme = 6;
```
>3.1 **Remover 2 registros da tabela.**
>Insert script
```sql=
Delete from Tb_Filme
Where Id_genero = 8;
```
> 3.2 **Remover 2 registros da tabela.**
>Insert script
```sql=
Delete from Tb_Filme
Where Id_filme = 9;
```
> 4. **Consultar todos os filmes com gênero igual a ‘Ação’.**
> Select script
```sql=
SELECT *
FROM Tb_Filme F
INNER JOIN Tb_Genero G
ON F.Id_Genero = G.Id_Genero
WHERE G.ds_genero = 'Ação';
```
> 5. **Consultar todos os filmes que possuam o nome e gênero contendo a letra ‘a’.**
> Select script
```sql=
SELECT *
FROM Tb_Filme F
INNER JOIN Tb_Genero G
ON F.Id_Genero = G.Id_Genero
WHERE F.Nm_filme like '%a%'
ANd G.Ds_Genero like '%a%'
;
```
> 6. **Consultar todos os filmes que estejam disponíveis e com avaliação maior que 8.**
> Select script
```sql=
SELECT *
FROM Tb_Filme F
INNER JOIN Tb_Genero G
ON F.Id_Genero = G.Id_Genero
Where F.vl_avaliacao >8
And F.Bt_disponivel = TRUE
;
```
> 7. **Consultar todos os filmes que foram lançados entre 2010 e 2020 com nome de filme menor que 10 caracteres.**
> Select script
```sql=
SELECT *
FROM Tb_Filme F
INNER JOIN Tb_Genero G
ON F.Id_Genero = G.Id_Genero
WHERE LENGTH(TRIM(F.Nm_Filme)) < 10;
```
> 8.1 **Crie mais 5 consultas personalizadas conforme sua vontade que explore filtros como: >, >=, <, <=, =, <>, LIKE, IN, BETWEEN, Funções de Texto/Número/Data**
> Select script
```sql=
SELECT *
FROM Tb_Filme F
INNER JOIN Tb_Genero G
ON F.Id_Genero = G.Id_Genero
WHERE G.Ds_Genero IN ('Romance', 'Drama')
OR F.vl_avaliacao BETWEEN 6 AND 7;
```
> 8.2 **Crie mais 5 consultas personalizadas conforme sua vontade que explore filtros como: >, >=, <, <=, =, <>, LIKE, IN, BETWEEN, Funções de Texto/Número/Data**
> Select script
```sql=
SELECT *
FROM Tb_Filme F
INNER JOIN Tb_Genero G
ON F.Id_Genero = G.Id_Genero
WHERE month(F.dt_lancamento) >=day(F.dt_lancamento);
```
> 8.3 **Crie mais 5 consultas personalizadas conforme sua vontade que explore filtros como: >, >=, <, <=, =, <>, LIKE, IN, BETWEEN, Funções de Texto/Número/Data**
> Select script
```sql=
SELECT *
FROM Tb_Filme F
INNER JOIN Tb_Genero G
ON F.Id_Genero = G.Id_Genero
WHERE F.nm_filme like 'a%'
or F.nm_filme like 'e%'
or F.nm_filme like 'i%';
```
> 8.4 **Crie mais 5 consultas personalizadas conforme sua vontade que explore filtros como: >, >=, <, <=, =, <>, LIKE, IN, BETWEEN, Funções de Texto/Número/Data**
> Select script
```sql=
SELECT *
FROM Tb_Filme F
INNER JOIN Tb_Genero G
ON F.Id_Genero = G.Id_Genero
WHERE locate ( ' ', F.nm_filme) = 0;
```
> 8.5 **Crie mais 5 consultas personalizadas conforme sua vontade que explore filtros como: >, >=, <, <=, =, <>, LIKE, IN, BETWEEN, Funções de Texto/Número/Data**
> Select script
```sql=
SELECT *
FROM Tb_Filme F
INNER JOIN Tb_Genero G
ON F.Id_Genero = G.Id_Genero
WHERE vl_avaliacao <= 8.5;
```
## Modelagem: Sistema que gerencia informações de alunos de uma escola.
>Create Table
```sql=
--tabela de turma
Create Table Tb_Turma(
Id_Turma Int Primary Key Auto_Increment,
Nm_Turma Varchar(255),
Nr_Ano_Letivo Int,
Nm_Curso Varchar(255)
);
```
>Create Table
```sql=
--tabela de aluno
Create Table Tb_Aluno(
Id_Aluno Int Primary Key Auto_Increment,
Id_Turma Int,
Ds_Sexo Varchar(20),
Nm_Aluno Varchar(255),
Nr_Chamada Int,
Tp_Status Varchar(1),
Foreign Key (Id_Turma) References Tb_Turma (Id_Turma)
);
```
## Desafios:
> 1.1 **Inserir 10 registros na tabela.**
> Insert script
```sql=
--tabela de turma
INSERT INTO Tb_Turma (Nm_Turma, Nr_Ano_Letivo, Nm_Curso)
VALUES ('Info C', 2020, 'Informatica'),
('Info A', 2020, 'Informatica'),
('Ing B', 2019, 'Inglês'),
('Ing F', 2020, 'Inglês'),
('Adm G', 2021, 'Administração'),
('Adm B', 2019, 'Administração'),
('Qmc A', 2021, 'Química'),
('Qmc F', 2020, 'Química'),
('Fnc B', 2021, 'Francês'),
('Fnc C', 2019, 'Francês');
```
> 1.2 **Inserir 10 registros na tabela.**
> Insert script
```sql=
--tabela de alunos
INSERT INTO Tb_Aluno ( Id_Turma, Ds_Sexo, Nm_Aluno, Nr_Chamada, Tp_Status)
VALUES (2, 'Masculino', 'Klaus Mikason', 28, 'f'),
(6, 'Feminino', 'Rebeca Sulavan', 32, 'd'),
(3, 'Masculino', 'Elija Fróes', 13, 'f'),
(5, 'Feminino', 'Kailane Souza', 7, 'f'),
(2, 'Feminino', 'Luana Ferraz', 12, 'f'),
(8, 'Masculino', 'Damon Salvatore', 9, 'd'),
(1, 'Feminino', 'Caroline Gomes', 27, 'f'),
(9, 'Masculino', 'Stefan Fernandes', 34, 'd'),
(7, 'Masculino', 'Marcelos Soares', 20, 'f'),
(10,'Feminino', 'Cami Heios', 30,'f');
```
> 2.1 **Alterar 2 registros da tabela.**
>Insert script
```sql=
Update Tb_Aluno
Set Nr_Chamada = "22"
Where Id_Turma = 3;
```
> 2.2 **Alterar 2 registros da tabela.**
>Insert script
```sql=
Update Tb_Aluno
Set Ds_Sexo = "Masculino"
Where Id_Aluno = 5;
```
> 3.1 **Remover 2 registros da tabela.**
>Insert script
```sql=
Delete From Tb_Aluno
Where Id_Aluno= 7;
```
> 3.2 **Remover 2 registros da tabela.**
>Insert script
```sql=
Delete From Tb_Aluno
Where Id_Aluno= 10;
```
> 4. **Selecionar turma, nome e chamada da tabela alunos filtrando por turma.**
>Insert script
```sql=
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
Where T.Nm_Turma = "Info A";
```
> 5. **Selecionar todos campos da tabela alunos filtrando por nome e turma de forma parcial.**
>Insert script
```sql=
SELECT *
FROM Tb_Aluno A
INNER JOIN Tb_Turma T
ON A.Id_Turma = T.Id_Turma
Where T.Nm_Turma like '%Adm%'
And A.Nm_Aluno like '%i%';
```
> 6. **Selecione ano letivo, turma, nome, chamada, sexo da tabela alunos filtrando os frequentes por turma e ano letivo.**
>Insert script
```sql=
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 T.Nm_Turma = 'Info A'
And T.Nr_Ano_Letivo = 2020;
```
> 7. **Selecione nome, sexo da tabela alunos filtrando por ano, turma e sexo.**
>Insert script
```sql=
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.Nr_Ano_Letivo = 2020
And T.Nm_Turma = "Qmc A"
OR A.Ds_Sexo = "Masculino";
```
> 8.1 **Crie mais 5 consultas personalizadas conforme sua vontade que explore filtros como:>, >=, <, <=, =, <>, LIKE, IN, BETWEEN, Funções de Texto/Número/Data**
> Select script
```sql=
SELECT *
FROM Tb_Aluno A
INNER JOIN Tb_Turma T
ON A.Id_Turma = T.Id_Turma
WHERE Ds_Sexo LIKE '%Feminino%';
```
> 8.2 **Crie mais 5 consultas personalizadas conforme sua vontade que explore filtros como:>, >=, <, <=, =, <>, LIKE, IN, BETWEEN, Funções de Texto/Número/Data**
> Select script
```sql=
SELECT *
FROM Tb_Aluno A
INNER JOIN Tb_Turma T
ON A.Id_Turma = T.Id_Turma
WHERE Nr_Chamada <= 20;
```
> 8.3 **Crie mais 5 consultas personalizadas conforme sua vontade que explore filtros como:>, >=, <, <=, =, <>, LIKE, IN, BETWEEN, Funções de Texto/Número/Data**
> Select script
```sql=
SELECT *
FROM Tb_Aluno A
INNER JOIN Tb_Turma T
ON A.Id_Turma = T.Id_Turma
WHERE Nr_Ano_Letivo >= 2019
ORDER
BY Nr_Ano_Letivo DESC;
```
> 8.4 **Crie mais 5 consultas personalizadas conforme sua vontade que explore filtros como:>, >=, <, <=, =, <>, LIKE, IN, BETWEEN, Funções de Texto/Número/Data**
> Select script
```sql=
SELECT *
FROM Tb_Aluno A
INNER JOIN Tb_Turma T
ON A.Id_Turma = T.Id_Turma
WHERE Nm_Turma like 'a%';
```
> 8.5 **Crie mais 5 consultas personalizadas conforme sua vontade que explore filtros como:>, >=, <, <=, =, <>, LIKE, IN, BETWEEN, Funções de Texto/Número/Data**
> Select script
```sql=
SELECT *
FROM Tb_Aluno A
INNER JOIN Tb_Turma T
ON A.Id_Turma = T.Id_Turma
WHERE Tp_Status IN ( 'f')
OR Nr_Chamada BETWEEN 10 And 15;
```