Escolar Documentos
Profissional Documentos
Cultura Documentos
Subconsulta
• Estrutura geral
SELECT .... FROM ....
WHERE [at] OPERADOR
( SELECT ... FROM ... [WHERE ... ])
• Declaração SELECT localizada dentro de
outra declaração SELECT
Subconsulta
• Recurso anteriormente utilizado(PLEW)
1. Inexistência anterior de junção externa
2. Desempenho ruim das ligações internas
Subconsulta
• Preterida devido:
1. Adição de junção externa no SQL-99
2. Melhora do processamento de junção
interna
3. Pouca legibilidade no código com
subconsulta ( leitura/ manutenção)
Sintaxes
SELECT * FROM TABELA1[, TABELA2]
WHERE
• [ [NOT] EXISTS ( subconsulta) ]
• [ [NOT] UNIQUE ( subconsulta)]
• [ atributo > | < | >= |<= ALL ( subconsulta)]
• [ atributo > | < | >= |<= ANY ( subconsulta)]
• [ atributo [,atributo2] [NOT] IN ( subconsulta ) ]
Subconsulta
SELECT descricao , preco FROM comida
WHERE preco <
( SELECT AVG(preco) FROM comida)
Processamento de Subconsulta
SELECT descricao , preco FROM comida
WHERE preco < ( SELECT AVG(preco) FROM comida)
(200)
2. SELECT descricao , preco FROM comida
WHERE preco < (200)
Subconsultas
que retornam de lista de valores
• Dois casos possíveis:
1. Um valor único
2. Lista de valores
6 Antonio
Equivale a uma junção interna !
12 Graça
18 Ane
Subconsulta: retorno de lista
• Ocorrências de Func onde num_func
NÃO se ligam com nenhum valor da coluna num_est ( Est)
SELECT num_func, nome_func FROM func
WHERE num_func NOT IN
( select num_est FROM est )