create sequence seq_editora START 1;
create table editora (
cod_editora int not null
default nextval ('seq_editora'),
descricao varchar (30) null,
endereco varchar (30) null,
constraint pk_editora
primary key (cod_editora)
);
create sequence seq_livro START 1;
create table livro (
cod_livro int not null
default nextval ('seq_livro'),
isbn varchar (20) null,
titulo varchar (45) null,
num_edicao int null,
preco float null,
cod_editora int not null,
constraint pk_livro
primary key (cod_livro),
constraint fk_livro_editora
foreign key (cod_editora)
references editora (cod_editora)
);
create sequence seq_autor START 1;
create table autor (
cod_autor int not null primary key
default nextval ('seq_autor'),
nome varchar (45) null,
sexo char (1) null,
data_nascimento date null
);
create table livro_autor (
cod_livro int not null,
cod_autor int not null,
constraint pk_livro_autor
primary key (cod_livro, cod_autor),
constraint fk_livro_autor_livro
foreign key (cod_livro)
references livro (cod_livro),
constraint fk_livro_autor_autor
foreign key (cod_autor)
references autor (cod_autor)
);
insert into editora
(descricao, endereco)
values
('campus', 'rua do timbó'),
('abril', null),
('editora teste', null);
insert into livro
(isbn, titulo, num_edicao, preco, cod_editora)
values
('12345', 'banco de dados', 3, 70.00, 1),
('35790', 'sgbd', 1, 85.00, 2),
('98765', 'redes de computadores', 2, 80.00,2);
insert into autor
(nome, sexo, data_nascimento)
values
('João', 'M', '1970/01/01'),
('Maria', 'F', '1974/05/17'),
('José', 'M', '1977/10/10'),
('Carla', 'F', '1964/12/08');
insert into livro_autor
(cod_livro, cod_autor)
values (1, 1), (1,2), (2, 2), (2,4), (3,3);
--------------------------
--1. Atualizar o endereço da Editora Campus para ‘Av. ACM’
UPDATE EDITORA
SET ENDERECO = 'AV. ACM'
WHERE COD_EDITORA = 1;
--2. Atualizar os preços dos livros em 10%
UPDATE LIVRO
SET PRECO = PRECO * 1.1;
--3. Excluir a ‘Editora Teste’
DELETE FROM EDITORA
WHERE COD_EDITORA = 3;
--4. Apresentar o nome e data de nascimento de todos os autores
SELECT NOME, DATA_NASCIMENTO
FROM AUTOR;
--5. Apresentar o nome e a data de nascimento dos autores por ordem de nome.
-- ASCENDENTE POR NOME
SELECT NOME, DATA_NASCIMENTO
FROM AUTOR
ORDER BY NOME;
-- DESCEDENTE POR NOME
SELECT NOME, DATA_NASCIMENTO
FROM AUTOR
ORDER BY NOME DESC;
--6. Apresentar o nome e a data de nascimento dos autores do sexo feminino
--ordenados pelo nome.
SELECT NOME, DATA_NASCIMENTO
FROM AUTOR
WHERE SEXO = 'F'
ORDER BY NOME;
--7. Apresentar o nome das editoras que não tem o endereço cadastrado.
SELECT DESCRICAO
FROM EDITORA
WHERE ENDERECO IS NULL;
-- O INVERSO, POSSUI ENDEREÇO
SELECT DESCRICAO
FROM EDITORA
WHERE ENDERECO IS NOT NULL;
--8. Apresentar o título do livro e o nome da sua editora
SELECT L.TITULO, E.DESCRICAO
FROM LIVRO AS L, EDITORA AS E
WHERE L.COD_EDITORA = E.COD_EDITORA
SELECT E.DESCRICAO, L.TITULO
FROM LIVRO AS L INNER JOIN EDITORA AS E
ON (L.COD_EDITORA = E.COD_EDITORA)
INSERT INTO EDITORA (COD_EDITORA, DESCRICAO)
VALUES (3, 'EDITORA TESTE');
-- RECUPERANDO EDITORA QUE NAO TEM LIVRO
SELECT E.DESCRICAO, L.TITULO
FROM LIVRO AS L RIGHT JOIN EDITORA AS E
ON (L.COD_EDITORA = E.COD_EDITORA);
--9. Apresentar o título do livro e o nome da sua editora. Caso haja alguma
--editora sem livro publicado, informar os dados da editora com valores
--nulos para os livros.
SELECT E.DESCRICAO, L.TITULO
FROM LIVRO AS L RIGHT JOIN EDITORA AS E
ON (L.COD_EDITORA = E.COD_EDITORA);
--10. Apresentar o título do livro e o nome dos seus autores
SELECT L.TITULO, A.NOME
FROM LIVRO AS L INNER JOIN LIVRO_AUTOR AS LA
ON (L.COD_LIVRO = LA.COD_LIVRO)
INNER JOIN AUTOR AS A
ON (LA.COD_AUTOR = A.COD_AUTOR)
--11. Apresentar o nome da editora e o nome dos autores que já publicaram
--algum livro na editora.
SELECT E.DESCRICAO, A.NOME
FROM EDITORA AS E INNER JOIN LIVRO AS L
ON (E.COD_EDITORA = L.COD_EDITORA)
INNER JOIN LIVRO_AUTOR AS LA
ON (L.COD_LIVRO = LA.COD_LIVRO)
INNER JOIN AUTOR AS A
ON (LA.COD_AUTOR = A.COD_AUTOR)
INSERT INTO LIVRO_AUTOR VALUES (3,4);
SELECT DISTINCT E.DESCRICAO, A.NOME
FROM EDITORA AS E INNER JOIN LIVRO AS L
ON (E.COD_EDITORA = L.COD_EDITORA)
INNER JOIN LIVRO_AUTOR AS LA
ON (L.COD_LIVRO = LA.COD_LIVRO)
INNER JOIN AUTOR AS A
ON (LA.COD_AUTOR = A.COD_AUTOR)
12. Apresentar o título dos livros que começam a string ‘Banco’.
13. Apresentar o título dos livros que tem a string ‘do’.
14. Apresentar o nome de cada livro e seu preço reajustado em 5%
15. Apresentar o nome dos autores que nasceram no mês de outubro
16. Apresentar o número de livros do acervo
17. Apresentar o número de autores do livro ‘Banco de Dados’
18. Apresentar o somatório dos preços dos livros do acervo
19. Apresentar a média de preços dos livros da editora Campus
20. Apresentar o maior preço dentre todos os livros do acervo.
21. Apresentar a data de nascimento do autor mais velho
22. Apresentar o número de livros por editora
23. Apresentar o somatório e média de preço dos livros por editora
24. Apresentar o número de autores por livro, mas apenas dos livros que
possuem mais de 1 autor
25. Apresentar a média de preços geral por editora, mas apenas as editoras que
possuem média maior que R$ 80,00
26. Apresentar o nome dos autores que não são autores do livro Banco de
Dados
27. Apresentar a quantidade de livros da editora Campus e Abril em colunas
diferentes.