Урок 1.5 · Время чтения: ~7 мин
NULL — это специальный маркер, который реляционные базы данных используют, когда значение отсутствует, неизвестно или неприменимо. В этом уроке вы поймёте, что именно означает NULL, чем он отличается от обычных значений и как безопасно работать с ним в проверках и простых запросах.
В предыдущих уроках мы разобрали устройство реляционных баз данных и типы данных. Теперь важно понять, что происходит, когда в столбце нет нормального осмысленного значения.

NULL не является обычным значением. Это специальный маркер, который сообщает базе данных, что значение отсутствует, неизвестно или неприменимо.
Это важно, потому что NULL ведёт себя не так, как текст, числа или логические значения. Для сравнений, фильтрации и вычислений у него свои правила.
Чтобы не путаться, важно помнить, чем NULL не является:
'' всё равно остаётся текстом, даже если в нём нет символов.Базы данных используют NULL, когда значение нельзя заполнить как обычное поле.
Типичные случаи:
Поскольку NULL обозначает неизвестное состояние, стандартные операторы сравнения, такие как = и <>, работают с ним некорректно.
Например, выражение value = NULL не вернёт истину. Чтобы правильно проверять NULL, используются специальные операторы.
IS NULL используется для поиска строк, где столбец не содержит значения:
SELECT *
FROM address
WHERE address2 IS NULL;
IS NOT NULL используется для поиска строк, где в столбце есть какое-то значение:
SELECT *
FROM address
WHERE address2 IS NOT NULL;
Одно из самых важных правил: NULL часто распространяется. Если значение NULL участвует в вычислении, результат тоже обычно становится NULL.
10 + NULL = NULL5 * NULL = NULL'Привет, ' + NULL = NULLТа же идея влияет и на сравнения. Поскольку NULL означает «неизвестно», многие выражения с NULL возвращают не истину и не ложь, а неизвестный результат.
Ключевые выводы этого урока:
NULL обозначает отсутствующие, неизвестные или неприменимые данные.NULL отличается от нуля, пустой строки и логического false.= и <> не подходят для проверки NULL.IS NULL и IS NOT NULL.Нет. Пустая строка — это текстовое значение нулевой длины. NULL означает, что известного значения нет вообще.
value = NULL не работает?Потому что NULL означает «неизвестно», а обычные операторы сравнения не предназначены для проверки такого состояния. Для этого используется IS NULL.
Да. NULL не привязан к одному типу данных. Он может встречаться в числовых, текстовых и временных столбцах, если это не запрещено ограничением.
NULL — это специальный маркер, обозначающий отсутствующие, неизвестные или неприменимые данные. Он не равен нулю, false или пустой строке и подчиняется особым правилам в сравнениях и вычислениях.
Потому что NULL означает неизвестное состояние. Операторы = и <> работают с обычными значениями, а для проверки NULL в SQL используются специальные операторы IS NULL и IS NOT NULL.
Частая ошибка — обращаться с NULL как с обычным значением в фильтрах, условиях и арифметике. Это приводит к неожиданным результатам в запросах и вычисляемых полях.
В следующем уроке мы познакомимся с самим SQL и посмотрим на базовую структуру запроса.