Pular para o conteúdo principal

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

Banco de DadosSQL
Código
fg051453
Banca
FGV
Órgão
SEAD-AP
Ano
2022
Nível
Superior
Cargo
Perito Criminal - Ciência da Computação - Analista de Sistema
Considere que a tabela relacional T:(1) contém 100 linhas na sua instância corrente; (2) possui uma coluna A que é uma chave primária e não aceita nulos; e (3) a configuração do ambiente de consultas SQL trata valores nulos (NULL) como unknown.Nesse contexto, assinale os números mínimos e máximos, respectivamente, de linhas que seriam produzidas pela execução do comandoSELECT * FROM T WHERE A = NULLUNIONSELECT * FROM T WHERE A <> NULL
  1. A0 e 0.
  2. B0 e 1.
  3. C1 e 1.
  4. D0 e 100.
  5. E1 e 100.
Revelar gabarito e comentário

GabaritoA — 0 e 0.

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”.

SQL: Tratamento de NULL e operador UNION

Gabarito: letra A. A consulta SELECT * FROM T WHERE A = NULL retorna 0 linhas, pois qualquer comparação com NULL usando = ou <> resulta em UNKNOWN, e o WHERE exige TRUE. O mesmo ocorre com A <> NULL. Como ambas as partes do UNION retornam vazio, o resultado total é 0 linhas, independentemente de haver 100 linhas na tabela. Portanto, os números mínimos e máximos são ambos 0.

A banca testa o conhecimento de que NULL não é um valor, mas a ausência de valor. Em SQL, a lógica de três estados (TRUE, FALSE, UNKNOWN) faz com que comparações diretas com NULL nunca sejam verdadeiras. Para testar NULL, usa-se IS NULL ou IS NOT NULL.

Alternativa A — ✅ Correta ⟵ GABARITO

Conforme explicado, ambas as condições filtram 0 linhas, logo o UNION também resulta em 0 linhas. O mínimo e máximo coincidem em 0.

Alternativa B — ❌ Incorreta

Sugere máximo de 1 linha. Isso ocorreria apenas se uma das partes retornasse 1 linha, o que não é o caso, pois a comparação com NULL nunca é TRUE.

Alternativa C — ❌ Incorreta

Afirma que o resultado é exatamente 1 linha. Isso seria possível se a tabela tivesse exatamente uma linha com A não nulo que satizfizesse a condição, mas nenhuma condição é satisfeita.

Alternativa D — ❌ Incorreta

Considera que o UNION eliminaria duplicatas e poderia retornar até 100 linhas. Ignora que as consultas individuais retornam zero linhas.

Alternativa E — ❌ Incorreta

Máximo de 100 linhas, mas novamente as consultas individuais retornam zero.

NÃO CAIA NESSA!

Em provas de SQL, ao ver = NULL ou <> NULL, lembre-se: a condição sempre resulta em UNKNOWN, portanto nunca retorna linhas. Use IS NULL e IS NOT NULL para testar nulos. Essa é uma pegadinha clássica.

Gabarito: letra A

Link permanente: /questoes/fg051453