Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — FUNDATEC 2023

Banco de DadosConsultas e Comandos em SQL
Código
qa537600
Banca
FUNDATEC
Órgão
COMUSA
Ano
2023
Cargo
Tec ( )
Na linguagem SQL, qual operador pode ser utilizado para combinar o conjunto de resultados de duas ou mais instruções SELECT, permitindo valores duplicados?
  1. AUNION ALL
  2. BGROUP BY
  3. CANY
  4. DFULL JOIN
  5. EDISTINCT
Revelar gabarito e comentário

GabaritoA — UNION ALL

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”.

Operadores de Conjuntos em SQL: UNION e UNION ALL

Gabarito: letra A. O operador UNION ALL combina o conjunto de resultados de duas ou mais instruções SELECT permitindo valores duplicados, pois não executa a eliminação de linhas repetidas que o UNION padrão realiza (equivalente a um SELECT DISTINCT). A distinção central está no tratamento das duplicatas: UNION elimina, UNION ALL preserva.

Os operadores de conjunto em SQL — UNION, UNION ALL, INTERSECT e EXCEPT — permitem combinar os resultados de duas ou mais consultas em um único conjunto de resultados. Eles são fundamentais para manipular dados provenientes de diferentes fontes ou condições em uma mesma consulta. A regra essencial para utilizá-los é que as consultas envolvidas devem ter o mesmo número de colunas, na mesma ordem e com tipos de dados compatíveis — não é necessário que os nomes das colunas sejam idênticos, apenas que a estrutura seja compatível.

O operador UNION combina os resultados e, por padrão, executa um SELECT DISTINCT no resultado final, eliminando as linhas duplicadas. Isso significa que, mesmo que não haja registros duplicados, o processo de verificação e eliminação é executado. Já o UNION ALL tem a mesma funcionalidade de combinar resultados, porém não executa a eliminação de duplicatas, apresentando todas as linhas, inclusive as repetidas. Essa é a diferença crucial que a questão explora.

Para ilustrar, considere duas consultas que retornam as cidades 'Berlin' e 'México D.F.' cada uma. Com UNION, o resultado teria apenas uma ocorrência de cada cidade; com UNION ALL, o resultado teria duas ocorrências de cada, pois as duplicatas são preservadas. Essa distinção é essencial quando se deseja manter todas as ocorrências, como em relatórios que precisam contabilizar cada registro individualmente.

A pegadinha da banca está em confundir UNION com UNION ALL, ou em associar a eliminação de duplicatas ao UNION ALL. O candidato que memoriza apenas que "UNION junta resultados" pode marcar a alternativa errada, sem perceber que o UNION padrão elimina duplicatas. A palavra-chave no enunciado é "permitindo valores duplicados", que aponta diretamente para o UNION ALL.

Guarde a fronteira: UNION = DISTINCT implícito (elimina duplicatas); UNION ALL = mantém todas as linhas (permite duplicatas). É exatamente nessa distinção que as alternativas se dividem.

1UNION
Elimina duplicatas (DISTINCT implícito)
2UNION ALL
Permite duplicatas
3INTERSECT
Registros comuns
4EXCEPT
Registros exclusivos do 1º
5Regra essencial
Mesmo nº de colunas
Mesma ordem
Tipos compatíveis
Operadores de conjunto SQL
LEVELsoulevel.com.br
Operadores de conjunto SQL: UNION (Elimina duplicatas (DISTINCT implícito)); UNION ALL (Permite duplicatas); INTERSECT (Registros comuns); EXCEPT (Registros exclusivos do 1º); Regra essencial (Mesmo nº de colunas, Mesma ordem, Tipos compatíveis)

Alternativa A — ✅ Correta ⟵ GABARITO

O UNION ALL é o operador que combina os resultados de duas ou mais instruções SELECT permitindo valores duplicados. Conforme a definição, ele tem a mesma funcionalidade do UNION, porém não executa o SELECT DISTINCT no resultado e apresenta todas as linhas, inclusive as linhas duplicadas. É exatamente o que o enunciado pede.

Alternativa B — ❌ Incorreta

O GROUP BY é uma cláusula utilizada para agrupar linhas que possuem os mesmos valores em colunas específicas, geralmente em conjunto com funções de agregação (COUNT, SUM, AVG, etc.). Ele não combina resultados de consultas distintas e não tem relação com a permissão de duplicatas — na verdade, o agrupamento tende a consolidar linhas, não a preservá-las.

Alternativa C — ❌ Incorreta

O operador ANY é utilizado em subconsultas para comparar um valor com qualquer um dos valores retornados pela subconsulta (ex.: WHERE preco > ANY (SELECT preco FROM ...)). Ele não combina conjuntos de resultados de consultas independentes e não tem relação com duplicatas.

Alternativa D — ❌ Incorreta

O FULL JOIN (ou FULL OUTER JOIN) é um tipo de junção entre tabelas que retorna todos os registros de ambas as tabelas, preenchendo com NULL os campos sem correspondência. Ele combina colunas de tabelas diferentes com base em uma condição de junção, não combina resultados de consultas independentes como os operadores de conjunto. Além disso, não há relação com a permissão de duplicatas.

Alternativa E — ❌ Incorreta

O DISTINCT é uma cláusula que elimina valores duplicados do resultado de uma consulta, retornando apenas valores distintos. Ele faz exatamente o oposto do que o enunciado pede — em vez de permitir duplicatas, ele as remove. É o comportamento implícito do UNION, não do UNION ALL.

Gabarito: letra A

Link permanente: /questoes/qa537600