Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2024
Banco de Dados›Consultas e Comandos em SQL
Código
ce403637
Banca
CESPE / CEBRASPE
Órgão
BACEN
Ano
2024
Cargo
Ana ( )
Julgue o próximo item, relativo a bancos de dados.
Quando utilizado o comando SELECT, podem-se incluir várias subqueries internas na mesma instrução.
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoC — Certo
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
SQL – Subconsultas (subqueries) em instruções SELECT
Gabarito: Certo. O comando SELECT permite incluir várias subconsultas internas na mesma instrução, sem limite definido pela linguagem SQL padrão. Uma subconsulta é uma consulta aninhada dentro de outra instrução, e nada impede que uma única instrução SELECT contenha múltiplas subconsultas em diferentes cláusulas, como WHERE, HAVING, FROM ou SELECT. O item está correto.
O que é uma subconsulta? É uma consulta completa (um SELECT) que aparece aninhada dentro de outra consulta, chamada de consulta externa. A subconsulta pode estar em diversas cláusulas da instrução principal: na cláusula WHERE (para filtrar com base em um valor calculado), na cláusula HAVING (para filtrar grupos), na cláusula FROM (como uma tabela derivada) ou até mesmo na lista de seleção (como uma subconsulta escalar). A linguagem SQL não impõe um limite máximo de subconsultas por instrução — o que existe é um limite de profundidade de aninhamento em alguns SGBDs, mas isso não impede a inclusão de várias subconsultas no mesmo nível.
Por que isso é possível? Porque o SQL é uma linguagem declarativa: você descreve o resultado desejado, e o otimizador do banco decide como executar. Cada subconsulta é uma expressão que retorna um conjunto de valores, e essas expressões podem ser combinadas livremente na consulta externa. Não há nenhuma regra que restrinja a quantidade de subconsultas — a única limitação prática é o desempenho e, em alguns SGBDs, a profundidade máxima de aninhamento (por exemplo, o Oracle limita a 255 níveis de subconsultas aninhadas, mas isso é um limite de profundidade, não de quantidade).
Um exemplo concreto: imagine uma tabela de produtos com colunas Nome, Preco e FornecedorID. Você pode escrever uma consulta que usa duas subconsultas na cláusula WHERE — uma para encontrar o maior FornecedorID e outra para calcular o preço médio:
SELECT Nome_do_Produto, Preco
FROM Produtos
WHERE FornecedorID = (SELECT MAX(FornecedorID) FROM Produtos)
AND Preco > (SELECT AVG(preco) FROM Produtos);
Aqui, a instrução SELECT externa contém duas subconsultas internas, ambas na cláusula WHERE. Isso demonstra exatamente o que o item afirma: podem-se incluir várias subqueries internas na mesma instrução. Não há nenhuma restrição na sintaxe SQL que impeça isso.
A pegadinha que a banca explora neste tema é a confusão entre "várias subconsultas" e "subconsultas aninhadas umas dentro das outras". O item fala de incluir várias subconsultas na mesma instrução — o que é permitido. O candidato pode confundir com a ideia de que só é possível ter uma subconsulta por instrução, ou que subconsultas só podem aparecer na cláusula WHERE. Na verdade, subconsultas podem aparecer em várias cláusulas e em múltiplas ocorrências, sem limite de quantidade.
Guarde o critério decisivo: a linguagem SQL permite múltiplas subconsultas na mesma instrução, em diferentes cláusulas e níveis. É exatamente isso que o item afirma, e é por isso que ele está correto.
Subconsultas em SELECT
1O que é
SELECT aninhado em outra consulta
2Onde podem aparecer
WHERE (filtro)
HAVING (filtro de grupo)
FROM (tabela derivada)
Lista de seleção (escalar)
3Limites
Quantidade: sem limite
Profundidade
limitada por SGBD (ex.: Oracle 255 níveis)
LEVEL · soulevel.com.br
Item — ✅ CERTO
A afirmação está correta. O comando SELECT aceita múltiplas subconsultas internas na mesma instrução. Uma subconsulta é uma consulta aninhada dentro de outra instrução, e a sintaxe SQL permite que uma instrução SELECT contenha várias subconsultas, seja na cláusula WHERE, HAVING, FROM ou na lista de seleção. Não há limite de quantidade imposto pela linguagem padrão — apenas limites de profundidade de aninhamento em alguns SGBDs específicos, o que não impede a inclusão de várias subconsultas no mesmo nível.
SE LIGUE NESSA!
A distinção importante é entre quantidade e profundidade. "Várias subconsultas" refere-se a múltiplas ocorrências de subconsultas na mesma instrução — permitido. "Subconsultas aninhadas" refere-se a uma subconsulta dentro de outra subconsulta — também permitido, mas com limite de profundidade em alguns SGBDs (ex.: Oracle limita a 255 níveis). O item fala de quantidade, não de profundidade, e por isso está correto.