Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2023

Banco de DadosSQL
Código
fg072603
Banca
FGV
Órgão
TJ-SE
Ano
2023
Nível
Superior
Cargo
Analista Judiciário - Especialidade - Análise de Sistemas - Banco de Dados

Considere as tabelas T1 e T2, exibidas abaixo com suas respectivas instâncias. 



Imagem da questão

De acordo com a tabela T1, descrita anteriormente, analise o comando SQL a seguir.select * from T1UNION ALLselect * from T1UNIONselect * from T1Afora os títulos, o número de linhas produzidas pela execução do comando acima é:
  1. A1;
  2. B2;
  3. C3;
  4. D6;
  5. E9.
Revelar gabarito e comentário

GabaritoC — 3;

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 em SQL

Gabarito: letra C. O comando executa UNION ALL entre as duas primeiras consultas (somando as linhas, sem eliminar duplicatas) e depois UNION com a terceira (eliminando duplicatas). Como a tabela T1 tem 3 linhas, o resultado final tem 3 linhas — a alternativa C.

O operador UNION combina os resultados de duas ou mais consultas e remove linhas duplicadas, aplicando implicitamente um SELECT DISTINCT no resultado final. Já o UNION ALL combina os resultados sem remover duplicatas, retornando todas as linhas de todas as consultas. Essa é a diferença central que a questão explora.

Vamos analisar o comando passo a passo:

  1. select * from T1 UNION ALL select * from T1 — a primeira parte usa UNION ALL, que simplesmente concatena os resultados das duas consultas. Como cada select * from T1 retorna 3 linhas, essa primeira união produz 6 linhas (3 + 3), incluindo as duplicadas.

  1. O resultado dessa primeira união (6 linhas) é então combinado com select * from T1 usando UNION. O UNION elimina as linhas duplicadas de todo o conjunto. Como as 6 linhas da primeira parte são compostas por 3 linhas distintas repetidas duas vezes, e a terceira consulta traz as mesmas 3 linhas, o UNION reduz tudo para as 3 linhas distintas originais.

Portanto, o número de linhas produzidas é 3.

A pegadinha aqui é que muitos candidatos contam as linhas como se todas as operações fossem UNION ALL (resultando em 9 linhas) ou como se a primeira operação fosse UNION (resultando em 3 + 3 = 6 linhas). A ordem das operações é crucial: primeiro se resolve o UNION ALL (que soma), depois o UNION (que elimina duplicatas).

Alternativa A — ❌ Incorreta

Afirma que o resultado tem 1 linha. Isso seria o caso se a tabela T1 tivesse apenas 1 linha, mas a tabela tem 3 linhas. O UNION não reduz o resultado a uma única linha; ele apenas remove duplicatas.

Alternativa B — ❌ Incorreta

Afirma que o resultado tem 2 linhas. Não há nenhuma operação que reduza o resultado a 2 linhas. A tabela T1 tem 3 linhas distintas, e o UNION final preserva todas elas.

Alternativa C — ✅ Correta ⟵ GABARITO

O resultado final tem 3 linhas. A primeira parte (UNION ALL) produz 6 linhas (3 + 3), e o UNION com a terceira consulta elimina as duplicatas, resultando nas 3 linhas distintas da tabela T1.

Alternativa D — ❌ Incorreta

Afirma que o resultado tem 6 linhas. Isso seria o resultado da primeira parte (UNION ALL), mas o UNION final reduz o total para 3 linhas. O candidato que marca esta alternativa provavelmente ignorou o UNION final.

Alternativa E — ❌ Incorreta

Afirma que o resultado tem 9 linhas. Isso seria o resultado se todas as operações fossem UNION ALL (3 + 3 + 3 = 9). No entanto, o UNION final elimina as duplicatas, resultando em 3 linhas.

NÃO CAIA NESSA!

A banca explora a confusão entre UNION e UNION ALL. O candidato que não percebe que o UNION final elimina duplicatas marca a alternativa E (9 linhas), enquanto o que ignora o UNION ALL inicial marca a alternativa D (6 linhas). A ordem das operações é a chave: primeiro soma com UNION ALL, depois elimina com UNION.

PEGA ESSA DICA!

Em questões com múltiplos UNION/UNION ALL, resolva da esquerda para a direita, aplicando cada operador ao resultado acumulado. Lembre-se: UNION ALL soma, UNION elimina duplicatas. Se a tabela tem N linhas distintas, o resultado final de uma cadeia que termina com UNION será no máximo N linhas.

Gabarito: letra C

Link permanente: /questoes/fg072603