A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Subconsultas em SQL. Subconsulta Estrutura geral SELECT.... FROM.... WHERE [at] OPERADOR ( SELECT... FROM... [WHERE... ]) Declaração SELECT localizada.

Apresentações semelhantes


Apresentação em tema: "Subconsultas em SQL. Subconsulta Estrutura geral SELECT.... FROM.... WHERE [at] OPERADOR ( SELECT... FROM... [WHERE... ]) Declaração SELECT localizada."— Transcrição da apresentação:

1 Subconsultas em SQL

2 Subconsulta Estrutura geral SELECT.... FROM.... WHERE [at] OPERADOR ( SELECT... FROM... [WHERE... ]) Declaração SELECT localizada dentro de outra declaração SELECT

3 Subconsulta Recurso anteriormente utilizado(PLEW) 1.Inexistência anterior de junção externa 2.Desempenho ruim das ligações internas

4 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)

5 Sintaxes SELECT * FROM TABELA1[, TABELA2] WHERE [ [NOT] EXISTS ( subconsulta) ] [ [NOT] UNIQUE ( subconsulta)] [ atributo > | = |<= ALL ( subconsulta)] [ atributo > | = |<= ANY ( subconsulta)] [ atributo [,atributo2] [NOT] IN ( subconsulta ) ]

6 Subconsulta SELECT descricao, preco FROM comida WHERE preco < ( SELECT AVG(preco) FROM comida)

7 Processamento de Subconsulta SELECT descricao, preco FROM comida WHERE preco < ( SELECT AVG(preco) FROM comida) ( SELECT AVG(preco) FROM comida) (200) 2. SELECT descricao, preco FROM comida WHERE preco < (200)

8 Subconsultas que retornam de lista de valores Dois casos possíveis: 1.Um valor único 2.Lista de valores O resultado da subconsulta deve estar dentro da declaração da consulta externa.

9 Subconsultas: retorno de lista WHERE + emprego de IN / NOT IN Null Cintia20 Ane18 Clea16 Leila14 Graça12 Roberto10 Alex8 Antonio6 Joao4 Maria2 Nome_funcNum_func Null Ane18 Quenia15 Graça12 Nair9 Antonio6 Tarso3 Nome_EstNum_Est Tab. Func Tab. Est

10 Subconsulta: retorno de lista Ocorrências de Func onde num_func liga-se com valor da coluna num_est ( Est) SELECT num_func, nome_func FROM func WHERE num_func IN ( select num_est FROM est) SELECT num_func, nome_func FROM func WHERE num_func IN ( 3, 6, 9, 12, 15, 18, null) Ane18 Graça12 Antonio6 Equivale a uma junção interna !

11 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 ) SELECT num_func, nome_func FROM func WHERE num_func IN ( 3, 6, 9, 12, 15, 18)

12 Subconsultas com retorno de valor único Uma forma de assegurar o retorno de valor único é o emprego de funções de agregação. Operadores possíveis: = >= IN | NOT IN BETWEEN

13 Subconsulta correlativas Qualquer consulta que contém uma referência para tabela da consulta externa. Não pode ser avaliada antes da consulta externa. PLEW cita como modalidade mais antiga.

14 Subconsulta com Exists WHERE + exists ( correlativa) Reserva um espaço separado para cada linha da tabela na consulta externa. select num_matricula, nome from aluno where exists ( select distinct num_matricula from nota_aluno_disciplina) Sem atributo

15 Subconsulta para ligação externa Empregar NOT EXISTS SELECT a.num_func, a.nome_func, b. num_est, b. nome_est FROM func a, est b WHERE a.num_func = b. num_est UNION ALL SELECT a.num_func, a.nome_func, null, null FROM func a WHERE NOT EXISTS( select b.num_est FROM est WHERE a.num_func = b. num_est)

16 Operadores para subconsultas > >= EXISTS IN/ NOT IN > >= ALL > >= ANY <>ALL equivale a NOT INT IN equivale a =ANY

17 Exercício Compare a) e b) e justifique a diferença. 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)

18 Operadores de Conjuntos Equivalência com conjuntos matemáticos UNION/ UNION ALL INTERSECT CORRESPONDING BY EXCEPT

19 Subconsultas com operadores de conjuntos Tratamento de consultas como conjuntos consulta 1 UNION [ALL] | INTERSECT | EXCEPT | MINUS consulta 2 * As consultas devem ter a mesma quantidade e mesmo tipo de campos como retorno para efetuar esses comandos.

20

21 Exercício Testes de operadores com sub-consultas 1) Selecionar dados de produto se houver qualquer ocorrência de custo superior a 100. ( exists) 2) Selecionar se o salário de um funcionário ( que vc escolhe ) é único. ( unique) 3) Listar dados para todos os salários 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)


Carregar ppt "Subconsultas em SQL. Subconsulta Estrutura geral SELECT.... FROM.... WHERE [at] OPERADOR ( SELECT... FROM... [WHERE... ]) Declaração SELECT localizada."

Apresentações semelhantes


Anúncios Google