Cursos / Redes de Computadores / Conceitos de Banco de Dados / Aula

arrow_back Aula 07 - Linguagem SQL - Subconsultas e Visões

Subconsulta com EXIST e NOT EXIST

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.

AخA
1
mysql> SELECT prod_nome 
2
    FROM produtos 
3
    WHERE NOT EXISTS (SELECT * FROM compras 
4
    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.

4
1
mysql> SELECT prod_nome
2
    FROM produtos
3
    WHERE EXISTS (SELECT * FROM compras 
4
    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.

Figura 09 - Tela do MySQL após os testes de inexistência e existência .
Tela do <span class='italico'>My</span>SQL após os testes de inexistência e existência .
Fonte: MySQL Server 5.7 Command Line Client
play_circle_filled
Vídeo 03 - EXIST e NOT EXIST

Versão 5.3 - Todos os Direitos reservados