Pular para o conteúdo principal

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

Banco de DadosSQL
Código
fg067747
Banca
FGV
Órgão
Receita Federal
Ano
2023
Nível
Superior
Cargo
Analista-Tributário (manhã)
Os principais Sistemas Gerenciadores de Bancos de Dados oferecem total suporte à linguagem SQL. Um aspecto importante da implementação do SQL é o tratamento para valores nulos quando esses são considerados como unknown values.Nesse contexto, considere uma tabela T com colunas A e B, que podem conter valores nulos. T possui 100 registros e, em 50% das linhas, há pelo menos uma coluna preenchida com o valor NULL. Considere a consulta a seguir:SELECT * FROM T t1 WHERE t1.A = NULL or t1.B = NULL O número máximo de linhas de resultados que seriam retornadas pela consulta é igual a
  1. A0.
  2. B25.
  3. C50.
  4. D75.
  5. E100.
Revelar gabarito e comentário

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

Tratamento de valores nulos em SQL

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.

Alternativa A — ✅ Correta ⟵ GABARITO

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.

Alternativa B — ❌ Incorreta

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.

Alternativa C — ❌ Incorreta

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.

Alternativa D — ❌ Incorreta

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.

Alternativa E — ❌ Incorreta

100 linhas: a consulta não seleciona todas as linhas, pois a condição nunca é satisfeita.

NÃO CAIA NESSA!

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.

PEGA ESSA DICA!

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