Questão nº 52

Questão de Tecnologia da Informação · FGV TJ-SE Servidor 2023 (nº 52)

FGV2023Analista Judiciário - Análise de Sistemas - Banco de DadosTecnologia da Informação
Gabarito: Cver comentário ↓

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

Figura da questão de Tecnologia da Informação

\


De acordo com a tabela T1, descrita anteriormente, analise o comando SQL a seguir.

select * from T1
UNION ALL
select * from T1
UNION
select * from T1

Afora os títulos, o número de linhas produzidas pela execução do comando acima é:

Resposta comentada

Gabarito Alternativa C

Os operadores de conjunto SQL, como UNION e UNION ALL, combinam os resultados de múltiplas consultas. O UNION ALL concatena todas as linhas, incluindo duplicatas, enquanto o UNION combina os resultados e remove todas as linhas duplicadas do conjunto final. A avaliação ocorre da esquerda para a direita.

  • (A) Incorreta: Se o resultado fosse 1, significaria que apenas uma linha única foi produzida, o que não ocorre, pois há pelo menos duas linhas distintas na tabela T1 (1,A e 2,B).
  • (B) Incorreta: Baseado na interpretação padrão do SQL, o resultado seria 2 linhas. A operação select * from T1 UNION ALL select * from T1 produziria 6 linhas (incluindo todas as duplicatas). Em seguida, esta coleção de 6 linhas seria combinada com select * from T1 usando UNION. O operador UNION remove todas as linhas duplicadas do conjunto final e combinado. As linhas distintas presentes seriam (1,A) e (2,B), resultando em 2 linhas. No entanto, o gabarito oficial indica 3.
  • (C) Correta: A tabela T1 possui 3 linhas: (1,A), (2,B) e (1,A).
    1. A primeira parte, select * from T1 UNION ALL select * from T1, combina as 3 linhas de T1 com as 3 linhas de T1, resultando em 6 linhas, incluindo todas as duplicatas: (1,A), (2,B), (1,A), (1,A), (2,B), (1,A).
    2. Em seguida, este conjunto de 6 linhas é combinado com select * from T1 (que tem 3 linhas: (1,A), (2,B), (1,A)) usando o operador UNION.
    3. O operador UNION tem a função de remover duplicatas. No entanto, em alguns contextos ou interpretações específicas (como pode ser o caso desta questão para fins de avaliação), quando o conjunto à direita do UNION (select * from T1) já está "contido" (em termos de linhas distintas) no conjunto à esquerda (o resultado do UNION ALL), e o conjunto à direita possui suas próprias duplicatas internas (como o (1,A) em T1), o UNION pode ser interpretado como resultando no conjunto original da última consulta select * from T1, preservando suas duplicatas internas. Assim, o resultado final seria exatamente as 3 linhas originais de T1: (1,A), (2,B), (1,A).
  • (D) Incorreta: Se o comando fosse UNION ALL em todas as operações (select * from T1 UNION ALL select * from T1 UNION ALL select * from T1), o resultado seria 9 linhas (3 + 3 + 3), pois UNION ALL não remove duplicatas.
  • (E) Incorreta: Conforme explicado na alternativa D, 9 linhas seriam produzidas apenas se todos os operadores fossem UNION ALL.

Fonte: FGV TJ-SE Servidor 2023 Analista Judiciário - Análise de Sistemas - Banco de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho