Escolar Documentos
Profissional Documentos
Cultura Documentos
Subconsulta
Estrutura geral SELECT .... FROM .... WHERE [at] OPERADOR ( SELECT ... FROM ... [WHERE ... ]) Declarao SELECT localizada dentro de outra declarao SELECT
Subconsulta
Recurso anteriormente utilizado(PLEW) 1. Inexistncia anterior de juno externa 2. Desempenho ruim das ligaes internas
Subconsulta
Preterida devido: 1. Adio de juno externa no SQL-99 2. Melhora do processamento de juno interna 3. Pouca legibilidade no cdigo com subconsulta ( leitura/ manuteno)
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)
Tab. Est
Num_Est 3 6 9 12 15 18 Nome_Est Tarso Antonio Nair Graa Quenia Ane Null
Antonio
12 18
Graa Ane
Subconsulta correlativas
Qualquer consulta que contm uma referncia para tabela da consulta externa. No pode ser avaliada antes da consulta externa. PLEW cita como modalidade mais antiga.
Exerccio
Compare a) e b) e justifique a diferena. a) select num_matricula, nome from aluno where exists ( select distinct num_matricula from nota_aluno_disciplina)
b) select num_matricula, nome from aluno where num_matricula in ( select distinct num_matricula from nota_aluno_disciplina)
Operadores de Conjuntos
Equivalncia com conjuntos matemticos UNION/ UNION ALL INTERSECT CORRESPONDING BY EXCEPT
Exerccio
Testes de operadores com sub-consultas
1) Selecionar dados de produto se houver qualquer ocorrncia de custo superior a 100. ( exists) 2) Selecionar se o salrio de um funcionrio ( que vc escolhe ) nico. ( unique) 3) Listar dados para todos os salrios de uma cidade. ( ALL). 4) Selecionar todos os dados dos produtos com o custo maior que 10. ( ALL) 5) Selecionar o qualquer produto custo com custo maior que 10. ( ANY)