Что означает NULL в SQL?
NULL — специальный маркер, обозначающий отсутствие какого-либо значения в поле таблицы. Это не ноль, не пустая строка и не FALSE — это именно отсутствие информации, неизвестность.
Аналогия из жизни:
NULL— как пустая ячейка в бумажном бланке. Вы не знаете, какое значение туда впишут: может быть ноль, может быть слово. Пока ячейка пуста, она не равна ничему, даже другой пустой ячейке.
Ключевые свойства NULL
NULLне принадлежит ни одному типу данных — это псевдозначение- При сравнении
NULLс любым значением (включая другойNULL) результатом будетNULL, а неTRUEилиFALSE NULL = NULLвозвращаетNULL(неTRUE). Для проверки используетсяIS NULL/IS NOT NULL- Арифметические операции с
NULLдаютNULL:5 + NULL = NULL - Агрегатные функции (
SUM,AVG,COUNT(column)) игнорируютNULL-значения
Трёхзначная логика (Three-Valued Logic)
SQL использует трёхзначную логику: TRUE, FALSE, NULL. Это означает, что WHERE условие пропускает строку, только если результат — TRUE. Если результат — NULL, строка отбрасывается так же, как при FALSE.
Пример
-- Не найдёт строки, где name IS NULL
SELECT * FROM users WHERE name = NULL; -- неправильно
-- Правильный способ
SELECT * FROM users WHERE name IS NULL; -- правильно
На собеседовании: важно объяснить, что
NULLне равен ничему, включая самого себя, и что для проверки используетсяIS NULL. Частая ошибка — написатьWHERE column = NULLвместоWHERE column IS NULL.