Você está na página 1de 2

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

P1 – Data: 19/03/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 apenas o nome dos alunos(apenas um de cada) das cidades
‘SUMIDOURO’, ‘FRIBURGO’ e ‘CANTAGALO’ nascidos no ano 2000 e que
tenham tomado empréstimo de livros de PROGRAMAÇÃO e REDES. Proibido
usar funções de data,o operador LIKE e a cláusula IN. (3.0)
SELECT DISTINCT a.nome
FROM aluno a JOIN empréstimo e ON(e.aluno_matricula = a.matricula)
JOIN exemplar ex ON(e.exemplar_id = e.id)
JOIN livro l ON(ex.livro_id=l.id)
JOIN assunto ass ON(l.assunto_id=ass.id)
JOIN cidade c ON(a.cidade_id=c.id)
WHERE (c.nome=’SUMIDOURO’ OR c.nome=’FRIBURGO’ OR c.nome=’CANTAGALO’)
AND SUBSTRING(a.data_nascimento,1,4)=’2000’
AND (ass.nome=’PROGRAMAÇÃO’ OR ass.nome=’REDES’)

2) Listar o título do livro e o nome da editora para todos os livros de autores cujo
nome comece com as letras C ou D emprestados para alunos de cidades com
nome composto. Proibido usar a cláusula IN e o operador SUBSTRING. (3.0)
SELECT l.titulo, ed.nome as editora
FROM livro l JOIN editora ed ON(l.editora_id=ed.id)
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 cidade c ON(a.cidade_id=c.id)
WHERE(au.nome LIKE ‘C%’ OR au.nome LIKE ‘D%’)
AND c.nome LIKE ‘% %’

3) Listar o nome dos livros de PROGRAMAÇÃO ou ENGENHARIA DE


SOFTWAREpublicados no ano 2000 e que se encontram emprestados para
alunos cujo nome comece com as letras A, D ou M. Os registros devem ser
exibidos em ordem alfabética de assunto, descartando os 10 primeiros
registros e exibindo 10 registros. Proibido usar like e funções de data. Uso
obrigatória da cláusula IN p/ os casos em que for pertinente. (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 assunto ass ON(l.assunto_id=ass.id)
WHERE l.ano_publicacao=’2000’
AND ass.nome IN(‘PROGRAMAÇÃO’,ENGENHARIA DE SOFTWARE’)
AND e.status=’EMPRESTADO’
AND SUBSTRING SUBSTRING(a.nome,1,1) IN(‘A’,’D’,’M’)
ORDER BY ass.nome ASC
LIMIT 10,10

4) Listar, sem repetições, onome dos funcionários que emprestaram livros em


agosto de 2000. Proibido usar funções de data e substring. (1.0)

SELECT DISTINCT f.nome


FROM empréstimo em JOIN funcionário f ON(em.funcionario_id=f.id)
WHERE em.data_emprestimo LIKE ‘2000-08%’

Boa prova!!!

Você também pode gostar