В SQL Null одновременно является значением и ключевым словом. Давайте сначала посмотрим на значение NULL -
Нулевое значение как значение
Проще говоря, NULL - это просто заполнитель для несуществующих данных. При выполнении операций вставки в таблицы будут моменты, когда некоторые значения полей будут недоступны.
Чтобы соответствовать требованиям настоящих систем управления реляционными базами данных, MySQL использует NULL в качестве заполнителя для значений, которые не были отправлены. На снимке экрана ниже показано, как значения NULL выглядят в базе данных.
Давайте теперь рассмотрим некоторые основы NULL, прежде чем мы продолжим обсуждение.
- NULL не является типом данных - это означает, что он не распознается как «int», «date» или любой другой определенный тип данных.
- Арифметические операции с участием NULL всегда возвращают NULL, например 69 + NULL = NULL.
- Все агрегатные функции влияют только на строки, не имеющие значений NULL .
Давайте теперь продемонстрируем, как функция count обрабатывает нулевые значения. Давайте посмотрим на текущее содержимое таблицы участников -
SELECT * FROM `members`;
Выполнение вышеуказанного скрипта дает нам следующие результаты
membership_ number | full_ names | gender | date_of_ birth | physical_ address | postal_ address | contact_ number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me |
Подсчитаем всех участников, которые обновили свой contact_number
SELECT COUNT(contact_number) FROM `members`;
Выполнение вышеуказанного запроса дает нам следующие результаты.
COUNT(contact_number) |
---|
7 |
Примечание: значения NULL не были включены
Что не является?
Логический оператор НЕ используется для проверки логических условий и возвращает истину, если условие ложно. Оператор NOT возвращает false, если проверяемое условие истинно.
Условие |
НЕ Результат оператора |
Истинный |
Ложь |
Ложь |
Истинный |
Зачем использовать NOT null?
Будут случаи, когда нам придется выполнять вычисления с набором результатов запроса и возвращать значения. Выполнение любых арифметических операций со столбцами, имеющими значение NULL, возвращает нулевые результаты. Чтобы избежать таких ситуаций, мы можем использовать предложение NOT NULL, чтобы ограничить результаты, с которыми работают наши данные.
НЕ NULL значения
Предположим, мы хотим создать таблицу с определенными полями, которые всегда должны снабжаться значениями при вставке новых строк в таблицу. Мы можем использовать предложение NOT NULL для данного поля при создании таблицы.
В приведенном ниже примере создается новая таблица, содержащая данные сотрудника. Номер сотрудника всегда должен быть указан
CREATE TABLE `employees`(employee_number int NOT NULL,full_names varchar(255) ,gender varchar(6));
Давайте теперь попробуем вставить новую запись без указания имени сотрудника и посмотрим, что произойдет.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Выполнение вышеуказанного скрипта в рабочей среде MySQL дает следующую ошибку:
NULL Ключевые слова
NULL также можно использовать в качестве ключевого слова при выполнении логических операций со значениями, включающими NULL. Для таких целей ключевое слово «IS / NOT» используется вместе со словом NULL. Базовый синтаксис, когда в качестве ключевого слова используется null, выглядит следующим образом
`comlumn_name' IS NULL`comlumn_name' NOT NULL
ЗДЕСЬ
- «IS NULL» - это ключевое слово, которое выполняет логическое сравнение. Он возвращает истину, если предоставленное значение равно NULL, и false, если предоставленное значение не равно NULL.
- «NOT NULL» - это ключевое слово, которое выполняет логическое сравнение. Он возвращает истину, если предоставленное значение не равно NULL, и false, если предоставленное значение равно null.
Давайте теперь рассмотрим практический пример, в котором ключевое слово NOT NULL используется для исключения всех значений столбцов, имеющих нулевые значения.
Продолжая приведенный выше пример, предположим, что нам нужны сведения об участниках, контактный номер которых не равен нулю. Мы можем выполнить такой запрос, как
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Выполнение вышеуказанного запроса дает только записи, в которых контактный номер не равен нулю.
Предположим, нам нужны записи участников, где контактный номер равен нулю. Мы можем использовать следующий запрос
SELECT * FROM `members` WHERE contact_number IS NULL;
Выполнение вышеуказанного запроса дает сведения о члене, контактный номер которого равен NULL.
membership_ number | full_names | gender | date_of_birth | physical_address | postal_address | contact_ number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me |
Сравнение нулевого значения s
Логика с тремя значениями - выполнение логических операций с условиями, которые включают NULL, может возвращать «Unknown», «True» или «False».
Например, использование ключевого слова «IS NULL» при выполнении операций сравнения с использованием NULL может вернуть либо истину, либо ложь . Использование других операторов сравнения возвращает «Неизвестно» (NULL).
Предположим, вы сравниваете число пять с числом 5.
SELECT 5 =5;
Результат запроса - 1, что означает ИСТИНА.
5 =5 |
---|
1 |
Проделаем ту же операцию с NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Давайте посмотрим на другой пример
SELECT 5 > 5;
5> 5 |
---|
0 |
Результат запроса - 0, что означает ЛОЖЬ.
Давайте посмотрим на тот же пример с использованием NULL
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
Давайте использовать ключевое слово IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Результат запроса - 0, что ЛОЖЬ.
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Результат запроса - 1, что соответствует ИСТИНА.
Резюме
- NULL - это заполнитель значения для необязательных полей таблицы.
- MySQL обрабатывает значение NULL иначе, чем другие типы данных. Значения NULL при использовании в условии оцениваются как ложное логическое значение.
- Логическая операция НЕ используется для проверки логических значений и оценивается как истина, если логическое значение ложно, и ложь, если логическое значение истинно.
- Предложение NOT NULL используется для исключения значений NULL из набора результатов.
- Выполнение арифметических операций над значениями NULL всегда возвращает результаты NULL.
- Операторы сравнения, такие как [, = и т. Д.], Нельзя использовать для сравнения значений NULL.