Você está na página 1de 7

CREATE TABLE FORNECEDORES

(For_Codigo SMALLINT,
For_Nome VARCHAR(50),
CONSTRAINT CP_FORNECEDOR PRIMARY KEY (For_Codigo));

CREATE TABLE NOTAS_COMPRAS


(Nfc_Num INTEGER,
For_Codigo SMALLINT NOT NULL,
Nfc_DtEmissao Date,
CONSTRAINT CP1_NFC PRIMARY KEY (For_Codigo, Nfc_Num),
CONSTRAINT CE1_NFC FOREIGN KEY (For_Codigo) REFERENCES FORNECEDORES);

CREATE TABLE ATORES_PRINCIPAIS


(Aut_Codigo SMALLINT PRIMARY KEY,
Aut_Nome VARCHAR(50));

CREATE TABLE GENERO


(Gen_Codigo SMALLINT PRIMARY KEY,
Gen_Nome VARCHAR(50));

CREATE TABLE DIRETORES


(Dir_Codigo SMALLINT PRIMARY KEY,
Dir_Nome VARCHAR(50));

CREATE TABLE FILMES


(Fil_Codigo SMALLINT PRIMARY KEY,
Fil_Nome VARCHAR(50),
Gen_Codigo SMALLINT NOT NULL,
Aut_Codigo SMALLINT NOT NULL,
Dir_Codigo SMALLINT NOT NULL,
CONSTRAINT CE1_FILMES FOREIGN KEY (Gen_Codigo) REFERENCES GENERO,
CONSTRAINT CE2_FILMES FOREIGN KEY (Aut_Codigo) REFERENCES ATORES_PRINCIPAIS,
CONSTRAINT CE3_FILMES FOREIGN KEY (Dir_Codigo) REFERENCES DIRETORES);

CREATE TABLE FITAS


(Fit_Codigo SMALLINT PRIMARY KEY,
Fit_DL CHAR(1) CHECK (Fit_DL = 'D' OR Fit_DL = 'L'),
Fit_Tipo CHAR(3) CHECK (Fit_Tipo = 'DVD' OR Fit_Tipo = 'VHS'),
Fil_Codigo SMALLINT NOT NULL,
For_Codigo SMALLINT NOT NULL,
Nfc_Num INTEGER NOT NULL,
CONSTRAINT CE1_FITAS FOREIGN KEY (Fil_Codigo) REFERENCES FILMES,
CONSTRAINT CE2_FITAS FOREIGN KEY (For_Codigo, Nfc_Num) REFERENCES NOTAS_COMPRAS);

CREATE TABLE CLIENTES


(Cli_Codigo SMALLINT PRIMARY KEY,
Cli_Nome VARCHAR(50));

CREATE TABLE REQUISICOES


(Req_Num INTEGER PRIMARY KEY,
Req_DtEmissao DATE,
Cli_Codigo SMALLINT NOT NULL,
CONSTRAINT CE1_REQ FOREIGN KEY (Cli_Codigo) REFERENCES CLIENTES);

CREATE TABLE PROTO_ENT


(Pro_Codigo INTEGER PRIMARY KEY,
Pro_DtEntrega DATE NOT NULL,
Pro_Hora TIME);

CREATE TABLE ITENS_REQ


(Req_Num INTEGER,
Fit_Codigo SMALLINT,
Pro_Codigo INTEGER,
Irq_Valor DECIMAL(8,2),
CONSTRAINT CP_ITENS_REQ PRIMARY KEY (Req_Num, Fit_Codigo),
CONSTRAINT CE1_ITENS_REQ FOREIGN KEY (Req_Num) REFERENCES REQUISICOES,
CONSTRAINT CE2_ITENS_REQ FOREIGN KEY (Fit_Codigo) REFERENCES FITAS);

INSERT INTO fornecedores (for_codigo, for_nome) values (1, 'Sonopress');


INSERT INTO fornecedores (for_codigo, for_nome) values (2, 'Videolar');
INSERT INTO fornecedores (for_codigo, for_nome) values (3, 'Microservice');
INSERT INTO fornecedores (for_codigo, for_nome) values (4, 'NPI - Núcleo de
Produção Integrado');
INSERT INTO fornecedores (for_codigo, for_nome) values (5, 'Mostro Discos');
INSERT INTO fornecedores (for_codigo, for_nome) values (6, 'Macro');
INSERT INTO fornecedores (for_codigo, for_nome) values (7, 'Carrefour');
INSERT INTO fornecedores (for_codigo, for_nome) values (8, 'Wall-mart');

insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (1, 1,


'2006/01/15');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (1, 2,
'2006/02/15');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (1, 3,
'2006/03/15');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (1, 4,
'2006/04/15');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (1, 5,
'2006/05/15');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (2, 1,
'2006/01/18');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (2, 2,
'2006/02/18');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (2, 3,
'2006/03/18');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (2, 4,
'2006/04/18');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (2, 5,
'2006/05/18');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (3, 1,
'2006/01/21');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (3, 2,
'2006/02/21');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (3, 3,
'2006/03/21');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (3, 4,
'2006/04/21');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (3, 5,
'2006/05/21');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (4, 1,
'2006/01/24');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (4, 2,
'2006/02/24');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (4, 3,
'2006/03/24');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (4, 4,
'2006/04/24');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (4, 5,
'2006/05/24');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (5, 1,
'2006/01/27');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (5, 2,
'2006/02/27');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (5, 3,
'2006/03/27');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (5, 4,
'2006/04/27');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (5, 5,
'2006/05/27');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (6, 1,
'2006/06/27');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (6, 2,
'2006/07/27');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (6, 3,
'2006/08/27');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (6, 4,
'2006/09/27');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (6, 5,
'2006/10/27');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (7, 1,
'2006/11/27');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (7, 2,
'2006/12/27');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (7, 3,
'2006/08/02');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (7, 4,
'2006/08/13');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (7, 5,
'2006/08/27');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (8, 1,
'2006/10/27');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (8, 2,
'2006/11/16');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (8, 3,
'2006/11/27');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (8, 4,
'2006/12/05');
insert into notas_compras (for_codigo, nfc_num, nfc_dtemissao) values (8, 5,
'2006/12/10');

insert into diretores (dir_codigo, dir_nome) values (1, 'Quentin Tarantino');


insert into diretores (dir_codigo, dir_nome) values (2, 'Oliver Stone');
insert into diretores (dir_codigo, dir_nome) values (3, 'Robert Rodriguez');
insert into diretores (dir_codigo, dir_nome) values (4, 'Francis Ford Coppola');
insert into diretores (dir_codigo, dir_nome) values (5, 'Spike Jonze');
insert into diretores (dir_codigo, dir_nome) values (6, 'Martin Scorsese');

insert into genero (gen_codigo, gen_nome) values (1, 'drama');


insert into genero (gen_codigo, gen_nome) values (2, 'ação');

insert into atores_principais (aut_codigo, aut_nome) values (1, 'John Travolta');


insert into atores_principais (aut_codigo, aut_nome) values (2, 'Pam Grier');
insert into atores_principais (aut_codigo, aut_nome) values (3, 'Uma Thurman');
insert into atores_principais (aut_codigo, aut_nome) values (4, 'Johnny Depp');

insert into filmes (fil_codigo, fil_nome, gen_codigo, aut_codigo, dir_codigo)


values (1, 'Pulp Fiction', 1, 1, 1);
insert into filmes (fil_codigo, fil_nome, gen_codigo, aut_codigo, dir_codigo)
values (2, 'Jackie Brown', 1, 2, 1);
insert into filmes (fil_codigo, fil_nome, gen_codigo, aut_codigo, dir_codigo)
values (3, 'Kill Bill: vol. 1', 2, 3, 3);
insert into filmes (fil_codigo, fil_nome, gen_codigo, aut_codigo, dir_codigo)
values (4, 'Kill Bill: vol. 2', 2, 3, 4);
insert into filmes (fil_codigo, fil_nome, gen_codigo, aut_codigo, dir_codigo)
values (5, 'Platoon', 2, 4, 2);

insert into fitas (fit_codigo, fit_dl, fit_tipo, fil_codigo, for_codigo, nfc_num)


values (1, 'D', 'DVD', 1, 1, 1);
insert into fitas (fit_codigo, fit_dl, fit_tipo, fil_codigo, for_codigo, nfc_num)
values (2, 'D', 'DVD', 1, 1, 1);
insert into fitas (fit_codigo, fit_dl, fit_tipo, fil_codigo, for_codigo, nfc_num)
values (3, 'D', 'VHS', 1, 1, 1);
insert into fitas (fit_codigo, fit_dl, fit_tipo, fil_codigo, for_codigo, nfc_num)
values (4, 'D', 'DVD', 2, 2, 1);
insert into fitas (fit_codigo, fit_dl, fit_tipo, fil_codigo, for_codigo, nfc_num)
values (5, 'D', 'DVD', 2, 2, 1);
insert into fitas (fit_codigo, fit_dl, fit_tipo, fil_codigo, for_codigo, nfc_num)
values (6, 'D', 'VHS', 2, 2, 1);
insert into fitas (fit_codigo, fit_dl, fit_tipo, fil_codigo, for_codigo, nfc_num)
values (7, 'D', 'DVD', 3, 3, 1);
insert into fitas (fit_codigo, fit_dl, fit_tipo, fil_codigo, for_codigo, nfc_num)
values (8, 'D', 'DVD', 3, 3, 1);
insert into fitas (fit_codigo, fit_dl, fit_tipo, fil_codigo, for_codigo, nfc_num)
values (9, 'D', 'VHS', 3, 3, 1);
insert into fitas (fit_codigo, fit_dl, fit_tipo, fil_codigo, for_codigo, nfc_num)
values (10, 'D', 'DVD', 4, 4, 1);
insert into fitas (fit_codigo, fit_dl, fit_tipo, fil_codigo, for_codigo, nfc_num)
values (11, 'D', 'DVD', 4, 4, 1);
insert into fitas (fit_codigo, fit_dl, fit_tipo, fil_codigo, for_codigo, nfc_num)
values (12, 'D', 'VHS', 4, 4, 1);
insert into fitas (fit_codigo, fit_dl, fit_tipo, fil_codigo, for_codigo, nfc_num)
values (13, 'D', 'DVD', 5, 5, 1);
insert into fitas (fit_codigo, fit_dl, fit_tipo, fil_codigo, for_codigo, nfc_num)
values (14, 'D', 'DVD', 5, 5, 1);
insert into fitas (fit_codigo, fit_dl, fit_tipo, fil_codigo, for_codigo, nfc_num)
values (15, 'D', 'VHS', 5, 5, 1);

insert into clientes (cli_codigo, cli_nome) values (1, 'Roberto Ribeiro');


insert into clientes (cli_codigo, cli_nome) values (2, 'Fulano');
insert into clientes (cli_codigo, cli_nome) values (3, 'Beltrano');
insert into clientes (cli_codigo, cli_nome) values (4, 'Ciclano');
insert into clientes (cli_codigo, cli_nome) values (5, 'Caloteiro');

insert into requisicoes (req_num, req_dtemissao, cli_codigo) values (1,


'2007/01/10', 1);
insert into requisicoes (req_num, req_dtemissao, cli_codigo) values (2,
'2007/01/15', 2);
insert into requisicoes (req_num, req_dtemissao, cli_codigo) values (3,
'2007/04/10', 3);
insert into requisicoes (req_num, req_dtemissao, cli_codigo) values (4,
'2007/02/10', 4);
insert into requisicoes (req_num, req_dtemissao, cli_codigo) values (5,
'2007/03/10', 4);

insert into itens_req (req_num, fit_codigo, irq_valor) values (1, 1, 2);


insert into itens_req (req_num, fit_codigo, irq_valor) values (1, 7, 2);
insert into itens_req (req_num, fit_codigo, irq_valor) values (1, 10, 2);
insert into itens_req (req_num, fit_codigo, irq_valor) values (2, 2, 2);
insert into itens_req (req_num, fit_codigo, irq_valor) values (3, 3, 1);
insert into itens_req (req_num, fit_codigo, irq_valor) values (4, 1, 2);
insert into itens_req (req_num, fit_codigo, irq_valor) values (4, 7, 2);
insert into itens_req (req_num, fit_codigo, irq_valor) values (4, 10, 2);
insert into itens_req (req_num, fit_codigo, irq_valor) values (4, 13, 2);
insert into itens_req (req_num, fit_codigo, irq_valor) values (4, 4, 2);
insert into itens_req (req_num, fit_codigo, irq_valor) values (5, 3, 1);

select fit_codigo, fit_tipo, nfc_num, fil_nome


from filmes A, fitas B
where A.fil_codigo = B.fil_codigo;

select fit_codigo, fit_tipo, nfc_num, fil_nome, gen_nome


from filmes A inner join fitas B on A.fil_codigo = B.fil_codigo
inner join genero G on A.gen_codigo = G.gen_codigo

select cli_nome, sum(irq_valor) valor, count (*) qnt


from clientes C inner join requisicoes R on C.cli_codigo = R.cli_codigo
inner join itens_req I on R.req_num = I.req_num
inner join fitas FT on FT.fit_codigo = I.fit_codigo
inner join filmes FL on FL.fil_codigo = FT.fil_codigo
where req_dtemissao >= '2007/01/10' and req_dtemissao <= '2022/01/10'
group by cli_nome

select cli_nome, req_num, req_dtemissao


from clientes C inner join requisicoes R on C.cli_codigo = R.cli_codigo

select irq_valor, fil_nome, cli_nome


from filmes FL inner join fitas FT on FL.fil_codigo = FT.fil_codigo
inner join itens_req I on FT.fit_codigo = I.fit_codigo
inner join requisicoes R on I.req_num = R.req_num
inner join clientes C on C.cli_codigo = R.cli_codigo

select req_num, fit_codigo, sum(irq_valor) as valores_totais_locacao, count(*)


from itens_req
group by req_num, fit_codigo;

select fit_tipo, count(fit_codigo) as qnt_tipos_fitas


from fitas where fitas.fit_tipo = 'DVD' or fitas.fit_tipo = 'VHS'
group by fit_tipo;

select fil_codigo, fil_nome, aut_nome, dir_nome


from filmes F inner join atores_principais A on A.aut_codigo = F.aut_codigo
inner join diretores D on D.dir_codigo = F.dir_codigo
order by fil_nome asc;

select fil_nome, fit_tipo, count(fit_codigo) as numero_copias


from fitas FT inner join filmes FL on FL.fil_codigo = FT.fil_codigo
where FT.fit_tipo = 'DVD' or FT.fit_tipo = 'VHS'
group by fil_nome, fit_tipo;

select count(fil_codigo) as quantidade_filmes


from filmes;

select count (fit_codigo) as quantidade_fitas


from fitas;

select cli_nome, sum(irq_valor) as valor_total_gasto


from clientes c inner join requisicoes R on C.cli_codigo = R.cli_codigo
inner join itens_req I on R.req_num = I.req_num
group by cli_nome;

select fil_nome, count(req_num) as quantidade_filmes_locados


from filmes FL inner join fitas FT on FL.fil_codigo = FT.fil_codigo
inner join itens_req I on FT.fit_codigo = I.fit_codigo
group by fil_nome
order by count(req_num) desc

select fil_nome, count(req_num) as quantidade_locacoes


from filmes Fl inner join fitas FT on FL.fil_codigo = FT.fil_codigo
inner join itens_req I on FT.fit_codigo = I.fit_codigo
where FT.fit_tipo = 'VHS'
group by fil_nome
order by count(req_num) desc

select cli_nome, count(fit_codigo) as quantidade_copias


from clientes C inner join requisicoes R on C.cli_codigo = R.cli_codigo
inner join itens_req I on R.req_num = I.req_num
group by cli_nome
order by count(fit_codigo) desc

select cli_nome, count(fit_codigo)


from clientes C inner join requisicoes R on C.cli_codigo = R.cli_codigo
inner join itens_req I on R.req_num = I.req_num
where R.req_dtemissao >= '2006/02/01' and R.req_dtemissao <= '2006/02/28'
group by cli_nome
having count(fit_codigo) > 4

select cli_nome
from clientes C inner join requisicoes R on C.cli_codigo = R.cli_codigo
where R.req_dtemissao < '2007/02/01' or R.req_dtemissao > '2007/02/28'
group by cli_nome
order by cli_nome asc

select fil_nome
from filmes
where filmes.dir_codigo is null

select fil_nome, dir_nome, aut_nome


from filmes FL inner join diretores D on D.dir_codigo = FL.dir_codigo
inner join atores_principais AP on AP.aut_codigo = FL.aut_codigo
select for_nome
from fornecedores F inner join notas_compras NC on F.for_codigo = NC.for_codigo
where NC.nfc_dtemissao >= '2006/01/01' and NC.nfc_dtemissao <= '2006/01/31'

create view vw_clientes as


select cli_nome, count(fit_codigo) as quantidade_fimes
from clientes C inner join requisicoes R on C.cli_codigo = R.cli_codigo
inner join itens_req I on R.req_num = I.req_num
where R.req_dtemissao >= '2022/06/07' and R.req_dtemissao < '2022/06/27'
group by cli_nome
order by count(fit_codigo) desc
limit 10

Você também pode gostar