Spec-Zone .ru
спецификации, руководства, описания, API
|
Понятие NULL
значение является общим источником беспорядка для вновь прибывших к
SQL, которые часто думают это NULL
та же самая вещь как пустая строка ''
. Дело обстоит не так. Например, следующие операторы абсолютно отличаются:
mysql>INSERT INTO my_table (phone) VALUES (NULL);
mysql>INSERT INTO my_table (phone) VALUES ('');
Оба оператора вставляют значение в phone
столбец, но первые вставки a NULL
значение и вторые вставки пустая строка. Значение первого может быть расценено,
поскольку "номер телефона не известен", и
значение второго может быть расценено, поскольку "у человека, как известно, нет никакого телефона, и таким образом никакого номера телефона."
Помочь с NULL
обработка, можно использовать IS NULL
и IS NOT NULL
операторы и IFNULL()
функция.
В SQL, NULL
значение никогда не является истиной по сравнению с любым другим
значением, даже NULL
. Выражение, которое содержит NULL
всегда производит a NULL
оцените если иначе не обозначено в документации для
операторов и функций, включенных в выражение. Все столбцы в следующем возврате в качестве примера NULL
:
mysql> SELECT NULL, 1+NULL,
CONCAT('Invisible',NULL);
Искать значения столбцов, которые являются NULL
, невозможно использовать expr = NULL
тест. Следующий оператор не возвращает строк, потому что expr = NULL
никогда не истина для любого выражения:
mysql> SELECT * FROM my_table WHERE phone =
NULL;
Искать NULL
значения, следует использовать IS NULL
тест. Следующие операторы показывают, как найти NULL
номер телефона и пустой номер телефона:
mysql>SELECT * FROM my_table WHERE phone IS NULL;
mysql>SELECT * FROM my_table WHERE phone = '';
См. Раздел
3.3.4.6, "Работающий с NULL
Значения", для дополнительной информации
и примеров.
Можно добавить индексирование на столбце, который может иметь NULL
значения, если
Вы используете MyISAM
, InnoDB
, или MEMORY
механизм хранения. Иначе, следует объявить индексированный столбец NOT NULL
, и невозможно вставить NULL
в столбец.
Читая данные с LOAD DATA INFILE
, пустые или недостающие столбцы обновляются с ''
. Загрузить a NULL
значение в столбец, использовать
\N
в файле данных. Литеральное слово"NULL
"может также использоваться при
некоторых обстоятельствах. См. Раздел 13.2.6,"LOAD DATA INFILE
Синтаксис".
При использовании DISTINCT
, GROUP BY
, или ORDER BY
, все NULL
значения расцениваются как равные.
При использовании ORDER BY
, NULL
значения
представляются сначала, или последние, если Вы определяете DESC
к виду в порядке
убывания.
Агрегат (сводка) функционирует такой как COUNT()
, MIN()
, и SUM()
проигнорировать NULL
значения. Исключение к
этому COUNT(*)
, который
считает строки и не отдельные значения столбцов. Например, следующий оператор производит два количества. Первым
является количество числа строк в таблице, и вторым является количество числа не -NULL
значения в age
столбец:
mysql> SELECT COUNT(*), COUNT(age) FROM
person;
Для некоторых типов данных, дескрипторов MySQL NULL
значения особенно. Если Вы
вставляете NULL
в a TIMESTAMP
столбец, текущая дата и время вставляются. Если Вы вставляете NULL
в целочисленный или столбец с плавающей точкой, который имеет AUTO_INCREMENT
атрибут, следующее число в последовательности вставляется.