# Session Two: Getting Better
Mateus Eustáquio
[toc]
### Exercicio 1
Tabela Filme
````sql
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_genero (
id_genero int primary key auto_increment,
ds_genero varchar (255),
bt_ativo bool
);
CREATE TABLE tb_filme_genero (
id_filme int,
id_genero int,
foreign key (id_filme) references tb_filme (id_filme) on delete cascade,
foreign key (id_genero) references tb_genero (id_genero) on delete cascade
);
INSERT INTO tb_filme (nm_filme, dt_lancamento, vl_avaliacao, bt_disponivel)
VALUES ("O Senhor dos Anéis A Sociedade do Anel", '2002-01-01', 4.8, true),
("Harry Potter e a Pedra Filosofal", '2001-11-23', 4.8, true),
("Percy Jackson", '2010-02-12', 3.0, true),
("Para Todos os Garotos que Já Amei", '2018-08-17', 4.9, true),
("Gente Grande", '2010-09-24', 4.5, true);
INSERT INTO tb_genero (ds_genero, bt_ativo)
VALUES ("Aventura", true),
("Ação", true),
("Drama", true),
("Romance", true),
("Comédia", true);
INSERT INTO tb_filme_genero (id_filme, id_genero)
VALUES (1, 2),
(1, 1),
(2, 1),
(2, 2),
(4, 3),
(4, 4),
(4, 5),
(3, 1),
(3, 2),
(5, 5);
UPDATE tb_filme
SET nm_filme = " Dragon Ball"
WHERE id_filme = 1;
UPDATE tb_genero
SET ds_genero = "Anime"
WHERE id_genero = 1;
DELETE FROM tb_filme
WHERE id_filme = 5;
DELETE FROM tb_genero
WHERE id_genero = 4;
````
Selec
````sql
SELECT
f.nm_filme,
g.ds_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;
SELECT
f.id_filme,
g.id_genero,
f.nm_filme,
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
WHERE f.vl_avaliacao > 4
ORDER BY f.nm_filme;
SELECT
f.nm_filme,
f.vl_avaliacao,
f.bt_disponivel,
g.ds_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.bt_disponivel = true
and g.ds_genero = 'Ação'
ORDER BY f.vl_avaliacao;
SELECT
f.nm_filme,
f.vl_avaliacao,
f.dt_lancamento,
f.bt_disponivel,
g.ds_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.ds_genero = 'Romance'
OR g.ds_genero = 'Comédia';
SELECT
f.nm_filme,
f.vl_avaliacao
FROM tb_filme_genero fg
INNER JOIN tb_filme f
ON f.id_filme = fg.id_filme
WHERE f.vl_avaliacao >= 3
ORDER BY f.nm_filme DESC;
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
WHERE year (f.dt_lancamento) = 2018
AND f.vl_avaliacao >= 4
ORDER BY f.nm_filme ;
SELECT
f.nm_filme,
f.vl_avaliacao,
f.dt_lancamento,
g.ds_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_filme
where f.nm_filme like 'A%'
or g.ds_genero = 'Comédia'
ORDER BY f.nm_filme asc;
SELECT
f.nm_filme,
f.vl_avaliacao,
f.dt_lancamento,
g.ds_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_filme
where f.vl_avaliacao <= 3
or g.ds_genero = 'Ação'
or year (f.dt_lancamento) >= 2002
ORDER BY f.nm_filme;
SELECT
g.ds_genero,
g.bt_ativo,
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_filme
WHERE f.nm_filme LIKE 'G%'
or f.nm_filme LIKE 'P%'
ORDER BY f.vl_avaliacao;
SELECT
f.nm_filme,
g.ds_genero,
g.bt_ativo,
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_filme
WHERE f.nm_filme LIKE 'G%'
or f.nm_filme LIKE 'P%'
or g.ds_genero = 'Ação'
AND g.bt_ativo = true
ORDER BY f.vl_avaliacao DESC;
````