← Questões de Banco de Dados

Banco de Dados · FGV · 2025

Questão comentada de Banco de Dados

Considere a tabela funcionarios, que possui os campos id (inteiro), nome (texto), salario (numérico) e comissao (numérico). Sobre o tratamento de valores faltantes em SQL, analise as afirmativas a seguir. I. A instrução SELECT COUNT(salario) FROM funcionarios; conta todos os registros da tabela funcionarios. II. A expressão NULLIF(comissao, 0) retorna NULL apenas quando o valor de comissao é exatamente igual a zero. III. A cláusula WHERE nome <> NULL é adequada para retornar todos os nomes não nulos em uma tabela. Está correto o que se afirma em

Gabarito: B

Em SQL, valores NULL exigem cuidado porque eles não se comportam como um valor comum. Não dá para comparar NULL com "=" ou "<>" como se fosse número ou texto normal, então a lógica precisa usar IS NULL ou IS NOT NULL. Essa é a clássica armadilha de prova: o banco parece obedecer, mas ele está só seguindo a lógica ternária do SQL. Na afirmativa I, o erro é achar que COUNT(salario) conta todas as linhas. Na verdade, COUNT(coluna) conta apenas os registros em que a coluna informada não é NULL. Se a ideia fosse contar todas as linhas da tabela, o correto seria COUNT(*). Então I está errada. Na afirmativa II, NULLIF(comissao, 0) funciona exatamente assim: se comissao for igual a 0, o resultado vira NULL; se for diferente de 0, retorna o próprio valor de comissao. Portanto, a afirmação está correta. Na afirmativa III, a expressão nome <> NULL não é adequada, porque comparações com NULL não produzem verdadeiro ou falso de forma útil em SQL, mas sim resultado desconhecido. Para filtrar nomes não nulos, o correto é usar WHERE nome IS NOT NULL. Logo, só a II está certa, confirmando o gabarito B.

Continue treinando

Questões relacionadas