Gymterview
junior

Что означает 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.