Você está na página 1de 2

CEFET Nova Friburgo - Disciplina: Banco de Dados I – Professor: Rafael Guimarães Rodrigues

P1 – Data: 03/09/2021

INSTRUÇÕES: Observe atentamente a base de dados biblioteca_cefet abaixo. Cada livro


pertence a uma editora e pode ter 1 ou mais autores. Cada livro possui 1 ou mais exemplares
que são emprestados a alunos. Cada exemplar possui 3 status possíveis (veja a tabela). Cada
exemplar pode ser emprestado para um aluno, cadastrado por um funcionário e tem uma data
de empréstimo e uma data de devolução.
Para escrever corretamente JOINS é essencial identificar no esquema abaixo, as formas
como as tabelas se relacionam. Fazendo isso, você vai perceber, por exemplo, que cada autor
pertence a um país e que cada aluno pertence a uma cidade.

Questões:
1) Listar o título (apenas um de cada) de livros de MATEMÁTICA e HISTÓRIA
emprestados entre 01/01/2019 e 31/01/2019 e que tenha ao menos um
exemplar ‘EMPRESTADO’ no momento. Proibido usar a cláusula IN, funções
de data e o comando BETWEEN. (3.0)

SELECT DISTINCT l.titulo


FROM livro l JOIN assunto ass ON(l.assunto_id=ass.id) JOIN exemplar e
ON(e.livro_id=l.id) JOIN empréstimo em ON(em.exemplar_id=e.id)
WHERE (ass.nome=’MATEMÁTICA’ OR ass.nome=’HISTÓRIA’) AND
SUBSTRING(data_emprestimo, 1, 7) =’2019-01’.

2) Listar apenas o título (apenas um de cada) de todos os livros emprestados


para alunos que não sejam das cidades ‘NOVA FRIBURGO’, ‘CANTAGALO’ e
‘SUMIDOURO’ no ano de 2019. Proibido usar funções de data, o operador
LIKE e a cláusula IN. (3.0)
SELECT DISTINCT l.titulo
FROM livro l JOIN exemplar e ON(e.livro_id=l.id) JOIN empréstimo em
on(em.exemplar_id=e.id) JOIN aluno a ON(em.aluno_matricula=a.matricula) JOIN cidade c
ON(a.cidade_id=c.id)
WHERE (c.nome<>’NOVA FRIBURGO’ AND c.nome<>’SUMIDOURO’ AND
c.nome<>’CANTAGALO’) AND SUBSTRING(e.data_emprestimo,1,4)=’2019’

3) Listar o nome dos autores (apenas um de cada) que escreveram livros de


FILOSOFIA ou BIOLOGIA no ano 2010 e que foram emprestados para alunos
cujo nome comece com as letras C, J e M e que residam em cidades com
nome composto. Os registros devem ser exibidos em ordem alfabética
decrescente, descartando os 10 primeiros registros e exibindo 5 registros.
Proibido o uso da função SUBSTRING e da Cláusula IN. (4.0)

SELECT DISTINCT au.nome


FROM livro l JOIN exemplar e ON(e.livro_id=l.id) JOIN empréstimo em
on(em.exemplar_id=e.id) JOIN aluno a ON(em.aluno_matricula=a.matricula) JOIN
livro_autor La ON(la.livro_id=l.id) JOIN autor au ON(la.autor_id=a.id) JOIN pais p
ON(a.pais_id=p.id) JOIN cidade c ON(a.cidade_id=c.id) JOIN assunto ass
ON(l.assunto_id=ass.id)
WHERE l.ano_publicacao=’2010’ AND (ass.nome = ’FILOSOFIA’ OR
ass.nome=’BIOLOGIA’) AND (a.nome LIKE ‘C%’ OR a.nome LIKE ‘J%’ OR a.nome
LIKE ‘M%’) AND c.nome LIKE ‘% %’
ORDER BY au.nome DESC LIMIT 10,5

Boa prova!!!

Você também pode gostar