Considere uma tabela chamada Livros com as colunas id (int),...
SELECT * FROM Livros WHERE ano <> 1854;
Ao ser executado, esse comando retornará
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: B
O que precisava saber: Era necessário saber que, em SQL, NULL representa ausência de valor e que comparações com operadores relacionais, como <> , não retornam TRUE quando um dos operandos é NULL, mas UNKNOWN. Também era preciso lembrar que a cláusula WHERE mantém apenas linhas cuja condição seja TRUE.
Critério decisivo: Em SQL, qualquer comparação com NULL resulta em valor lógico desconhecido (UNKNOWN), não verdadeiro; por isso, a cláusula WHERE ano <> 1854 seleciona apenas linhas com ano diferente de 1854 e exclui as linhas em que ano é NULL.
- Em comparações com =, <>, < ou >, trate NULL como resultado UNKNOWN, não como valor comum.
- Ao analisar uma cláusula WHERE, verifique se a condição será TRUE; linhas com resultado UNKNOWN são descartadas.
- Em questões com desigualdade, não suponha que NULL esteja automaticamente incluído entre os 'diferentes'.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Horrível!!! Essa consulta não exclui nenhum registro que possui NULL como ano, porque não foi usado COALESCE no where. Quem fez isso claramente não sabe nada de SQL
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo