Pular para o conteúdo principal

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

Banco de DadosSQL
Código
fg086708
Banca
FGV
Órgão
MF
Ano
2024
Nível
Superior
Cargo
Auditor Federal de Finanças e Controle - Área de Tecnologia da Informação (Operação e Infraestrutura) - manhã
No contexto da lógica de três estados, normalmente utilizada em expressões lógicas que envolvem valores nulos, considere uma tabela relacional T com colunas X, Y, Z, com apenas uma linha, cujos valores das colunas são, respectivamente, 10, 20 e null.Assinale o comando que retornaria o valor 1 no resultado.
  1. Aselect 1 from T where (Z is null or Z = null)
  2. Bselect 1 from T where not Z is null or Y = 15
  3. Cselect 1 from T where not Z is null or Z = null
  4. Dselect 1 from T where Z < X or Z > X
  5. Eselect 1 from T where Z = null or Y <> null
Revelar gabarito e comentário

GabaritoA — select 1 from T where (Z is null or Z = null)

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

Lógica de três estados (NULL) em SQL

Gabarito: letra A. A única alternativa que retorna 1 é aquela cuja condição WHERE avalia para TRUE, considerando que comparações com NULL geram UNKNOWN. A expressão Z is null é TRUE (já que Z é NULL), e Z = null é UNKNOWN; a disjunção TRUE OR UNKNOWN resulta em TRUE, selecionando a única linha da tabela.

A lógica de três estados (TRUE, FALSE, UNKNOWN) é fundamental em SQL para lidar com valores nulos. Comparações diretas com = ou <> contra NULL nunca retornam TRUE, apenas UNKNOWN. Já os operadores IS NULL e IS NOT NULL retornam TRUE ou FALSE corretamente.

Alternativa A — ✅ Correta ⟵ GABARITO

A condição (Z is null or Z = null) é avaliada como TRUE OR UNKNOWN = TRUE. Como Z is null é verdadeiro (Z é NULL), toda a expressão é TRUE, e a linha é retornada.

Alternativa B — ❌ Incorreta

A expressão not Z is null or Y = 15 equivale a FALSE OR FALSE = FALSE. NOT (Z is null) é FALSE (porque Z é nulo), e Y = 15 é FALSE (Y=20). Nenhuma linha retornada.

Alternativa C — ❌ Incorreta

not Z is null or Z = nullFALSE OR UNKNOWN = UNKNOWN. A condição não é TRUE, portanto a linha não é selecionada.

Alternativa D — ❌ Incorreta

Ambas as comparações com NULL geram UNKNOWN: Z < X (NULL < 10) = UNKNOWN, Z > X (NULL > 10) = UNKNOWN. UNKNOWN OR UNKNOWN = UNKNOWN. Nenhuma linha.

Alternativa E — ❌ Incorreta

Z = null é UNKNOWN, Y <> null também é UNKNOWN. UNKNOWN OR UNKNOWN = UNKNOWN. Nenhuma linha.

NÃO CAIA NESSA!

A banca testa se você sabe que Z = null nunca é verdadeiro, mesmo quando Z é NULL. Candidatos desatentos podem pensar que = null funciona como IS NULL, mas o correto é usar IS NULL. Além disso, OR com UNKNOWN pode surpreender: a tabela-verdade mostra que TRUE OR UNKNOWN = TRUE, FALSE OR UNKNOWN = UNKNOWN. Memorize esses casos para não errar.

Gabarito: letra A

Link permanente: /questoes/fg086708