Questão de Banco de Dados — Consultas e Comandos em SQL — FUNDATEC 2023
Banco de Dados›Consultas e Comandos em SQL
Código
qa537587
Banca
FUNDATEC
Órgão
IFFAR
Ano
2023
Cargo
Tec ( )
Sobre a linguagem SQL, um campo com valor nulo é um campo sem valor (vazio). Qual das alternativas apresenta uma sintaxe correta de verificação de nulidade de um campo?
ASELECT <column_names> FROM <table_name> WHERE NOT NULL (<column_name>);
BSELECT <column_names> FROM <table_name> WHERE <column_name> = NULL;
CSELECT <column_names> FROM <table_name> WHERE <column_name> <> 0 AND <column_name> <> '';
DSELECT <column_names> FROM <table_name> WHERE NULL (<column_name>) = 1;
ESELECT <column_names> FROM <table_name> WHERE <column_name> IS NULL;
Revelar gabarito e comentário▾
GabaritoE — SELECT <column_names>
FROM <table_name>
WHERE <column_name> IS 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”.
Verificação de nulidade em SQL: o operador IS NULL
Gabarito: letra E. A única sintaxe correta para verificar se um campo é nulo em SQL é WHERE <column_name> IS NULL. Comparar um campo com NULL usando operadores comuns como = ou <> não funciona, pois o resultado dessa comparação é sempre UNKNOWN (desconhecido), e não TRUE ou FALSE — por isso nenhuma linha é retornada. Essa é a regra fundamental da lógica de três valores do SQL, que a questão explora em todas as alternativas incorretas.
O valor NULL em SQL representa a ausência de valor, um conceito diferente de zero (0) ou de uma string vazia (''). Ele não é um valor comparável: qualquer operação aritmética ou comparação lógica que envolva NULL resulta em NULL (ou UNKNOWN no caso de comparações). Por isso, a linguagem fornece operadores específicos para testar a nulidade: IS NULL e IS NOT NULL. O operador IS NULL retorna TRUE se o valor da coluna for nulo, e FALSE caso contrário. Já IS NOT NULL faz o inverso. Esses são os únicos meios corretos e portáveis de verificar nulidade em SQL padrão.
A lógica por trás dessa regra é a chamada lógica de três valores (three-valued logic). Em SQL, uma condição pode ser avaliada como TRUE, FALSE ou UNKNOWN. Quando você escreve WHERE coluna = NULL, o banco de dados avalia a expressão coluna = NULL para cada linha. Como NULL não é um valor, a comparação não pode ser verdadeira nem falsa — ela é UNKNOWN. A cláusula WHERE só retorna as linhas para as quais a condição é TRUE; linhas com condição UNKNOWN ou FALSE são descartadas. Portanto, WHERE coluna = NULL nunca retorna nenhuma linha, mesmo que existam valores nulos na coluna. O mesmo vale para WHERE coluna <> NULL.
Para ilustrar, imagine uma tabela empregados com uma coluna telefone que pode ser nula. Para listar os empregados que não possuem telefone cadastrado, a consulta correta é SELECT * FROM empregados WHERE telefone IS NULL. Se você tentasse SELECT * FROM empregados WHERE telefone = NULL, o resultado seria vazio, pois a comparação telefone = NULL é UNKNOWN para todas as linhas, inclusive para aquelas em que telefone é de fato nulo. Essa é a pegadinha clássica que a banca explora: o candidato que conhece a sintaxe de outras linguagens (onde = NULL poderia funcionar) erra a questão.
A distinção crucial que separa as alternativas é exatamente esta: comparação com = ou <> versus teste com IS NULL. As alternativas A, B, C e D tentam verificar nulidade de formas incorretas — usando funções inexistentes, comparando com NULL diretamente, ou confundindo nulo com zero/string vazia. A alternativa E é a única que usa o operador correto. Guarde essa fronteira: em SQL, nulidade se testa com IS NULL/IS NOT NULL, nunca com operadores de comparação comuns.
Alternativa A — ❌ Incorreta
A sintaxe WHERE NOT NULL (<column_name>) não existe em SQL. NOT NULL é uma restrição de integridade usada na definição de tabelas (DDL), não uma função que possa ser aplicada a uma coluna dentro da cláusula WHERE. Para verificar se um campo não é nulo, o correto seria WHERE <column_name> IS NOT NULL. A alternativa confunde a restrição de coluna com o operador de teste de nulidade.
Alternativa B — ❌ Incorreta
A comparação WHERE <column_name> = NULL é o erro clássico. Como explicado, comparar qualquer coisa com NULL usando = resulta em UNKNOWN, e a cláusula WHERE descarta linhas com condição UNKNOWN. Portanto, essa consulta nunca retorna linhas, mesmo que existam valores nulos na coluna. O correto é IS NULL. A alternativa tenta usar o operador de igualdade, que não se aplica a NULL.
Alternativa C — ❌ Incorreta
A condição WHERE <column_name> <> 0 AND <column_name> <> '' tenta verificar nulidade excluindo zero e string vazia. Isso é conceitualmente errado: NULL não é igual a 0 nem a '', mas também não é diferente deles no sentido lógico — a comparação NULL <> 0 resulta em UNKNOWN, não em TRUE. Portanto, essa condição também não retornaria as linhas com valor nulo. Além disso, ela não testa nulidade diretamente; apenas filtra valores específicos. O correto é usar IS NULL.
Alternativa D — ❌ Incorreta
A sintaxe WHERE NULL (<column_name>) = 1 não existe em SQL. NULL não é uma função que possa ser chamada com uma coluna como argumento. A alternativa tenta inventar uma função NULL() que retornaria um valor comparável a 1, o que não faz parte do padrão SQL. A verificação de nulidade é feita exclusivamente com os operadores IS NULL e IS NOT NULL.
Alternativa E — ✅ Correta ⟵ GABARITO
A sintaxe WHERE <column_name> IS NULL é a forma correta e padrão de verificar se um campo é nulo em SQL. O operador IS NULL testa diretamente se o valor da coluna é NULL, retornando TRUE para as linhas que atendem à condição. É exatamente o que o enunciado pede: uma sintaxe correta de verificação de nulidade. As demais alternativas usam comparações comuns ou funções inexistentes, que não funcionam com NULL.
NÃO CAIA NESSA!
A banca explora a confusão entre a lógica de outras linguagens de programação e a lógica de três valores do SQL. Em muitas linguagens, variavel == null é uma comparação válida. Mas em SQL, coluna = NULL nunca é verdadeiro — é UNKNOWN. O candidato que não conhece essa particularidade tende a marcar a alternativa B, que parece intuitiva. Lembre-se: em SQL, nulidade se testa com IS NULL/IS NOT NULL, nunca com = ou <>.
NÃO CAIA NESSA!
Para fixar, memorize a regra de ouro: nunca compare com NULL usando operadores de comparação; use sempre IS NULL ou IS NOT NULL. Quando vir uma alternativa com = NULL ou <> NULL, elimine-a imediatamente. E lembre-se também de que NULL não é o mesmo que 0 ou '' — são conceitos distintos. Essa é uma das pegadinhas mais recorrentes em provas de SQL.