Clodis Boscarioli RESOLUÇÃO DA LISTA 1 DE SQL

Propaganda
BANCO DE DADOS I
Professor: Clodis Boscarioli
RESOLUÇÃO DA LISTA 1 DE SQL
- Dado o modelo abaixo, resolva as consultas em SQL:
empregado(nome_empregado, rua, cidade)
trabalha (nome_empregado, nome_companhia, salario)
companhia (nome_companhia, cidade)
gerente (nome_empregado, nome_gerente)
1-) Encontre os nomes de todos os empregados que trabalham para a empresa XYZ
Ltda.
SELECT trabalha.nome_empregado
FROM trabalha
WHERE trabalha.nome_companhia = ‘XYZ Ltda.’;
2-) Encontre todos os nomes das cidades dos empregados que trabalham para a empresa
XYZ Ltda.
SELECT cidade
FROM empregado INNER JOIN trabalha ON
empregado.nome_empregado = trabalha.nome_empregado
WHERE trabalha.nome_companhia = ‘XYZ Ltda.’;
3-) Encontre os nomes, endereço e cidade de residência de todos os empregados da
XYZ Ltda. que ganham mais de dez mil reais.
SELECT empregado.nome_empregado, rua, cidade
FROM empregado INNER JOIN trabalha ON
empregado.nome_empregado = trabalha.nome_empregado
WHERE trabalha.nome_companhia = ‘XYZ Ltda.’ AND trabalha.salario >10000;
4-) Encontre os nomes de todos os empregados, no banco de dados, que moram na
mesma cidade da companhia em que trabalham.
SELECT empregado.nome_empregado
FROM empregado INNER JOIN
(companhia INNER JOIN trabalha ON
companhia.nome_companhia = trabalha.nome_companhia) ON
(empregado.nome_empregado = trabalha.nome_empregado) AND
(empregado.cidade = companhia.cidade);
5-) Encontre os nomes de todos os empregados que moram na mesma cidade e na
mesma rua de seu gerente.
SELECT T1.nome_empregado
FROM empregado T1, empregado T2, gerente
WHERE T1.nome_empregado = gerente.nome_empregado
AND T2.nome_empregado = gerente.nome_gerente
AND T1.rua = T2.rua
AND T1.cidade = T2.cidade;
ou:
SELECT T1.nome_empregado
FROM empregado AS ef INNER JOIN gerente AS g ON ef.nome_empregado =
g.nome_empregado INNER JOIN empregado AS T2 ON eg.nome_empregado =
g.nome_gerente
WHERE T1.rua = T2.rua AND T1.cidade = T2.cidade;
6-) Encontre os nomes de todos os empregados, no banco de dados, que não trabalham
para a empresa XYZ Ltda.
SELECT nome_empregado
FROM empregado
WHERE NOT EXISTS (SELECT trabalha.nome_empregado FROM trabalha
WHERE
empregado.nome_empregado
=
trabalha.nome_empregado
AND
trabalha.nome_companhia = 'XYZ Ltda');
7-) Encontre os nomes de todos os empregados que ganham mais que os empregados da
Byte Corporation.
SELECT nome_empregado
FROM trabalha
WHERE trabalha.nome_companhia <> ‘Byte Corporation’ AND nome_empregado
NOT IN ( SELECT DISTINCT trabalha.nome_empregado
FROM trabalha, trabalha AS t
WHERE t.nome_companhia = ‘Byte Corporation’
AND trabalha.salario ≤ t.salario);
ou:
SELECT T2.nome_empregado
FROM trabalha T1
WHERE T1.nome_companhia <> ‘Byte Corporation’
AND EXISTS
(SELECT * FROM trabalha T2
WHERE T2.nome_companhia = ‘Byte Corporation’
AND T1.salario > T2.salario)
8-) Assuma que todas as companhias possam estar localizadas em diversas cidades.
Encontre todas as companhias localizadas em todas as cidades onde haja unidades da
Small Bank Corporation.
SELECT DISTINCT c2.nome_companhia
FROM companhia c2
WHERE c2.nome_companhia <> ‘Small Bank Corporation” AND NOT EXISTS
( (SELECT cidade FROM companhia WHERE nome_companhia= ‘Small Bank
Corporation’) EXCEPT (SELECT cidade FROM companhia WHERE
nome_companhia=c2.nome_companhia ));
Download