---
# System prepended metadata

title: 'Session Two: Getting Better'

---

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