ОсновыНачальный
NULL / IS NULL
NULL означает отсутствие значения. Для проверки используется IS NULL, а не = NULL.
Синтаксис
WHERE col IS NULL WHERE col IS NOT NULL COALESCE(col, default_value)
Объяснение
NULL — не пустая строка и не 0. NULL = «неизвестно».
Любое сравнение с NULL через = или != возвращает NULL (не TRUE и не FALSE):
- NULL = NULL → NULL
- NULL != NULL → NULL
Правильная проверка: IS NULL / IS NOT NULL.
NULL в арифметике: 5 + NULL = NULL. В агрегатах: SUM, AVG, MIN, MAX игнорируют NULL.
Пример
-- Неправильно (всегда 0 строк): SELECT * FROM users WHERE deleted_at = NULL; -- Правильно: SELECT * FROM users WHERE deleted_at IS NULL; -- не удалённые SELECT * FROM users WHERE deleted_at IS NOT NULL; -- удалённые
Связанные термины
Анекдоты по теме
Аналитик пишет SUM(revenue) и получает NULL. Он в панике звонит DBA. DBA: проверь, есть ли NULL в колонке revenue. Аналитик: есть несколько. DBA: один NULL заражает всю сумму. Используй SUM(COALESCE(revenue, 0)).
Почему NULL не приглашают на вечеринки? Потому что он никогда не знает, пришёл он или нет, а когда его спрашивают «Ты придёшь?», он отвечает: «NULL».
Начинающий: — Я выучил SQL за неделю! Опытный: — Поздравляю. Ты выучил SELECT, INSERT, UPDATE, DELETE. Осталось лет 5 на JOIN, индексы, транзакции и почему NULL — это зло. Удачи.