Lição 1.5 · Tempo de leitura: ~7 min
NULL é o marcador especial que uma base de dados relacional usa quando um valor está ausente, é desconhecido ou não se aplica. Nesta lição, vai perceber o que NULL realmente significa, como se distingue dos valores normais e como trabalhar com ele com segurança em testes e consultas simples.
Nas lições anteriores, vimos conceitos relacionais e tipos de dados. Agora é importante entender o que acontece quando uma coluna não tem um valor útil armazenado.

NULL não é um valor normal. É um marcador especial que informa a base de dados de que o valor está ausente, é desconhecido ou não se aplica.
Isto é importante porque NULL não se comporta como texto, número ou valor booleano. Ele segue regras próprias em comparações, filtros e cálculos.
Para evitar confusão, lembre-se de que NULL não é:
'' continua a ser texto, mesmo sem caracteres.As bases de dados usam NULL quando um valor não pode ser preenchido normalmente.
Casos típicos:
Como NULL representa um estado desconhecido, operadores de comparação padrão como = e <> não funcionam corretamente com ele.
Por exemplo, valor = NULL não devolve verdadeiro. Para testar NULL corretamente, deve usar operadores específicos.
IS NULL é usado para encontrar linhas onde uma coluna não contém valor:
SELECT *
FROM address
WHERE address2 IS NULL;
IS NOT NULL é usado para encontrar linhas onde uma coluna contém algum valor:
SELECT *
FROM address
WHERE address2 IS NOT NULL;
Uma das regras mais importantes é que NULL propaga-se frequentemente. Se NULL participa num cálculo, o resultado costuma ser NULL.
10 + NULL = NULL5 * NULL = NULL'Olá ' + NULL = NULLA mesma ideia afeta comparações. Como NULL significa "desconhecido", muitas expressões com NULL não devolvem verdadeiro nem falso, mas um resultado desconhecido.
Principais conclusões desta lição:
NULL representa dados ausentes, desconhecidos ou não aplicáveis.NULL é diferente de zero, string vazia e false.= e <> não servem para testar NULL.IS NULL e IS NOT NULL para verificar NULL corretamente.Não. Uma string vazia continua a ser um valor de texto com comprimento zero. NULL significa que não existe um valor conhecido armazenado.
valor = NULL não funciona?Porque NULL representa um estado desconhecido, e os operadores de comparação normais não foram feitos para testar esse estado. Para isso, usa-se IS NULL.
Sim. NULL não pertence a um único tipo de dados. Uma coluna numérica, de texto ou de data pode conter NULL, desde que uma restrição não o impeça.
NULL é um marcador especial que representa dados ausentes, desconhecidos ou não aplicáveis. Não é o mesmo que zero, false ou string vazia, e segue regras próprias em comparações e cálculos.
Porque NULL representa um estado desconhecido. Os operadores = e <> funcionam com valores normais, enquanto SQL fornece IS NULL e IS NOT NULL para testar NULL corretamente.
Um erro comum é tratar NULL como um valor normal em filtros, condições ou cálculos. Isso costuma gerar resultados inesperados em consultas.
Na próxima lição, vamos introduzir o próprio SQL e ver a estrutura básica de uma consulta.