Exercício: Consultas com sub-consultas em SQL
Objetivo
O objetivo deste exercício é praticar a formulação de consultas em SQL, usando operações relacionadas a sub-consultas.
Preparação
- Conecte-se ao servidor linux03, que já possui o HSQLDB instalado.
- Baixe o código SQL para criação do banco de dados: cerveja.sql
- Execute a interface gráfica de gerenciamento do HSQLDB:
java -cp /opt/hsqldb/lib/hsqldb.jar org.hsqldb.util.DatabaseManagerSwing \ -url jdbc:hsqldb:mem:meudb -driver org.hsqldb.jdbcDriver
- Execute o código cerveja.sql no HSQLDB para criação do banco de dados.
Exercícios
- Expresse as seguintes consultas em SQL:
- Encontrar nomes de cervejas que nenhuma pessoa bebe.
- Encontrar pessoas que bebem cerveja mas não freqüentam bares.
- Encontrar cervejas vendidas abaixo do preço médio.
- Obter, para cada bar, o total de pessoas (clientes) que o freqüentam.
- Encontrar bares que vendem pelo menos uma cerveja que 'Fulano' bebe.
- Encontrar as cervejas vendidas pelo mais baixo preço.
- Encontrar nomes de fabricantes de cada cerveja que 'Fulano' bebe.
- Encontrar cervejas que são o único produto de seu fabricante.
- Encontrar bares que sao frequentados por Fulano OU que vendem cerveja a menos de R$ 2,00.
- Encontrar pessoas e cervejas tal que: a pessoa bebe a cerveja E a pessoa freqüenta um bar que vende a cerveja.
- Encontrar cervejas do fabricante 'Ambev' que NÃO são vendidas no bar 'Bar BQ'.
- Por que a consulta abaixo provoca um erro? Como corrigi-lo?
SELECT pessoa FROM frequenta WHERE bar IN (SELECT * FROM vende)
- O que há de errado com a consulta abaixo?
(select * from cerveja where fabricante = 'Ambev') EXCEPT (select * from vende where bar='Bar BQ')
Material de apoio
- SQL Tutorial
Tutorial SQL, com demonstração on-line e guia de referência.