NULL, Но(у)ль, Неизвестно, Пусто... Что это все такое
NULL — это специальное значение в SQL, которое означает отсутствие данных или неизвестное значение. Важно понимать, что NULL ≠ 0 и NULL ≠ пустая строка (‘’).
А пока подписывайся на мой канал На связи: SQL Там я публикую посты про особенности и нюансы SQL. Этот канал про то, как не бояться баз данных, понимать, что такое JOIN, GROUP BY и почему NULL ≠ 0. Его я веду с нуля подписчиков. И пост про NULL уже ждет тебя! Присоединяйся!
NULL не равен ничему, даже самому себе. Не является числом, строкой или другим типом данных.
И это надо запомнить при работе с данными.
Все что вы будете сравнивать с NULL будет возвращаться как UNKNOWN.
Для работы с NULL есть специальные операторы.
-- Проверка на NULL
SELECT *
FROM table
WHERE column IS NULL;
-- Проверка на НЕ NULL
SELECT *
FROM table
WHERE column IS NOT NULL;
-- Замена NULL на значение
SELECT COALESCE(column, 'значение_по_умолчанию')
FROM table;
NULL появляется там, где есть необязательные поля для заполнения, при отсутствии связей между сущностями, при ошибках ввода, когда данные неизвесты.
Вообще, понятие NULL появилось в начале 1970-х годов. Разработчики реляционных БД специально создали такое значение для обозначения отсутствия данных. Это было революционным решением, позволившим хранить информацию более гибко.
Математические фокусы с NULL:
Любое число + NULL = NULL
NULL * 100 = NULL
NULL / 2 = NULL
Индексы могут работать медленнее при наличии NULL
Некоторые типы индексов вообще не поддерживают NULL
Агрегатные функции игнорируют NULL по умолчанию
Ну и коротко про то что такое Но(у)ль:
Ноль — это чётко определённое значение:
Числовое значение
Имеет математический смысл
Участвует в вычислениях
Равно самому себе
А теперь про пусто:
Пустота — отсутствие содержимого
Пустое значение может быть:
Пустой строкой (‘’ или “”)
Пустым массивом
Пустым объектом
Имеет конкретный тип данных
Рекомендации:
Используйте NULL для неизвестных данных
Применяйте 0 для числовых значений по умолчанию
Используйте пустые строки для незаполненных текстовых полей
Заключение
Помните: каждое из этих значений несёт свой смысл. Неправильное использование может привести к:
Ошибочным расчётам
Некорректной логике
Потерям данных
Системным ошибкам
А как вы работаете с этими значениями в своих проектах? Поделитесь опытом в комментариях!
