SlideShare uma empresa Scribd logo
1 de 31
Universidade Metodista Unida de
Moçambique
Amorim de Carvalho
Museiwa Lopes
Sidney Zetino
Consultas aninhadas
• O resultado de uma consulta é utilizado por outra consulta, de
forma encadeada e no mesmo comando SQL
• O resultado do comando SELECT mais interno (subselect) é usado
por outro SELECT mais externo para obter o resultado final.
Consultas aninhadas
• Professor(nome, endereco, categoria, salario, cod_depto)
• Disciplina(nome, cod_disciplina, carga_horária)
• Departamento(nome_depto, numero_depto)
• Director(endereco, cod_disciplina, periodo)
Consultas aninhadas
• Subconsultas devem ser escritas entre parênteses ( )
• Existem 3 tipos de subconsultas
ESCALAR → Retornam um único valor
ÚNICA LINHA → Retornam várias colunas, mas apenas uma
única linha é obtida
TABELA → Retornam uma ou mais colunas e múltiplas linhas
Consultas aninhadas
Consultas aninhadas
• Exemplo:
SELECT cod_disciplina
FROM Director WHERE endereco IN
( SELECT endereco FROM Professor
WHERE cod_depto= (SELECT numero_depto
FROM Departamento
WHERE nome_depto =
‘Engenharia’ );
SELECT coluna(s)
FROM tabela(s)
WHERE coluna operador (SELECT coluna FROM
tabela WHERE condições);
Tupla
• É uma função finita que mapeia nomes de campos para um
conjunto de valores inter-relacionados. No banco de dados Tupla é
você preencher oque a tabela espera em apenas uma unidade
conceitual.
Um dos maiores usos da tupla era para retornar mais de um valor
em um método. Então você encapsula estes valores dentro da tupla.
Comparações Set & Multi Set
Operações SET, em SQL, são um conjunto de operações realizadas
sobre tabelas que se assemelham às operações realizadas sobre
conjuntos na teoria dos conjuntos. Entre essas operações estão
a união e interseção, que quando aplicadas às tabelas, através dos
operadores padrões da SQL, resultam em novas tabelas.
No contexto da SQL, estes operadores combinam dois ou mais
comandos select onde o retorno depende operador utilizado.
Operador UNION
• Em SQL a cláusula UNION combina os resultados de duas
consultas SQL em uma única para todas as linhas
correspondentes. As duas consultas devem resultar no mesmo
número de colunas e em tipos de dados compatíveis com o
objetivo de unirem-se. Quaisquer registros duplicados são
automaticamente removidos a menos que UNION ALL seja usado.
• Observa que UNION não garante a ordem das linhas as linhas do
segundo operando ppodem aparecer antes depois ou misturadas
com as linhas do primeiro operando. Em situações onde uma
ordem específica é desejada, ORDER BY deve ser usada.
• Observe que UNION ALL pode ser mais rápido que UNION.
Um simples exemplo poderia ser um banco de dados com as tabelas
vendas2005 & vendas2006 que possuem estruturas idêndicas mas
são separadas devido ás considerações do desempenho.
Dadas as tabelas: Executando esta declaração:
SELECT * FROM vendas 2005
UNION
SELECT * FROM vendas 2006
Produz este conjunto de resultados, embora a ordem das
linhas podem variar devido a cláusula ORDER BY nao ter
sido fronecida.
Observe que há duas linhas para João devido estas linhas
serem distintas através de sua colunas. Há apenas uma linha
apenas para o Alex porque estas linhas não são distintas para as
para as duas colunas.
UNION ALL fornece resultados diferentes devido ele não eleminar
duplicações. Executando esta declaração: SELECT * FROM vendas 2005
UNION ALL
SELECT * FROM vendas 2006
Forneceria estes resultados, novamente permitindo
variância para a falta de uma declaração ORDER BY
Multiset
Cria uma istância de um multiconjunto de uma lista de valores. Todos
os valores no constructor MULTISET devem ser de um tipo
compatível. Construtores multiconjuntos vazios não são permitidos.
Sintaxe:
MULTISET ( Expression [{, Expression
--or
{ Expression [{, Expression }] }
Consultas aninhadas independentes:
• Em consultas aninhadas independentes, a execução da consulta
começa da consulta mais interna para as consultas mais externas.
A execução da consulta interna é independente da consulta
externa, mas o resultado da consulta interna é usado na execução
da consulta externa. Vários operadores como IN, NOT IN, ANY,
ALL etc são usados ​​para escrever consultas aninhadas
independentes.
• Um outro ponto importante a ser mencionado é a possibilidade de
uma subconsulta aninhada poder conter outras consultas
aninhadas, como demonstra o exemplo a seguir:
Exemplo: Encontrar o nome de todos os marinheiros que reservaram
um barco vermelho.
SELECT S.sname FROM sailors S WHERE S.sid IN
(SELECT R.sid FROM reserves R WHERE R.sid IN
(SELECT B.bid FROM boats B WHERE B.color = ‘red’))
Consultas aninhadas correlacionadas
• Consultas aninhadas correlacionadas:
• Em consultas aninhadas correlacionadas, a saída da consulta interna depende
da linha que está sendo executada atualmente na consulta externa. por
exemplo; Se quisermos descobrir S_NAME de ESTUDANTES que estão
matriculados em C_ID 'C1', isso pode ser feito com a ajuda de uma consulta
aninhada correlacionada como;
• Selecione S_NAME de STUDENT S onde EXISTS
• (selecione * de STUDENT_COURSE SC onde S. S_ID = SC. S_ID e SC. C_ID =
'C1');
O EXISTS
• A cláusula EXISTS faz uma verificação se existe algum resultado para a subquery
informada. Caso haja, o resultado da consulta principal é exibido. É muito comum sua
utilização quando se deseja trazer resultados onde um valor específico existe dentro de
outra tabela.
• EXISTS simplesmente testa se a consulta interna apresenta qualquer linha. Se apresentar,
a consulta externa prossegue. Se não apresentar, a consulta externa não é executada e
toda a instrução SQL não apresenta qualquer resultado
A sintaxe de EXISTS é:
• SELECT "nome_coluna1"
FROM "nome_tabela1"
WHERE EXISTS
(SELECT *
FROM "nome_tabela2"
WHERE "condição");
UNIQUE
• A função UNIQUE garante que todos os valores numa coluna são diferentes.
• Por exemplo, na seguinte instrução’.
• CREATE TABLE Customer
(SID integer UNIQUE,
Last_Name varchar (30),
First_Name varchar (30));
• A coluna "SID" tem uma restrição única e, por conseguinte, não pode incluir
valores duplicados. Tal restrição não suporta as colunas "Last_Name" e
"First_Name". Assim sendo, se a tabela já possuir as seguintes linhas:
SID Last_Name First_Name
1 Pessoa Stella
2 Villa Bruno
3 Feitor Sara
• As funções de agregação têm como objetivo realizar
cálculos no SQL, tais como: contagem, soma, média,
mínimo emáximo.
As funções de agregação têm como objetivo realizar
cálculos no SQL, tais como: contagem, soma, média,
mínimo emáximo.
COUNT
COUNT(*)
COUNT(*)
COUNT(DISTINCT
)
COUNT
(DISTINCT)
SUM
SUM AVG MIN/MAX
Count
Retorna a quantidade
total de valores de uma
coluna.
Count
Retorna a quantidade total
de valores de uma coluna.
O COUNT ignora os valores nulos
de uma coluna. Por isso o
resultado pode mudar
dependendo da coluna escolhida.
Count(*)
C
Ó
D
I
G
O
Retorna a quantidade total
de valores de uma coluna.
Count Distinct
Retorna a
contagem
distinta de
valores de uma
tabela.
SUM
Retorna a soma total
dos valores de uma
coluna.
C
Ó
D
I
G
O
AVG
Retorna a média
dos valores de
uma coluna.
Min
• Retorna o
valor
mínimo de
uma coluna.
Max
Retorna o valor máximo
de uma coluna.
C
Ó
D
I
G
O
Fim
Muito obrigado pela atenção

Mais conteúdo relacionado

Semelhante a Base de Dados Consultas Aninhadas.pptx

Conceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosConceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosAlefe Variani
 
Banco de dados comandos sql
Banco de dados   comandos sqlBanco de dados   comandos sql
Banco de dados comandos sqlNilson Augustini
 
BD I - Aula 14 A - Limitando Conj Dados e Sub Selects
BD I - Aula 14 A - Limitando Conj Dados e Sub SelectsBD I - Aula 14 A - Limitando Conj Dados e Sub Selects
BD I - Aula 14 A - Limitando Conj Dados e Sub SelectsRodrigo Kiyoshi Saito
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoHelder Lopes
 
Aula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptxAula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptxishtar14
 
Aula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptxAula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptxsuellencarolinerosa
 
Sql otimizando consulta com sql
Sql otimizando consulta com sqlSql otimizando consulta com sql
Sql otimizando consulta com sqlbiapecheco
 
Principais instruções em sql
Principais instruções em sqlPrincipais instruções em sql
Principais instruções em sqlCharleston Anjos
 
TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLFábio Delboni
 
Aula 6 sql - introdução
Aula 6   sql - introduçãoAula 6   sql - introdução
Aula 6 sql - introduçãoHélio Martins
 
Introdução ao MySQL - EuDala SF 2023.pptx
Introdução ao MySQL - EuDala SF 2023.pptxIntrodução ao MySQL - EuDala SF 2023.pptx
Introdução ao MySQL - EuDala SF 2023.pptxEuclidesDala2
 
Programação em Banco de Dados - Aula 06/09/2018
Programação em Banco de Dados - Aula 06/09/2018Programação em Banco de Dados - Aula 06/09/2018
Programação em Banco de Dados - Aula 06/09/2018Elaine Cecília Gatto
 
Apostila sql
Apostila sqlApostila sql
Apostila sqlsnetobr
 
Aula7 sql basico_6por_pag
Aula7 sql basico_6por_pagAula7 sql basico_6por_pag
Aula7 sql basico_6por_paganacri
 

Semelhante a Base de Dados Consultas Aninhadas.pptx (20)

Conceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosConceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de Dados
 
Consultas SQL
Consultas SQLConsultas SQL
Consultas SQL
 
Banco de dados comandos sql
Banco de dados   comandos sqlBanco de dados   comandos sql
Banco de dados comandos sql
 
BD I - Aula 14 A - Limitando Conj Dados e Sub Selects
BD I - Aula 14 A - Limitando Conj Dados e Sub SelectsBD I - Aula 14 A - Limitando Conj Dados e Sub Selects
BD I - Aula 14 A - Limitando Conj Dados e Sub Selects
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumo
 
Aula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptxAula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptx
 
Aula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptxAula06 - SQL (Conjuntos e Juncoes).pptx
Aula06 - SQL (Conjuntos e Juncoes).pptx
 
Sql otimizando consulta com sql
Sql otimizando consulta com sqlSql otimizando consulta com sql
Sql otimizando consulta com sql
 
Principais instruções em sql
Principais instruções em sqlPrincipais instruções em sql
Principais instruções em sql
 
Perfomance em MySQL
Perfomance em MySQLPerfomance em MySQL
Perfomance em MySQL
 
TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQL
 
Aula 6 sql - introdução
Aula 6   sql - introduçãoAula 6   sql - introdução
Aula 6 sql - introdução
 
Apostila de sql
Apostila de sqlApostila de sql
Apostila de sql
 
Introdução ao MySQL - EuDala SF 2023.pptx
Introdução ao MySQL - EuDala SF 2023.pptxIntrodução ao MySQL - EuDala SF 2023.pptx
Introdução ao MySQL - EuDala SF 2023.pptx
 
Programação em Banco de Dados - Aula 06/09/2018
Programação em Banco de Dados - Aula 06/09/2018Programação em Banco de Dados - Aula 06/09/2018
Programação em Banco de Dados - Aula 06/09/2018
 
Sql junções
Sql junçõesSql junções
Sql junções
 
Aprofundamento de DDL e DML
Aprofundamento de DDL e DMLAprofundamento de DDL e DML
Aprofundamento de DDL e DML
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
 
Aula7 sql basico_6por_pag
Aula7 sql basico_6por_pagAula7 sql basico_6por_pag
Aula7 sql basico_6por_pag
 

Base de Dados Consultas Aninhadas.pptx

  • 1. Universidade Metodista Unida de Moçambique Amorim de Carvalho Museiwa Lopes Sidney Zetino
  • 2. Consultas aninhadas • O resultado de uma consulta é utilizado por outra consulta, de forma encadeada e no mesmo comando SQL • O resultado do comando SELECT mais interno (subselect) é usado por outro SELECT mais externo para obter o resultado final.
  • 3. Consultas aninhadas • Professor(nome, endereco, categoria, salario, cod_depto) • Disciplina(nome, cod_disciplina, carga_horária) • Departamento(nome_depto, numero_depto) • Director(endereco, cod_disciplina, periodo)
  • 4. Consultas aninhadas • Subconsultas devem ser escritas entre parênteses ( ) • Existem 3 tipos de subconsultas ESCALAR → Retornam um único valor ÚNICA LINHA → Retornam várias colunas, mas apenas uma única linha é obtida TABELA → Retornam uma ou mais colunas e múltiplas linhas
  • 6. Consultas aninhadas • Exemplo: SELECT cod_disciplina FROM Director WHERE endereco IN ( SELECT endereco FROM Professor WHERE cod_depto= (SELECT numero_depto FROM Departamento WHERE nome_depto = ‘Engenharia’ ); SELECT coluna(s) FROM tabela(s) WHERE coluna operador (SELECT coluna FROM tabela WHERE condições);
  • 7. Tupla • É uma função finita que mapeia nomes de campos para um conjunto de valores inter-relacionados. No banco de dados Tupla é você preencher oque a tabela espera em apenas uma unidade conceitual. Um dos maiores usos da tupla era para retornar mais de um valor em um método. Então você encapsula estes valores dentro da tupla.
  • 8. Comparações Set & Multi Set Operações SET, em SQL, são um conjunto de operações realizadas sobre tabelas que se assemelham às operações realizadas sobre conjuntos na teoria dos conjuntos. Entre essas operações estão a união e interseção, que quando aplicadas às tabelas, através dos operadores padrões da SQL, resultam em novas tabelas. No contexto da SQL, estes operadores combinam dois ou mais comandos select onde o retorno depende operador utilizado.
  • 9. Operador UNION • Em SQL a cláusula UNION combina os resultados de duas consultas SQL em uma única para todas as linhas correspondentes. As duas consultas devem resultar no mesmo número de colunas e em tipos de dados compatíveis com o objetivo de unirem-se. Quaisquer registros duplicados são automaticamente removidos a menos que UNION ALL seja usado. • Observa que UNION não garante a ordem das linhas as linhas do segundo operando ppodem aparecer antes depois ou misturadas com as linhas do primeiro operando. Em situações onde uma ordem específica é desejada, ORDER BY deve ser usada. • Observe que UNION ALL pode ser mais rápido que UNION.
  • 10. Um simples exemplo poderia ser um banco de dados com as tabelas vendas2005 & vendas2006 que possuem estruturas idêndicas mas são separadas devido ás considerações do desempenho. Dadas as tabelas: Executando esta declaração: SELECT * FROM vendas 2005 UNION SELECT * FROM vendas 2006
  • 11. Produz este conjunto de resultados, embora a ordem das linhas podem variar devido a cláusula ORDER BY nao ter sido fronecida. Observe que há duas linhas para João devido estas linhas serem distintas através de sua colunas. Há apenas uma linha apenas para o Alex porque estas linhas não são distintas para as para as duas colunas. UNION ALL fornece resultados diferentes devido ele não eleminar duplicações. Executando esta declaração: SELECT * FROM vendas 2005 UNION ALL SELECT * FROM vendas 2006
  • 12. Forneceria estes resultados, novamente permitindo variância para a falta de uma declaração ORDER BY
  • 13. Multiset Cria uma istância de um multiconjunto de uma lista de valores. Todos os valores no constructor MULTISET devem ser de um tipo compatível. Construtores multiconjuntos vazios não são permitidos. Sintaxe: MULTISET ( Expression [{, Expression --or { Expression [{, Expression }] }
  • 14. Consultas aninhadas independentes: • Em consultas aninhadas independentes, a execução da consulta começa da consulta mais interna para as consultas mais externas. A execução da consulta interna é independente da consulta externa, mas o resultado da consulta interna é usado na execução da consulta externa. Vários operadores como IN, NOT IN, ANY, ALL etc são usados ​​para escrever consultas aninhadas independentes.
  • 15. • Um outro ponto importante a ser mencionado é a possibilidade de uma subconsulta aninhada poder conter outras consultas aninhadas, como demonstra o exemplo a seguir: Exemplo: Encontrar o nome de todos os marinheiros que reservaram um barco vermelho. SELECT S.sname FROM sailors S WHERE S.sid IN (SELECT R.sid FROM reserves R WHERE R.sid IN (SELECT B.bid FROM boats B WHERE B.color = ‘red’))
  • 16. Consultas aninhadas correlacionadas • Consultas aninhadas correlacionadas: • Em consultas aninhadas correlacionadas, a saída da consulta interna depende da linha que está sendo executada atualmente na consulta externa. por exemplo; Se quisermos descobrir S_NAME de ESTUDANTES que estão matriculados em C_ID 'C1', isso pode ser feito com a ajuda de uma consulta aninhada correlacionada como; • Selecione S_NAME de STUDENT S onde EXISTS • (selecione * de STUDENT_COURSE SC onde S. S_ID = SC. S_ID e SC. C_ID = 'C1');
  • 17. O EXISTS • A cláusula EXISTS faz uma verificação se existe algum resultado para a subquery informada. Caso haja, o resultado da consulta principal é exibido. É muito comum sua utilização quando se deseja trazer resultados onde um valor específico existe dentro de outra tabela. • EXISTS simplesmente testa se a consulta interna apresenta qualquer linha. Se apresentar, a consulta externa prossegue. Se não apresentar, a consulta externa não é executada e toda a instrução SQL não apresenta qualquer resultado
  • 18. A sintaxe de EXISTS é: • SELECT "nome_coluna1" FROM "nome_tabela1" WHERE EXISTS (SELECT * FROM "nome_tabela2" WHERE "condição");
  • 19. UNIQUE • A função UNIQUE garante que todos os valores numa coluna são diferentes. • Por exemplo, na seguinte instrução’. • CREATE TABLE Customer (SID integer UNIQUE, Last_Name varchar (30), First_Name varchar (30)); • A coluna "SID" tem uma restrição única e, por conseguinte, não pode incluir valores duplicados. Tal restrição não suporta as colunas "Last_Name" e "First_Name". Assim sendo, se a tabela já possuir as seguintes linhas:
  • 20. SID Last_Name First_Name 1 Pessoa Stella 2 Villa Bruno 3 Feitor Sara
  • 21. • As funções de agregação têm como objetivo realizar cálculos no SQL, tais como: contagem, soma, média, mínimo emáximo.
  • 22. As funções de agregação têm como objetivo realizar cálculos no SQL, tais como: contagem, soma, média, mínimo emáximo. COUNT COUNT(*) COUNT(*) COUNT(DISTINCT ) COUNT (DISTINCT) SUM SUM AVG MIN/MAX
  • 23. Count Retorna a quantidade total de valores de uma coluna.
  • 24. Count Retorna a quantidade total de valores de uma coluna. O COUNT ignora os valores nulos de uma coluna. Por isso o resultado pode mudar dependendo da coluna escolhida.
  • 25. Count(*) C Ó D I G O Retorna a quantidade total de valores de uma coluna.
  • 26. Count Distinct Retorna a contagem distinta de valores de uma tabela.
  • 27. SUM Retorna a soma total dos valores de uma coluna. C Ó D I G O
  • 28. AVG Retorna a média dos valores de uma coluna.
  • 30. Max Retorna o valor máximo de uma coluna. C Ó D I G O