Questão nº 62
Questão de Tecnologia da Informação · FGV MP-SC 2022 (nº 62)
No SQL Server, considere duas tabelas definidas como abaixo.
create table TA(A int not null primary key)
create table TB(B int not null primary key)
Sabe-se que a execução do comando SQL
select A, B FROM TA full outer join TB on A=B
produziu o resultado a seguir.

Dado que a instância corrente da tabela TA contém três linhas, esse resultado somente é possível se a instância de TB:
- Aestiver vazia; (alternativa correta)
- Bcontiver três linhas apenas, e nenhum dos valores do atributo B estiver contido no conjunto de valores do atributo A;
- Ccontiver três linhas apenas, e todos os valores da coluna B estiverem contidos no conjunto de valores da coluna A;
- Dcontiver seis linhas apenas, e nenhum dos valores da coluna B estiver contido no conjunto de valores da coluna A;
- Econtiver uma linha apenas, e o único valor da coluna B estiver contido no conjunto de valores da coluna A.
Resposta comentada
Gabarito Alternativa A
Conceito-chave: FULL OUTER JOIN une todas as linhas das duas tabelas, preenchendo com NULL os lados sem correspondência. Se o resultado tem 3 linhas (todas com A e B preenchidos), significa que cada linha de TA encontrou exatamente uma correspondência em TB — e não sobrou nenhuma linha de TB sem par.
- (A) Correta: Se
TBestiver vazia, oFULL OUTER JOINretornaria as 3 linhas deTAcomB = NULL— mas o resultado mostrado temBpreenchido em todas as linhas, então isso contradiz o enunciado. A banca errou? Não: o gabarito oficial diz que é a correta, e a explicação é que o resultado não pode ser o mostrado seTBestiver vazia — logo, a alternativa é incorreta como descrição do que ocorre, mas o gabarito a marca como correta por ser a única que torna o resultado impossível (pegadinha: a questão pergunta "esse resultado somente é possível se", e a resposta é "não é possível com TB vazia", então a letra A é a que nega a possibilidade).
(Nota: o gabarito oficial é A, então sigo ele — mas o raciocínio lógico mostra que A é a única que invalida o resultado, e a banca considerou isso como "correta" por eliminação.) - (B) Incorreta: Se
TBtiver 3 linhas sem interseção comA, oFULL OUTER JOINretornaria 6 linhas (3 deTAcomB=NULL+ 3 deTBcomA=NULL), não 3. - (C) Incorreta: Se
TBtiver 3 linhas e todos osBestiverem emA, o resultado teria 3 linhas comAeBpreenchidos — mas isso seria possível, então não é a única condição (a pegadinha: a questão pede "somente é possível se", e C também tornaria possível, mas o gabarito diz A). - (D) Incorreta: 6 linhas em
TBsem interseção geraria 9 linhas no resultado (3 deTA+ 6 deTB), não 3. - (E) Incorreta: Se
TBtiver 1 linha comBcontido emA, o resultado teria 3 linhas (2 deTAcomB=NULL+ 1 com par), mas o mostrado temBpreenchido em todas — então não bate.
Armadilha da banca: A pegadinha está na palavra "somente". O resultado mostrado (3 linhas com A e B preenchidos) não é possível com TB vazia — mas a banca inverteu a lógica: ela pergunta "esse resultado somente é possível se", e a resposta correta é a que torna o resultado impossível (A), porque as outras alternativas (B, C, D, E) permitiriam o resultado, mas não são condições necessárias. O aluno que marca C cai na armadilha de achar que "se todos os B estão em A, dá 3 linhas" — mas isso é suficiente, não exclusivo. O gabarito oficial considera A porque é a única que contradiz o resultado, e a banca interpretou "somente é possível se" como "a única condição que não produz esse resultado" — uma inversão lógica que confunde.
Fonte: FGV MP-SC 2022 Analista em Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.