Conteúdo do Curso
SQL Intermediário
SQL Intermediário
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á:
SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )
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):
SELECT name FROM department WHERE budget <= 500000
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:
SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )
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:
- A consulta interna recupera os
nomes
dos departamentos de que precisamos. - 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. - Obtemos o resultado desejado.
A sintaxe para usar uma consulta interna será assim:
Mas há diversos pontos importantes a considerar ao usar consultas internas:
- 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
=
,>
,<
,>=
,<=
,<>
; - 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;
- Otimização: Consultas aninhadas podem ser ineficientes, especialmente se forem executadas para cada linha da consulta principal;
- 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.
Obrigado pelo seu feedback!