Subconsulta do SQL Server

Resumo: neste tutorial, você aprenderá sobre a subconsulta do SQL Server e como usá-la para consultar dados.

Introdução à subconsulta do SQL Server

Uma subconsulta é uma consulta aninhada dentro de outra instrução, como SELECT, INSERT, UPDATE ou DELETE.

Vamos ver o seguinte exemplo.

Considere o orders e customers tabelas do banco de dados de amostra.

A instrução a seguir mostra como usar uma subconsulta na WHERE cláusula de uma SELECT declaração para encontrar os pedidos de venda dos clientes que localizam em New York:

Aqui está o resultado:

Neste exemplo, a seguinte instrução é uma subconsulta:

Code language: SQL (Structured Query Language) (sql)

Observe que você deve sempre incluir o SELECT consulta de uma subconsulta entre parênteses ().

Uma subconsulta também é conhecida como consulta interna ou seleção interna, enquanto a instrução que contém a subconsulta é chamada de seleção externa ou consulta externa:

SQL O servidor executa todo o exemplo de consulta acima da seguinte maneira:

Primeiro, ele executa a subconsulta para obter uma lista de números de identificação dos clientes localizados em New York.

Code language: SQL (Structured Query Language) (sql)

Em segundo lugar, o SQL Server substitui os números de identificação do cliente retornados pela subconsulta no operador IN e executa a consulta externa para obter o conjunto de resultados final.

Como você pode s ee, usando a subconsulta, você pode combinar duas etapas. A subconsulta elimina a necessidade de selecionar os números de identificação do cliente e conectá-los à consulta externa. Além disso, a própria consulta se ajusta automaticamente sempre que os dados do cliente são alterados.

Subconsulta de aninhamento

Uma subconsulta pode ser aninhada em outra subconsulta. O SQL Server oferece suporte a até 32 níveis de aninhamento. Considere o seguinte exemplo:

Primeiro, O SQL Server executa a seguinte subconsulta para obter uma lista de números de identificação de marca das marcas Strider e Trek:

Em segundo lugar, o SQL Server calcula a lista de preços médios de todos os produtos que pertencem a essas marcas.

Code language: SQL (Structured Query Language) (sql)

Terceiro, o SQL Server encontra os produtos cujo preço de lista é maior do que o preço de lista médio de todos os produtos com o Strider ou Trek marca.

Tipos de subconsulta do SQL Server

Você pode usar uma subconsulta em vários lugares:

  • No lugar de uma expressão
  • Com IN ou NOT IN
  • Com ANY ou ALL
  • Com EXISTS ou NOT EXISTS
  • Em UPDATE, DELETE, ou INSERT instrução
  • Na FROM cláusula

subconsulta do SQL Server é usado no lugar de uma expressão

Se uma subconsulta retornar um único valor, ela pode ser usada em qualquer lugar em que uma expressão for usada.

No exemplo a seguir, uma subconsulta é usada como um expressão de coluna chamada max_list_price em uma SELECT declaração.

A subconsulta do SQL Server é usada com o operador IN

Uma subconsulta que é usada com o IN retorna um conjunto de zero ou mais valores. Depois que a subconsulta retorna valores, a consulta externa os utiliza.

A consulta a seguir encontra os nomes de todos os produtos de mountain bikes e bicicletas de estrada que as lojas de bicicletas vendem.

Esta consulta é avaliada em duas etapas:

  1. Primeiro, a consulta interna retorna uma lista de números de identificação de categoria que correspondem aos nomes Mountain Bikes e code Bicicletas de estrada.
  2. Em segundo lugar, esses valores são substituídos na consulta externa que encontra os nomes dos produtos cujo número de identificação da categoria corresponde a um dos valores da lista.

A subconsulta do SQL Server é usada com ANY operador

A subconsulta é introduzida com o operador ANY tem a seguinte sintaxe:

Code language: SQL (Structured Query Language) (sql)

Supondo que a subconsulta retorne uma lista de valores v1, v2,… vn. O operador ANY retorna TRUE se um de um par de comparação (scalar_expression, vi) avalia para TRUE; caso contrário, retorna FALSE.

Por exemplo, a consulta a seguir encontra os produtos cujos preços de lista são maiores ou iguais ao preço de lista médio de qualquer marca de produto .

Para cada marca, a subconsulta encontra o preço máximo de tabela. A consulta externa usa esses preços máximos e determina qual preço de tabela de produto individual é maior ou igual ao preço de tabela máximo de qualquer marca.

A subconsulta do SQL Server é usada com o operador ALL

O ALL operador tem a mesma sintaxe que o operador ANY:

Code language: SQL (Structured Query Language) (sql)

O operador ALL retorna TRUE se todos os pares de comparação (scalar_expression, vi) avaliarem TRUE; caso contrário, retorna FALSE.

A consulta a seguir encontra os produtos cujo preço de lista é maior ou igual ao preço de lista médio retornado pela subconsulta:

A subconsulta do SQL Server é usada com EXISTS ou NÃO EXISTS

O seguinte ilustra a sintaxe de uma subconsulta introduzida com o operador EXISTS:

Code language: SQL (Structured Query Language) (sql)

O operador EXISTS retorna TRUE se a subconsulta retornar resultados; caso contrário, retorna FALSE.

Por outro lado, NOT EXISTS é o oposto de EXISTS operador.

A consulta a seguir encontra os clientes que compraram produtos em 2017:

Se você usar NOT EXISTS em vez de EXISTS, você pode encontrar os clientes que não compraram nenhum produto em 2017.

Subconsulta do SQL Server na cláusula FROM

Suponha que você queira encontrar a média da soma dos pedidos de toda a equipe de vendas. Para fazer isso, você pode primeiro encontrar o número de pedidos por equipes:

Então, você pode aplicar a função AVG() a este conjunto de resultados. Como uma consulta retorna um conjunto de resultados que se parece com uma tabela virtual, você pode colocar a consulta inteira na cláusula FROM de outra consulta como esta:

A consulta que você coloca no FROM deve ter um alias de tabela. Neste exemplo, usamos o t como o alias da tabela para a subconsulta. Para chegar ao resultado final, o SQL Server realiza as seguintes etapas:

  • Execute a subconsulta na cláusula FROM.
  • Use o resultado da subconsulta e execute a consulta externa.

Neste tutorial, você aprendeu sobre o conceito de subconsulta do SQL Server e como usar vários tipos de subconsulta para consultar dados.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *