Pular para o conteúdo principal

Questão de Banco de Dados — Banco de Dados Relacionais — FGV 2025

Banco de DadosBanco de Dados Relacionais
Código
fg120693
Banca
FGV
Órgão
SEFAZ-PR
Ano
2025
Nível
Superior
Cargo
Auditor Fiscal (Tarde)
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
  1. AI, apenas.
  2. BII, apenas.
  3. CI e II, apenas.
  4. DII e III, apenas.
  5. EI, II e III.
Revelar gabarito e comentário

GabaritoB — II, apenas.

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 faltantes em SQL

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

SELECT COUNT(salario) FROM funcionarios; conta todos os registros da tabela.

❌ Incorreta

COUNT(coluna) conta apenas valores não nulos da coluna; para contar todos os registros, usa-se COUNT(*) ou COUNT(1).

II

NULLIF(comissao, 0) retorna NULL apenas quando comissao é exatamente zero.

✅ Correta

A função retorna NULL se os dois argumentos forem iguais; caso contrário, retorna o primeiro argumento.

III

WHERE nome <> NULL é adequado para retornar nomes não nulos.

❌ Incorreta

Comparações com = ou <> e NULL sempre resultam em UNKNOWN; deve-se usar IS NOT NULL.

Afirmativa I — ❌ Incorreta

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).

Afirmativa II — ✅ Correta ⟵ GABARITO

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.

Afirmativa III — ❌ Incorreta

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.

NÃO CAIA NESSA!

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