Questão de Banco de Dados — Banco de Dados Relacionais — FGV 2025
- Código
- fg120693
- Banca
- FGV
- Órgão
- SEFAZ-PR
- Ano
- 2025
- Nível
- Superior
- Cargo
- Auditor Fiscal (Tarde)
- AI, apenas.
- BII, apenas.
- CI e II, apenas.
- DII e III, apenas.
- EI, II e III.
GabaritoB — II, apenas.
Gabarito: letra B. Apenas a afirmativa II está correta. COUNT(coluna) conta apenas valores não nulos da coluna; a comparação <> NULL é inválida em SQL, devendo ser usado IS NOT NULL; já NULLIF(comissao, 0) retorna NULL se o valor for zero, conforme a especificação.
A banca testa o conhecimento sobre funções de agregação e o tratamento de NULL no SQL.
Afirmativa | Conteúdo | Correção | Motivo |
|---|---|---|---|
I |
| ❌ Incorreta |
|
II |
| ✅ Correta | A função retorna NULL se os dois argumentos forem iguais; caso contrário, retorna o primeiro argumento. |
III |
| ❌ Incorreta | Comparações com |
SELECT COUNT(salario) FROM funcionarios; conta apenas os registros onde salario não é NULL. Como a tabela pode conter valores nulos nesse campo, o resultado não é necessariamente o total de registros. Para contar todos os registros, deve-se usar COUNT(*) ou COUNT(1).
NULLIF(comissao, 0) retorna NULL se comissao for igual a 0; caso contrário, retorna o próprio valor de comissao. Ou seja, converte o valor zero em NULL, deixando os demais intactos. Exato.
Em SQL, comparações com NULL usando = ou <> nunca resultam em verdadeiro — o resultado é sempre UNKNOWN. A cláusula WHERE nome <> NULL não retorna nenhuma linha. Para filtrar valores não nulos, deve-se usar WHERE nome IS NOT NULL. É um erro clássico de quem está aprendendo SQL.
A afirmativa III explora a confusão entre o operador de comparação <> e o operador IS NOT NULL. Lembre-se: NULL não é um valor, então não pode ser comparado com = ou <>; use exclusivamente IS NULL e IS NOT NULL.
Gabarito: letra B — apenas a afirmativa II está correta.
Link permanente: /questoes/fg120693