Вопрос проверяет понимание значения NULL в SQL, которое используется для обозначения отсутствия данных в столбце таблицы.
NULL в SQL — это не значение, а специальное состояние, показывающее, что информация в поле отсутствует. Это принципиально отличается от нуля, пустой строки или false. NULL означает "значение неизвестно" или "не применимо". Например, в таблице сотрудников поле "дата увольнения" для действующего сотрудника может быть NULL.
Основная сложность заключается в логике сравнений. Обычные операторы (=, <, >) с NULL возвращают не TRUE или FALSE, а UNKNOWN. Поэтому для проверки на NULL используется специальный оператор IS NULL или IS NOT NULL.
-- Неправильно: не найдет строки с NULL
SELECT * FROM employees WHERE termination_date = NULL;
-- Правильно:
SELECT * FROM employees WHERE termination_date IS NULL;Большинство агрегатных функций, таких как SUM() или AVG(), игнорируют NULL. Однако любая арифметическая операция с NULL также возвращает NULL. Это поведение нужно учитывать при вычислениях.
-- Если salary содержит NULL, результат всего выражения станет NULL
SELECT name, salary + bonus AS total_income FROM employees;
-- Чтобы избежать этого, можно использовать COALESCE
SELECT name, COALESCE(salary, 0) + COALESCE(bonus, 0) AS total_income FROM employees;NULL полезен, когда данные могут быть неизвестны на момент вставки. Однако его чрезмерное использование усложняет запросы и может привести к ошибкам. При проектировании схемы иногда лучше использовать значения по умолчанию (например, 0 или пустую строку), если это имеет смысл для бизнес-логики.
Вывод: NULL — это мощный инструмент для представления отсутствующих данных, но он требует аккуратного обращения. Используйте его, когда действительно нужно отличить "неизвестное" от любого конкретного значения (вроде 0), и всегда проверяйте условия с помощью IS NULL.