# 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; ````