NULL

Базовый SQL
≈ 1 мин чтения

NULL — это отсутствие известного значения

NULL в SQL не означает число 0, пустую строку или слово «null». Он показывает, что в этом месте нет известного значения. Например, номер телефона пользователя может быть ещё не указан.

INSERT INTO users (id, name, email)
VALUES (1, 'Anna', NULL);

В такой строке значение email неизвестно или отсутствует. Это принципиально отличается от '': пустая строка является конкретным строковым значением.

NULL нельзя воспринимать как обычное значение

Обычные сравнения предполагают, что оба значения известны. С NULL это предположение не выполняется, поэтому выражения с ним работают иначе, чем сравнения чисел или строк. Для проверки отсутствия значения SQL использует специальные конструкции.

SELECT id, name
FROM users
WHERE email IS NULL;

IS NULL проверяет именно отсутствие значения. Подробно фильтрацию строк и связанные условия мы разберём в следующем разделе.

Не подменяй NULL пустым значением только ради удобства. Если «значение неизвестно» и «значение известно и пустое» имеют разный смысл для предметной области, база должна уметь различать эти состояния.