0Pricing
SQL Academy · Aula

NULL: o terceiro valor lógico

Domine o significado de NULL, por que NULL não é igual a nada (nem a si mesmo) e como a lógica de três valores afeta as cláusulas WHERE.

NULL: o terceiro valor lógico é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.

O que é NULL?

NULL representa dados desconhecidos ou ausentes. Não é zero, não é uma cadeia vazia e não é falso. É a ausência explícita de um valor.

NULL não é igual a nada (nem a si próprio)

Esta é a regra que confunde todo mundo:

SELECT NULL = NULL;       -- NULL (not true!)
SELECT NULL = 0;          -- NULL
SELECT NULL = '';        -- NULL
SELECT NULL <> 1;         -- NULL

Use IS NULL e IS NOT NULL

Para testar NULL, você precisa usar os predicados especiais IS NULL e IS NOT NULL:

SELECT email FROM users WHERE deleted_at IS NULL;       -- active users
SELECT email FROM users WHERE deleted_at IS NOT NULL;   -- deleted users

Lógica de três valores

A lógica booleana do SQL tem THREE valores: TRUE, FALSE e UNKNOWN (NULL).

ABA AND BA OR B
TRUENULLNULLTRUE
FALSENULLFALSENULL
NULLNULLNULLNULL

WHERE descarta linhas quando o predicado é NULL

Se WHERE x = 5 resultar em NULL para uma linha (porque x é NULL), essa linha NÃO será retornada. Somente as linhas cujo predicado é TRUE são mantidas.

-- Suppose age is NULL for some users:
SELECT * FROM users WHERE age >= 18;
-- Users with NULL age are NOT returned, even though we
-- don't actually know they're under 18.

A armadilha de NULL com NOT IN

Esta consulta retorna ZERO linhas se algum nome na subconsulta for NULL:

SELECT * FROM users
WHERE name NOT IN (SELECT excluded_name FROM blocklist);
-- If blocklist has a NULL row, the whole NOT IN evaluates to NULL
-- → no rows returned

-- Safer:
SELECT * FROM users u
WHERE NOT EXISTS (
  SELECT 1 FROM blocklist b WHERE b.excluded_name = u.name
);

COALESCE: substituindo NULL por um valor padrão

COALESCE retorna o primeiro argumento que não seja NULL:

SELECT id, COALESCE(full_name, email, 'Anonymous') AS display_name
FROM users;

-- If full_name is NULL, use email; if that's NULL too, use 'Anonymous'.

NULLIF: o oposto

NULLIF(a, b) retorna NULL quando a = b; caso contrário, retorna a. É útil para tratar valores sentinela, como '' ou 0, como NULL.

SELECT NULLIF(price, 0) FROM products;
-- Returns NULL when price is 0, useful for AVG() that should ignore zeros.

NULL em agregações

As funções de agregação (exceto COUNT(*)) ignoram entradas NULL:

-- Suppose:  prices = [10, 20, NULL, 30]
SELECT COUNT(*)     FROM products;  -- 4 (counts rows)
SELECT COUNT(price) FROM products;  -- 3 (counts non-NULL prices)
SELECT AVG(price)   FROM products;  -- 20  (60 / 3, not 60 / 4)
SELECT SUM(price)   FROM products;  -- 60

Ordenação de NULL

Por padrão, o PostgreSQL ordena os valores NULL por último em ordem crescente e primeiro em ordem decrescente. Você pode substituir esse comportamento:

SELECT * FROM users ORDER BY last_login_at DESC NULLS LAST;

Armazenando NULL versus uma cadeia vazia

Decida para cada coluna: '' é um valor válido? Se não for, use NULL para significar "nenhum valor". Se for, NULL significa algo diferente (por exemplo, "ainda não perguntado").

Seja consistente — não misture os dois na mesma coluna.

Recapitulação

NULL é seu próprio valor lógico.

  • Teste com IS NULL, nunca com = NULL
  • Os filtros WHERE mantêm apenas as linhas TRUE
  • As agregações ignoram entradas NULL
  • COALESCE é seu aliado

Verificação rápida

O que SELECT NULL = NULL; retorna?

Perguntas Frequentes

A aula “NULL: o terceiro valor lógico” é grátis?

Sim — o texto completo de “NULL: o terceiro valor lógico” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.

O que vou aprender em “NULL: o terceiro valor lógico”?

Domine o significado de NULL, por que NULL não é igual a nada (nem a si mesmo) e como a lógica de três valores afeta as cláusulas WHERE. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Academy?

Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “NULL: o terceiro valor lógico”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Academy?

Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. O que é um RDBMS e por que as tabelas são importantes
  2. Chaves primárias e unicidade
  3. NULL: o terceiro valor lógico
  4. Visão geral dos tipos de dados: INT VARCHAR DATE BOOLEAN
← Voltar para SQL Academy