MySQL A
Концепція NULL -значення часто вводить в оману новачків у SQL, які вважають, що NULL - те саме, що й порожній рядок "". Це помилка! Наприклад, наступні команди абсолютно різні:
У SQL порівняння значення NULL з будь-яким іншим значенням, навіть зі значенням NULL завжди хибно. Вираз, що містить NULL , завжди дає значення NULL , за винятком випадків, спеціально обумовлених у документації операторів і функцій, присутніх у виразі. Всі стовпці в наступному прикладі повертають NULL:
Якщо у стовпці потрібно знайти значення NULL, то не можна використовувати умову = NULL. Наступна команда не повертає жодного рядка, оскільки для будь-якого виразу expr = NULL НЕМАЄ:
Зауважимо, що додавати індекс по стовпцю, в якому допускаються значення NULL, можна тільки у випадку, якщо ви працюєте з версією MySQL 3.23.2 або вище, а тип таблиць - MyISAM або InnoDB. У ранніх версіях або інших типів таблиць необхідно оголошувати такі стовпці з атрибутом NOT NULL . Це також передбачає, що тоді не можна вставляти NULL в індексований стовпець.
Під час читання даних за допомогою LOAD DATA INFILE порожні поля оновлюються значеннями ''. Якщо потрібно помістити в стовпець значення NULL, то текстовому файлі слід використовувати \N . Також за деяких обставин можна використовувати слово-літерал NULL (див. розділ 6.4.9, «Синтаксис оператора LOAD DATA INFILE»).
У разі використання ORDER BY значення NULL видаються першими. У версіях попередніх 4.0.2, при сортуванні у спадному порядку за допомогою DESC, значення NULL також видаються останніми. При використанні GROUP BY усі значення NULL вважаються рівними.
Для обробки NULL призначені оператори IS NULL та IS NOT NULL , а також функція IFNULL() .
Для деяких типів шпальт значення NULL обробляються спеціальним чином. Якщо NULL вставляється у перший таблиці стовпець типу TIMESTAMP , то нього міститься значення поточної дати й часу. При вставці NULL в AUTO_INCREMENT - стовпець вставляється така кількість послідовності.