Questão nº 69

Questão de Fluência em Dados · FGV Receita Federal do Brasil 2023 - Manhã (nº 69)

FGV2023Analista-Tributário da Receita Federal do BrasilFluência em Dados
Gabarito: Aver comentário ↓

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:

```sql
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

Resposta comentada

Gabarito Alternativa A

Em SQL, o valor NULL representa um dado ausente ou desconhecido. Ao comparar qualquer valor (inclusive outro NULL) com NULL usando operadores de comparação padrão como =, !=, <, >, o resultado da comparação não é TRUE nem FALSE, mas sim UNKNOWN (desconhecido). A cláusula WHERE de uma consulta SQL só retorna as linhas para as quais a condição avalia como TRUE.

  • (A) Correta: A comparação t1.A = NULL sempre resulta em UNKNOWN, independentemente do valor de t1.A (seja ele NULL ou um valor não-nulo). O mesmo ocorre para t1.B = NULL. Assim, a condição completa t1.A = NULL or t1.B = NULL se torna UNKNOWN OR UNKNOWN, que também avalia para UNKNOWN. Como a cláusula WHERE só retorna linhas quando a condição é TRUE, e neste caso a condição nunca é TRUE, o número de linhas retornadas é 0.
  • (B) Incorreta: Esta alternativa sugere que algumas linhas seriam retornadas, o que contradiz o comportamento de NULL em comparações com o operador =.
  • (C) Incorreta: Esta é a armadilha da questão. A informação de que 50% das linhas (50 registros) possuem pelo menos uma coluna NULL induz a pensar que essas 50 linhas seriam retornadas. No entanto, isso só aconteceria se a consulta utilizasse t1.A IS NULL or t1.B IS NULL. O operador = não é a forma correta de verificar se um valor é NULL em SQL.
  • (D) Incorreta: Esta alternativa sugere um número arbitrário de linhas que não se alinha com a lógica de tratamento de NULL em SQL.
  • (E) Incorreta: Esta alternativa sugere que todas as 100 linhas seriam retornadas, o que não é possível, pois a condição não seria TRUE para nenhuma delas.

Fonte: FGV Receita Federal do Brasil 2023 - Manhã Analista-Tributário da Receita Federal do Brasil (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho