Exercícios de SQL

Exercicio 1


Estrutura das tabelas:
Produto ( pnome: string, preco: integer, categoria: string, fabricante: string )
Compra ( comprador: string, vendedor: string, loja: string, produto: string )
Companhia ( cnome: string, valorAcao: integer, pais: string )
Pessoa ( nomePess: string, tel: string, cidade: string )



1) Encontre todas as pessoas que compraram produtos eletrônicos;

SELECT pessoa.nomePess FROM produto, pessoa, compra
WHERE
  compra.comprador = pessoa.nomePess AND
  compra.produto = produto.pnome AND
  produto.categoria = 'eletronicos';



2) Encontre o nome das pessoas que compraram produtos japoneses.

SELECT comprador
FROM produto, compra, companhia
WHERE
    produto.pnome = compra.produto and
    companhia.cnome = produto.fabricante and
    pais = 'Japao';



3) Encontre o nome das pessoas que compraram produtos japoneses e vivem em Curitiba.

SELECT comprador
FROM produto, compra, companhia, pessoa
WHERE
    produto.pnome = compra.produto AND
    companhia.cnome = produto.fabricante AND
    compra.comprador = pessoa.nomePess AND
    pais = 'Japao' AND
    pessoa.cidade = 'Curitiba';



4) Encontre as pessoas que compraram e venderam alguma coisa.

SELECT comprador FROM compra
INTERSECT
SELECT vendedor FROM compra;



5) Encontre as pessoas que compraram produtos de "pedro" ou produtos
fabricados por uma companhia com valor de ação amior $50.

SELECT pessoa.nomePess
FROM pessoa, compra, companhia, produto
WHERE
  produto.pnome = compra.produto AND
  companhia.cnome = produto.fabricante AND
  compra.comprador = pessoa.nomePess AND
  ( compra.vendedor = 'Pedro' OR companhia.valorAcao > 50 );



6) Encontre todas as pessoas que compraram produtos japoneses,
mas que não compraram produtos brasileiros

	SELECT compra.comprador
	FROM compra, companhia, produto
	WHERE
		compra.produto = produto.pnome AND
		produto.fabricante = companhia.cnome AND
		companhia.pais = 'Japao'
EXCEPT
	SELECT compra.comprador
	FROM compra, companhia, produto
	WHERE
		compra.produto = produto.pnome AND
		produto.fabricante = companhia.cnome AND
		companhia.pais = 'Brasil'



7) Encontre o nome das pessoas que compraram produtos japoneses e brasileiros.

	SELECT compra.comprador
	FROM compra, companhia, produto
	WHERE
		compra.produto = produto.pnome AND
		produto.fabricante = companhia.cnome AND
		companhia.pais = 'Brasil'
INTERSECT
	SELECT compra.comprador
	FROM compra, companhia, produto
	WHERE
		compra.produto = produto.pnome AND
		produto.fabricante = companhia.cnome AND
		companhia.pais = 'Japao'



Exercicio 2


Estrutura das tabelas:
aluno ( numAlu: integer, nomeAlu: string, curso: string, ano: integer, idade: integer )
professor ( idProf: integer, nomeProf: string, idDepto: integer )
disciplina ( nome: string, horario: string, sala: string, idProf: integer )
matricula ( numAlu: integer, nomeDisc: string )



1) Encontre o nome de todos os alunos do segundo ano que estão matriculados em uma disciplina ministrada pela professora "Ivana S."

SELECT a.nomeAlu
FROM aluno a, disciplina d, matricula m, professor p
WHERE
  a.numAlu = m.numAlu AND
  d.idprof = p.idProf AND
  d.nome = m.nomeDisc AND
  a.ano = 2 AND
  p.nomeProf Like 'Ivana Silva';



2) Encontre o nome de todos os alunos que não estão matriculados em nenhuma disciplina ministrada pela professora "Ivana S."

SELECT a.nomeAlu
FROM aluno a
WHERE a.numalu not IN (

    SELECT a.numAlu
    FROM aluno a, disciplina d, matricula m, professor p
    WHERE
      a.numAlu = m.numAlu AND
      d.idprof = p.idProf AND
      d.nome = m.nomeDisc AND
      p.nomeProf Like 'Ivana Silva'
)



3) Encontre o nome dos alunos matriculados em disciplinas que tenham horários que coincidem.

----------