Esquema Carros automoveis (codigo, ano, fabricante, modelo, preco_tabela, pais PK=(codigo, ano consumidores (cpf, nome, sobrenome, cidade, estado PK=(cpf garagens (codigo, ano, cgc, quantidade PK=(codigo, ano, cgc negocios (codigo, ano, cgc, cpf, data, preco PK=(codigo, ano, cgc, cpf revendedoras (cgc, nome, proprietario, estado, cidade PK=(cgc 1/5
CONSULTAS 1. Quais são os fabricantes de automóveis? 2. Quais são os modelos de automóveis da Fiat? 3. Quantos automóveis foram fabricados pela Fiat? 4. Quantos são os modelos de automóveis da Fiat? 5. Quais os automóveis que são do mesmo fabricante e modelo, mas que têm entre si uma diferença de mais de 10000 em seu preço de tabela? 6. Relação com nome e sobrenome dos consumidores, e o CGC da revendedora, dos consumidores que realizaram algum negócio (com junção do tipo A.x=B.x e com a sintaxe JOIN. 7. Relação com nome e sobrenome dos consumidores, e o CGC da revendedora, de todos os consumidores (mesmo aqueles que não realizaram nenhum negócio. [com LEFT e com RIGHT] 8. Que consumidores não realizaram nenhum negócio? 9. Que revendedoras não realizaram nenhum negócio? 10. Relação com nome e sobrenome dos consumidores, e o CGC da revendedora, de todos os consumidores e negócios existentes. 11. Relação com CGC e nome das revendedoras, e o CPF do consumidor, de todos as revendedoras e negócios existentes. 12. Quantos foram os negócios realizados? (resposta=28 13. Relação com nome e sobrenome dos consumidores, nome da revendedora, fabricante e modelo dos automóveis, date e preço do negócio, para todos os negócios realizados (resposta=23 linhas. 14. Como identificar onde está o problema da diferença existente entre as duas consultas anteriores? 2/5
1. Quais são os fabricantes de automóveis? SELECT DISTINCT (fabricante ORDER BY fabricante 2. Quais são os modelos de automóveis da Fiat? SELECT DISTINCT (modelo ORDER BY modelo 3. Quantos automóveis foram fabricados pela Fiat? SELECT COUNT(* 4. Quantos são os modelos de automóveis da Fiat? SELECT COUNT (DISTINCT (modelo RESPOSTAS 5. Quais os automóveis que são do mesmo fabricante e modelo, mas que têm entre si uma diferença de mais de 10000 em seu preço de tabela? SELECT a1.*, a2.* a1, automoveis a2 WHERE a1.fabricante = a2.fabricante AND a1.modelo = a2.modelo AND (a2.preco_tabela - a1.preco_tabela > 10000 6. Relação com nome e sobrenome dos consumidores, e o CGC da revendedora, dos consumidores que realizaram algum negócio (com junção do tipo A.x=B.x e com a sintaxe JOIN. FROM consumidores c, negocios n WHERE c.cpf = n.cpf FROM consumidores c JOIN negocios n ON (c.cpf = n.cpf 3/5
7. Relação com nome e sobrenome dos consumidores, e o CGC da revendedora, de todos os consumidores (mesmo aqueles que não realizaram nenhum negócio. [com LEFT e com RIGHT] FROM consumidores c LEFT OUTER JOIN negocios n ON (c.cpf = n.cpf n RIGHT OUTER JOIN consumidores c ON (c.cpf = n.cpf 8. Que consumidores não realizaram nenhum negócio? SELECT * FROM consumidores WHERE cpf NOT IN ( SELECT cpf 9. Que revendedoras não realizaram nenhum negócio? SELECT * FROM revendedoras WHERE cgc NOT IN ( SELECT cgc 10. Relação com nome e sobrenome dos consumidores, e o CGC da revendedora, de todos os consumidores e negócios existentes. FROM consumidores c FULL OUTER JOIN negocios n ON (c.cpf = n.cpf 11. Relação com CGC e nome das revendedoras, e o CPF do consumidor, de todos as revendedoras e negócios existentes. SELECT r.cgc, r.nome, n.cpf FROM revendedoras r FULL OUTER JOIN negocios n ON (r.cgc= n.cgc ORDER BY r.cgc 4/5
12. Quantos foram os negócios realizados? (resposta=28 SELECT COUNT (* 13. Relação com nome e sobrenome dos consumidores, nome da revendedora, fabricante e modelo dos automóveis, date e preço do negócio, para todos os negócios realizados (resposta=23 linhas. SELECT c.nome, c.sobrenome, r.nome, a.fabricante, a.modelo, n.data, n.preco FROM consumidores c, automoveis a, revendedoras r, negocios n WHERE n.cpf = c.cpf AND n.codigo = a.codigo AND n.ano = a.ano AND n.cgc = r.cgc 14. Como identificar onde está o problema da diferença existente entre as duas consultas anteriores? SELECT COUNT(* WHERE cpf NOT IN ( SELECT cpf FROM consumidores 1 SELECT COUNT(* WHERE cgc NOT IN ( SELECT cgc FROM revendedoras 0 SELECT COUNT(* WHERE (codigo, ano NOT IN ( 4 WHERE (codigo, ano NOT IN ( ORDER BY codigo, ano 1021, 86 1023, 95 1031, 92 1032, 95 5/5