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.