Questão de Banco de Dados — SQL — FGV 2023
- Código
- fg067747
- Banca
- FGV
- Órgão
- Receita Federal
- Ano
- 2023
- Nível
- Superior
- Cargo
- Analista-Tributário (manhã)
- A0.
- B25.
- C50.
- D75.
- E100.
GabaritoA — 0.
Gabarito: letra A (0 linhas). Em SQL, comparações com o operador = envolvendo NULL sempre resultam em UNKNOWN (falso), nunca em TRUE. Portanto, a condição WHERE t1.A = NULL OR t1.B = NULL nunca é satisfeita, retornando zero linhas, independentemente da quantidade de valores nulos na tabela. O correto seria usar IS NULL.
A banca testa o conhecimento da lógica de três valores do SQL (TRUE, FALSE, UNKNOWN). Mesmo que 50 linhas tenham ao menos uma coluna nula, a consulta não as seleciona porque = NULL não captura nulos.
A condição t1.A = NULL nunca é verdadeira, pois NULL = NULL não é TRUE, é UNKNOWN. Logo, nenhuma linha atende ao filtro. Número máximo de linhas: 0.
25 linhas: valor sem relação com a lógica de nulos. A consulta não filtra por contagem de campos nulos, e sim por uma condição que nunca é verdadeira.
50 linhas: corresponde à quantidade de registros com pelo menos uma coluna nula, mas a consulta não os retornaria porque a comparação = NULL não os seleciona.
75 linhas: não há fundamento. Se 50 linhas têm nulos e 50 não, 75 não corresponde a nenhum subconjunto lógico.
100 linhas: a consulta não seleciona todas as linhas, pois a condição nunca é satisfeita.
A banca explora o erro clássico de iniciantes: achar que = NULL funciona para testar nulos. Em SQL, o operador correto é IS NULL. A condição = NULL é sempre UNKNOWN, nunca TRUE, por mais que o valor da coluna seja nulo. Sempre desconfie de alternativas que usam = NULL em SQL.
Grave: "NULL não é igual a nada, nem a NULL". Para verificar nulos, use IS NULL ou IS NOT NULL. Comparações aritméticas (=, <, >) com NULL resultam em UNKNOWN. Isso é regra fundamental do padrão SQL e cai com frequência.
Gabarito: letra A
Link permanente: /questoes/fg067747