Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — FUNDATEC 2023

Banco de DadosConsultas e Comandos em SQL
Código
qa538179
Banca
FUNDATEC
Órgão
CAU RS
Ano
2023
Cargo
Ana Sup ( )
Na linguagem SQL, qual operador pode ser utilizado para verificar se o valor de um campo é diferente de nulo?
  1. A<>
  2. BIS NOT NULL
  3. CNOT EXISTS
  4. D<NULLABLE>
  5. E!=
Revelar gabarito e comentário

GabaritoB — IS NOT NULL

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

Operadores SQL: verificação de valores nulos

Gabarito: letra B. O operador IS NOT NULL é o único, entre os listados, capaz de verificar corretamente se um campo é diferente de nulo, pois a comparação com NULL não pode ser feita com operadores de igualdade/desigualdade comuns (=, <>, !=), que retornam UNKNOWN (desconhecido) em vez de verdadeiro ou falso. Essa é a regra fundamental da lógica de três valores do SQL, e é exatamente o que a questão testa.

Na linguagem SQL, NULL não representa um valor, mas a ausência de valor — um campo desconhecido ou inexistente. Por isso, qualquer comparação direta com NULL usando operadores relacionais comuns (=, <>, !=, <, >) resulta em UNKNOWN, um terceiro estado lógico que não é nem verdadeiro nem falso. Como a cláusula WHERE só retorna as linhas para as quais a condição é verdadeira, uma comparação que resulta em UNKNOWN simplesmente não seleciona nenhuma linha — mesmo que o campo tenha um valor não nulo.

Para lidar com essa peculiaridade, o SQL fornece os operadores específicos IS NULL e IS NOT NULL. O primeiro testa se o valor é nulo; o segundo, se o valor não é nulo. Eles são os únicos meios corretos de fazer essa verificação, pois operam diretamente sobre o estado de nulidade, e não sobre o valor em si.

Um exemplo prático: considere uma tabela Cliente com o campo Telefone. Para retornar apenas os clientes que possuem telefone cadastrado, a consulta correta é SELECT * FROM Cliente WHERE Telefone IS NOT NULL. Se tentássemos SELECT * FROM Cliente WHERE Telefone <> NULL, o resultado seria vazio, pois a comparação Telefone <> NULL sempre retorna UNKNOWN, independentemente de o telefone existir ou não.

A pegadinha clássica da banca é justamente oferecer os operadores de desigualdade (<> e !=) como se fossem equivalentes a IS NOT NULL. O candidato que não domina a lógica de três valores do SQL tende a escolher essas opções, caindo na armadilha. Lembre-se: nunca compare NULL com operadores relacionais comuns — use sempre IS NULL ou IS NOT NULL.

Alternativa A — ❌ Incorreta

O operador <> (diferente) é um operador relacional comum. Quando usado para comparar um campo com NULL, o resultado é UNKNOWN, não verdadeiro. Portanto, campo <> NULL nunca retorna linhas, mesmo que o campo tenha valores não nulos. A forma correta de verificar se um campo é diferente de nulo é IS NOT NULL.

Alternativa B — ✅ Correta ⟵ GABARITO

O operador IS NOT NULL é a sintaxe padrão do SQL para verificar se um campo possui um valor não nulo. Ele é o oposto direto de IS NULL e é a única forma correta de testar a não-nulidade. A consulta SELECT * FROM tabela WHERE campo IS NOT NULL retorna todas as linhas em que o campo não é nulo.

Alternativa C — ❌ Incorreta

O operador NOT EXISTS é usado para verificar se uma subconsulta não retorna nenhuma linha. Ele é tipicamente utilizado em consultas correlacionadas para testar a existência de registros relacionados, não para verificar a nulidade de um campo. Por exemplo, SELECT * FROM A WHERE NOT EXISTS (SELECT 1 FROM B WHERE B.id = A.id) retorna as linhas de A que não possuem correspondência em B. Não tem relação com a verificação de valores nulos.

Alternativa D — ❌ Incorreta

<NULLABLE> não é um operador válido na linguagem SQL. Trata-se de um distrator inventado pela banca, sem qualquer significado na sintaxe padrão. Não existe tal construção para verificar nulidade ou qualquer outra condição.

Alternativa E — ❌ Incorreta

O operador != é uma alternativa ao <> para representar desigualdade em alguns SGBDs (como MySQL e SQL Server). No entanto, assim como <>, ele é um operador relacional comum e, quando usado para comparar com NULL, retorna UNKNOWN, não verdadeiro. Portanto, campo != NULL também não retorna linhas, mesmo para campos não nulos. A forma correta continua sendo IS NOT NULL.

NÃO CAIA NESSA!

A banca explora a confusão entre operadores de desigualdade (<>, !=) e o operador específico para nulidade (IS NOT NULL). Muitos candidatos escolhem <> ou != por acharem que são equivalentes, mas a comparação com NULL sempre resulta em UNKNOWN, nunca em verdadeiro. Guarde a regra: para testar nulidade, use IS NULL/IS NOT NULL; para testar valores, use =/<>/!=.

Gabarito: letra B

Link permanente: /questoes/qa538179