Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Consultas Aninhadas | Subconsultas Aninhadas
SQL Intermediário
course content

Conteúdo do Curso

SQL Intermediário

SQL Intermediário

1. Agrupamento
2. Subconsultas Aninhadas
3. Juntando Tabelas
4. DDL e DML em SQL

book
Consultas Aninhadas

Ótimas notícias!

A administração escolar expressa satisfação com nosso desempenho recente e sinaliza prontidão para progredir ainda mais.

À medida que se preparam para o recesso de verão e entramos em um período de flexibilidade, aproveitamos a oportunidade para mergulhar em metodologias novas e aprimorar nossa interação com SQL.

Especificamente, pretendemos explorar consultas aninhadas, um conceito fundamental nas operações de SQL.

Para elucidar esse conceito, vamos considerar um exemplo ilustrativo retirado do nosso banco de dados organizacional. Com a expansão da empresa, uma nova entidade, denominada department, é incorporada. Essa adição amplia nossa estrutura de dados, influenciando a dinâmica das operações do nosso banco de dados.

Vamos examinar a estrutura dessa nova tabela para entender melhor seu papel dentro da nossa arquitetura de banco de dados em evolução:

Como você pode ver, a nova tabela contém departamentos, seus tipos e orçamentos. E na tabela employee, como você deve se lembrar, há informações sobre o departamento ao qual cada empregado pertence.

Vamos considerar um exemplo onde usamos consultas aninhadas para recuperar aqueles empregados que trabalham em departamentos com orçamentos de $500.000 ou menos.

Aqui está como nossa consulta se parecerá:

1234567
SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )
copy

Como você pode ver, esta sintaxe é bastante intuitiva. Utilizamos uma cláusula WHERE para especificar que o nome do departamento deve estar presente na tabela que recuperamos com a consulta interna.

Vamos dividir esta consulta em duas separadas para ver como funciona. Primeiro, vamos recuperar os nomes dos departamentos com orçamentos de $500,000 ou menos (nossa consulta interna):

123
SELECT name FROM department WHERE budget <= 500000
copy

Como você pode ver, obtivemos 5 departamentos em resposta. Lembre-se desta tabela.

Agora, considerando o resultado obtido, vamos escrever a segunda consulta para recuperar informações sobre os funcionários destes departamentos:

12345
SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )
copy

O resultado desta consulta será idêntico ao resultado que obtivemos com a primeira consulta.

Então, vamos detalhar passo a passo o que estamos fazendo:

  1. A consulta interna recupera os nomes dos departamentos de que precisamos.

  2. Em seguida, usando uma cláusula WHERE, estabelecemos um certo critério que verifica se os departamentos estão presentes na tabela que recuperamos com a consulta interna.

  3. Obtemos o resultado desejado.

A sintaxe para usar uma consulta interna será assim:

Mas há diversos pontos importantes a considerar ao usar consultas internas:

  1. Resultado Único na Subconsulta: A consulta aninhada deve retornar apenas uma coluna, mas também pode ser restrita a um único valor se for usada em uma condição de comparação. Isso é particularmente importante para operadores como =, >, <, >=, <=, <>;

  2. Tipos de Dados: Garanta que o tipo de dado da coluna retornada corresponda ao tipo de dado da coluna à qual a condição é aplicada para evitar erros de incompatibilidade de tipos;

  3. Otimização: Consultas aninhadas podem ser ineficientes, especialmente se forem executadas para cada linha da consulta principal;

  4. Usando o Operador IN: Consultas aninhadas são frequentemente usadas com o operador IN para verificar a presença de valores em um subconjunto de dados. No entanto, operadores de comparação (>, <, >=, <=, <>) também podem ser usados para condições mais complexas.

Nos próximos capítulos, vamos praticar com consultas internas juntos e também aprender algumas novas nuances sobre o uso delas.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 1
We're sorry to hear that something went wrong. What happened?
some-alt