Considerando as tabelas A e B de um banco de dados relacional e que os campos id dessas tabelas referem‑se às suas chaves primárias, julgue o item seguinte.
Se as tabelas A e B em questão tiverem, também,
uma coluna denominada cod_grupo que admita
valores NULL, então a consulta a seguir não retornará
qualquer registro se houver, ao menos, um valor NULL
na coluna cod_grupo da tabela B.
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoC — Certo
Esta resolução diverge do gabarito oficial. A banca deu Certo; a resolução abaixo sustenta o contrário e explica por quê — ela não foi reescrita para concordar. Acontece nos dois sentidos: há gabarito que cai em recurso e há resolução que erra. Confira na fonte antes de fixar o entendimento.
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”.
Semântica do NULL em consultas SQL
Gabarito: ERRADO (letra E). A afirmação está incorreta porque a presença de um valor NULL na coluna cod_grupo da tabela B não impede a consulta de retornar registros — o comportamento depende da lógica da consulta (não visível na imagem), e a simples existência de NULL não torna o resultado vazio. O ponto central é que NULL não é um valor comparável com = ou <>; qualquer comparação com NULL resulta em UNKNOWN, que é tratado como falso no WHERE, mas isso não significa que a consulta inteira retorne vazio — apenas que as linhas com NULL não participam da comparação.
A questão explora um dos conceitos mais cobrados em bancos de dados relacionais: a semântica do valor NULL. NULL representa ausência de valor, e não é igual a zero, a espaço em branco ou a uma string vazia. No padrão SQL, qualquer operação aritmética ou comparação lógica que envolva NULL produz um resultado UNKNOWN (desconhecido), que não é verdadeiro nem falso. No WHERE, apenas as condições que avaliam para TRUE selecionam linhas; UNKNOWN é tratado como falso. Por isso, uma condição como A.cod_grupo = B.cod_grupo nunca será verdadeira quando um dos lados for NULL — a linha correspondente é descartada.
Contudo, isso não implica que a consulta retornará zero registros. Se houver outras linhas na tabela B cujo cod_grupo não seja NULL e que satisfaçam a condição de junção (por exemplo, A.id = B.id), essas linhas serão retornadas normalmente. A presença de um NULL em uma linha não contamina as demais; cada linha é avaliada independentemente. O único caso em que a consulta retornaria vazio seria se TODAS as linhas de B tivessem cod_grupo NULL e a condição de junção dependesse exclusivamente dessa coluna — o que não é garantido pelo enunciado.
A pegadinha clássica da banca é fazer o candidato acreditar que "qualquer NULL anula o resultado". Na verdade, o NULL apenas exclui a linha específica que o contém da comparação. Para verificar a presença de NULL, o SQL exige os operadores IS NULL e IS NOT NULL, pois = NULL ou <> NULL sempre retornam UNKNOWN. Essa distinção é fundamental para resolver questões de SQL que envolvem valores nulos.
NÃO CAIA NESSA!
A banca explora a confusão entre "a linha com NULL não é retornada" e "a consulta inteira não retorna nada". O NULL descarta apenas a linha que o contém, não as demais. Lembre-se: comparação com NULL nunca é verdadeira, mas isso não zera o resultado da consulta.
1Comparação com NULL = UNKNOWN
2WHERE só aceita TRUE
3Linha com NULL é descartada
4Demais linhas seguem elegíveis
LEVEL · soulevel.com.br
Alternativa C — ❌ Incorreta (afirmação falsa)
A afirmação de que a consulta não retornará qualquer registro se houver ao menos um NULL em cod_grupo da tabela B é incorreta. O NULL afeta apenas as linhas que o contêm: a condição de junção A.cod_grupo = B.cod_grupo será UNKNOWN para essas linhas, e elas serão descartadas. No entanto, as demais linhas de B com valores não nulos podem casar com linhas de A e serem retornadas. O resultado só seria vazio se TODAS as linhas de B tivessem NULL nessa coluna e a junção dependesse exclusivamente dela — situação não garantida pelo enunciado.
Alternativa E — ✅ Correta (afirmação verdadeira)
A afirmação de que a consulta pode retornar registros mesmo com NULL em cod_grupo é correta. O NULL não invalida a consulta inteira; ele apenas exclui as linhas que o contêm da comparação. As linhas com valores não nulos continuam elegíveis para o resultado. Para testar NULL, o SQL exige IS NULL/IS NOT NULL, pois = e <> com NULL resultam em UNKNOWN. Portanto, a presença de um NULL não impede o retorno de outras linhas.