Questão de Arquitetura de Software — Banco de Dados — FUNDATEC 2023
- Código
- qq890383
- Banca
- FUNDATEC
- Órgão
- CAU-RS
- Ano
- 2023
- Nível
- Superior
- Cargo
- Analista Superior Infraestrutura de TIC
- A<>
- BIS NOT NULL
- CNOT EXISTS
- D<NULLABLE>
- E!=
GabaritoB — IS NOT NULL
Gabarito: letra B (IS NOT NULL). Na linguagem SQL, o operador IS NOT NULL é o único meio correto de verificar se um campo possui valor diferente de nulo, pois NULL não é um valor comparável com operadores de igualdade/desigualdade (=, <>, !=). A banca cobra exatamente essa distinção: comparar com NULL usando = ou <> sempre resulta em desconhecido (UNKNOWN), nunca em verdadeiro ou falso.
O conceito central aqui é a lógica de três valores do SQL (TRUE, FALSE e UNKNOWN). NULL representa ausência de valor, e qualquer comparação direta com NULL produz UNKNOWN, que é tratado como falso em cláusulas WHERE. Por isso, o SQL fornece os predicados IS NULL e IS NOT NULL para testar a presença ou ausência de valor de forma explícita.
A pegadinha da banca é justamente oferecer <> e != como se fossem equivalentes a "diferente de nulo". O candidato que conhece outras linguagens de programação (onde != null funciona) tende a cair nessa armadilha. No SQL, porém, campo <> NULL nunca retorna linhas, pois o resultado é UNKNOWN.
O operador <> (diferente) é usado para comparar valores não nulos, mas não funciona com NULL. campo <> NULL retorna UNKNOWN, não TRUE, portanto não seleciona nenhuma linha. A banca explora a confusão entre "diferente de" e "diferente de nulo".
IS NOT NULL é o predicado padrão do SQL para verificar se um campo possui valor não nulo. É a forma correta e a única que garante o resultado esperado. Exemplo: SELECT * FROM tabela WHERE campo IS NOT NULL;
NOT EXISTS é um operador usado em subconsultas para verificar se uma subconsulta retorna alguma linha. Não tem relação com verificação de nulidade de um campo. Exemplo: SELECT * FROM a WHERE NOT EXISTS (SELECT 1 FROM b WHERE b.id = a.id);
<NULLABLE> não é um operador SQL válido. Não existe na sintaxe padrão do SQL. É um distrator puro, sem correspondência com qualquer funcionalidade da linguagem.
!= é uma variação do operador de desigualdade (equivalente a <> em muitos SGBDs), mas, assim como <>, não funciona com NULL. campo != NULL também retorna UNKNOWN, não selecionando linhas. A banca troca o operador de comparação comum pelo predicado específico de nulidade.
A banca oferece <> e != como se fossem sinônimos de "diferente de nulo". Em linguagens de programação comuns, != null funciona, mas no SQL NULL não é um valor comparável — qualquer comparação com NULL resulta em UNKNOWN. O único jeito de testar nulidade é com IS NULL / IS NOT NULL. Fique atento: se a alternativa trouxer = ou <> com NULL, está errada.
Para fixar, lembre-se: nunca use = ou <> com NULL. Sempre que a questão perguntar sobre verificação de nulo, procure IS NULL ou IS NOT NULL. Essa é uma pegadinha clássica em provas de SQL — resolva muitas questões sobre o tema para internalizar.
Gabarito: letra B
Link permanente: /questoes/qq890383