Analista Judiciário - Especialidade - Análise de Sistemas - Banco de Dados
Considere as tabelas T1 e T2, exibidas abaixo com suas
respectivas instâncias.
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 é:
A1;
B2;
C3;
D6;
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:
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.
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.