0% acharam este documento útil (0 voto)
160 visualizações7 páginas

Guia Completo de Subconsultas SQL

Este documento explica o que é uma subconsulta SQL, que é uma consulta aninhada dentro de outra para formar uma consulta complexa. Ele fornece exemplos de como usar subconsultas com operadores como IN, EXISTS e correlacionadas para selecionar dados com base nos resultados de outras consultas.

Enviado por

demein
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
160 visualizações7 páginas

Guia Completo de Subconsultas SQL

Este documento explica o que é uma subconsulta SQL, que é uma consulta aninhada dentro de outra para formar uma consulta complexa. Ele fornece exemplos de como usar subconsultas com operadores como IN, EXISTS e correlacionadas para selecionar dados com base nos resultados de outras consultas.

Enviado por

demein
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

SUBCONSULTA

SQL
SUBCONSULTA SQL

SUBCONSULTAS

Resumo : neste tutorial, você aprenderá sobre a subconsulta SQL que é uma


consulta regular aninhada dentro de outra consulta para formar uma consulta
complexa.

Introdução à subconsulta SQL

Uma subconsulta é uma SELECT instrução regular aninhada dentro de outra


consulta, como a instrução SELECT , UPDATE ou DELETE . A imagem a seguir
ilustra o conceito de subconsulta:

SELECT
id, nome, sobrenome
FROM
tabelaA
WHERE CONSULTA EXTERNA
id IN (
SELECT DISTINCT
reportSTO
FROM
tabelaA);
SUBQUERY

Uma subconsulta também é conhecida como seleção interna ou consulta


interna, enquanto a consulta que contém a subconsulta é chamada de seleção
externa ou consulta externa.

Na imagem acima, a subconsulta retorna um conjunto de resultados que


consiste em três linhas.

SELECT DISTINCT
reportsto
FROM
employees

Este conjunto de resultados é buscado no operador IN da consulta externa. A


consulta pode ser traduzida como:

SELECT
employeeid, firstname, lastname
FROM
employees
WHERE
employeeid IN (5 , 3, null);

2
SUBCONSULTA SQL

Ele retorna todos os gerentes da employees tabela.

Neste exemplo, o resultado da subconsulta é usado pela consulta externa. Os


mecanismos de banco de dados executam a consulta inteira duas vezes, uma para a
subconsulta e outra para a consulta externa.

Uma subconsulta também pode ser aninhada dentro de outra subconsulta. O


número de níveis de aninhamento depende da implementação de um produto de
banco de dados específico. Por exemplo, o Microsoft SQL Server oferece suporte a
até 32 níveis.

Exemplos de subconsulta SQL

Nos exemplos a seguir, usaremos as seguintes tabelas no banco de dados de


amostra :

 clientes - armazena dados cadastrais do cliente.


 produtos - armazena dados mestre dos produtos.
 pedidos - armazena os dados do cabeçalho do pedido, incluindo o cliente que
fez as compras.
 detalhes do pedido - armazena dados de itens de linha do pedido.

Uma subconsulta pode retornar uma ou mais linhas. Quando a subconsulta


retorna uma única linha, você pode usar o operador de comparação, como =,>, <,>

3
SUBCONSULTA SQL

=, <= e <> na consulta externa para comparar o valor com o valor retornado pela
subconsulta.

Por exemplo, a consulta a seguir seleciona todos os clientes que localizam a


mesma cidade que o ID do cliente BSBEV usando o operador diferente (<>):

SELECT
customerid, companyname, city
FROM
customers
WHERE
customerid <> 'BSBEV'
AND city = (SELECT
city
FROM
customers
WHERE
customerid = 'BSBEV')

Primeiro, a subconsulta retorna a cidade onde o cliente BSBEV localiza, que é


Londres. Em seguida, a cidade de Londres é usada para fornecer a consulta externa
para localizar todos os clientes que localizam na cidade de Londres.

Subconsulta SQL com exemplos de operadores IN e NOT IN


Caso a subconsulta retorne um conjunto de resultados que contém várias
linhas, você pode usar o operador IN ou NOT IN na consulta externa para verificar se
o valor está no conjunto de valores retornado pela subconsulta.
Por exemplo, a consulta a seguir seleciona todos os pedidos de clientes nos
EUA. A subconsulta seleciona todos os IDs de cliente nos EUA, e este conjunto de IDs
é usado na consulta externa para selecionar pedidos:
SELECT
orderid, customerid, shipname
FROM
orders
WHERE
customerid IN (
SELECT
customerid
FROM
customers
WHERE
country = 'USA');

4
SUBCONSULTA SQL

Você também pode usar o  NOT IN operador para consultar todos os pedidos
que estão fora dos EUA como a seguinte consulta:
SELECT
orderid, customerid, shipname
FROM
orders
WHERE
customerid NOT IN (
SELECT
customerid
FROM
customerS
WHERE
country = 'USA')

Subconsulta SQL com o exemplo de instrução UPDATE

Uma subconsulta pode ser aninhada dentro de outras instruções,


como instruções UPDATE e DELETE , em vez da  SELECTinstrução.

Por exemplo, a seguinte declaração aumenta o preço unitário dos produtos


fornecidos pelo vendedor 15 em 5%:

UPDATE products
SET
unitprice = unitprice * 1.05
WHERE
productid IN (
SELECT
productid

5
SUBCONSULTA SQL

FROM
suppliers
WHERE
supplierid = 15);

A subconsulta seleciona todos os IDs de produtos fornecidos pelo fornecedor


15. O conjunto de IDs é então buscado na UDPATE instrução para atualizar o preço
unitário.

Subconsulta SQL como um exemplo de expressão


Uma subconsulta pode ser usada para substituir uma expressão em instruções
SQL. Por exemplo, a consulta a seguir retorna os preços de todas as bebidas, o preço
médio do produto e a diferença entre o preço unitário e o preço médio.
SELECT
productid, productname,
(SELECT
AVG(unitprice)
FROM
products) AS 'average price',
(unitprice - (
SELECT
AVG(unitprice)
FROM
products)) AS diff
FROM
products
WHERE
categoryid = 1

Subconsulta SQL com operadores EXISTS e NOT EXISTS

Uma subconsulta pode ser usada para testar a existência de linhas ao combinar
com EXISTS e  NOT EXISTSoperador. Confira o tutorial do operador SQL EXISTS para
aprender como usar o opeartor EXISTS com subconsultas.

6
SUBCONSULTA SQL

Subconsulta SQL correlacionada


A subconsulta que vimos até agora pode ser executada de forma
independente. Existe outro tipo de subconsulta que não pode ser executada
independentemente, chamada de subconsulta corralted. Abordaremos a subconsulta
correlacionada no próximo tutorial.
Neste tutorial, apresentamos a subconsulta SQL e mostramos como escrever
consultas que contêm subconsultas.

Você também pode gostar