Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Redes de Computadores / Conceitos de Banco de Dados / Aula
Uma das grandes aplicações da subconsulta correlacionada é a realização de testes de existência e inexistência, que são realizados com as cláusulas EXISTS e NOT EXISTS, respectivamente, juntamente com a subconsulta.
A realização de um teste de inexistência permite encontrar todas as linhas de uma tabela (referenciada na consulta externa), que não contém os dados fornecidos pela subconsulta.
Vamos supor que precisamos determinar quais foram os produtos que não foram vendidos no nosso banco de dados sistvendas. Uma forma de realizar essa pesquisa é utilizar um NOT EXISTS para encontrar os produtos.
mysql> SELECT prod_nome
FROM produtos
WHERE NOT EXISTS (SELECT * FROM compras
WHERE prod_codigo= comp_codproduto);
Com a utilização da cláusula NOT EXISTS, a consulta externa encontra o nome dos produtos que ainda não estão listados na tabela compras. O resultado dessa pesquisa é ilustrado na Figura 9.
De maneira semelhante, podemos listar os nomes dos produtos que foram vendidos utilizando o termo EXISTS.
mysql> SELECT prod_nome
FROM produtos
WHERE EXISTS (SELECT * FROM compras
WHERE prod_codigo= comp_codproduto);
A consulta feita retorna os nomes dos produtos em que o atributo prod_codigo aparece pelo menos uma vez na tabela compras. O resultado dessa pesquisa encontra-se na Figura 9.
Versão 5.3 - Todos os Direitos reservados