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
qa537503
Banca
FUNDATEC
Órgão
CIGA SC
Ano
2023
Cargo
Prog ( )

Considere uma tabela chamada tabela1 com campo chamado c1 com o seguinte conteúdo:

 
c1
1
2
1
3
 

Considere as seguintes consultas SQL:

 

I. select * from tabela1

union

select * from tabela1

 

II. select * from tabela1

union all

select * from tabela1

 

III. select * from tabela1

distinct union

select * from tabela1

 

Quais consultas acima geram o resultado abaixo?

 
c1
1
2
3

  1. AConsultas I e II.
  2. BConsultas I e III.
  3. CApenas a consulta I.
  4. DApenas a consulta II.
  5. EApenas a consulta III.
Revelar gabarito e comentário

GabaritoC — Apenas a consulta I.

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 UNION e UNION ALL no SQL

Gabarito: letra C. Apenas a consulta I gera o resultado esperado (1, 2, 3), pois o operador UNION combina os resultados de duas consultas eliminando linhas duplicadas, enquanto o UNION ALL mantém todas as linhas, inclusive as repetidas. A consulta III é inválida porque a sintaxe DISTINCT UNION não existe no SQL padrão.

O comando UNION é um operador de conjunto que combina os resultados de duas ou mais consultas SELECT, retornando apenas linhas distintas. Isso significa que, se a mesma linha aparecer em ambas as consultas, ela será exibida apenas uma vez no resultado final. Já o UNION ALL também combina os resultados, mas preserva todas as linhas, incluindo as duplicadas. Essa é a diferença fundamental entre os dois operadores.

Vamos analisar o caso concreto. A tabela tabela1 possui os valores 1, 2, 1 e 3 na coluna c1. A consulta I (UNION) une a tabela com ela mesma, eliminando as duplicatas: o valor 1 aparece duas vezes na tabela original, mas no resultado do UNION ele aparece apenas uma vez. O resultado final é 1, 2, 3 — exatamente o que o enunciado pede. A consulta II (UNION ALL) une a tabela com ela mesma sem eliminar duplicatas, resultando em 1, 2, 1, 3, 1, 2, 1, 3 — o que não corresponde ao resultado esperado. A consulta III é inválida porque a sintaxe DISTINCT UNION não é reconhecida pelo SQL padrão; o DISTINCT é uma cláusula do SELECT, não um modificador do UNION.

A pegadinha desta questão está em confundir UNION com UNION ALL. Muitos candidatos lembram que o UNION elimina duplicatas, mas esquecem que o UNION ALL não elimina. Além disso, a consulta III é uma armadilha clássica: a banca inventa uma sintaxe que parece plausível, mas que não existe no SQL. É importante memorizar que o UNION e o UNION ALL são os únicos operadores de união válidos, e que o DISTINCT não pode ser usado diretamente com eles.

Guarde a distinção central: UNION = elimina duplicatas; UNION ALL = mantém todas as linhas. É exatamente essa diferença que separa as alternativas desta questão.

1UNION
Combina resultados
Elimina duplicatas
2UNION ALL
Combina resultados
Mantém todas as linhas
3DISTINCT UNION
Sintaxe inválida
Operadores de união
LEVELsoulevel.com.br
Operadores de união: UNION (Combina resultados, Elimina duplicatas); UNION ALL (Combina resultados, Mantém todas as linhas); DISTINCT UNION (Sintaxe inválida)

Alternativa A — ❌ Incorreta

Afirma que as consultas I e II geram o resultado esperado. A consulta II (UNION ALL) não elimina duplicatas, portanto retornaria 1, 2, 1, 3, 1, 2, 1, 3 — não o resultado 1, 2, 3. O erro está em considerar que o UNION ALL também elimina duplicatas, o que é falso.

Alternativa B — ❌ Incorreta

Afirma que as consultas I e III geram o resultado esperado. A consulta III é inválida porque a sintaxe DISTINCT UNION não existe no SQL padrão. O DISTINCT é uma cláusula do SELECT, não um modificador do UNION. Portanto, a consulta III não geraria resultado algum — ela simplesmente falharia ao ser executada.

Alternativa C — ✅ Correta ⟵ GABARITO

Apenas a consulta I (UNION) gera o resultado esperado. O UNION combina os resultados das duas consultas e elimina linhas duplicadas. Como a tabela original tem os valores 1, 2, 1, 3, o UNION retorna apenas 1, 2, 3 — exatamente o resultado pedido no enunciado.

Alternativa D — ❌ Incorreta

Afirma que apenas a consulta II gera o resultado esperado. A consulta II (UNION ALL) não elimina duplicatas, portanto retornaria 1, 2, 1, 3, 1, 2, 1, 3 — não o resultado 1, 2, 3. O erro está em acreditar que o UNION ALL também elimina duplicatas.

Alternativa E — ❌ Incorreta

Afirma que apenas a consulta III gera o resultado esperado. A consulta III é inválida porque a sintaxe DISTINCT UNION não existe no SQL padrão. O DISTINCT é uma cláusula do SELECT, não um modificador do UNION. Portanto, a consulta III não geraria resultado algum — ela simplesmente falharia ao ser executada.

NÃO CAIA NESSA!

A banca explora a confusão entre UNION e UNION ALL. O candidato que sabe que o UNION elimina duplicatas pode achar que o UNION ALL também elimina, mas não é verdade. Além disso, a consulta III é uma armadilha: a sintaxe DISTINCT UNION não existe, mas parece plausível para quem não domina o assunto. Com treino, você reconhece essas armadilhas de longe 💪.

NÃO CAIA NESSA!

Para questões sobre UNION e UNION ALL, lembre-se: UNION = elimina duplicatas; UNION ALL = mantém todas as linhas. Se a questão pedir um resultado sem repetições, use UNION; se pedir todas as linhas, use UNION ALL. E desconfie de sintaxes inventadas como DISTINCT UNION — elas quase sempre são pegadinhas.

Gabarito: letra C

Link permanente: /questoes/qa537503