MySQL IS NULL и IS NOT NULL Учебное пособие с ПРИМЕРАМИ

В SQL Null является одновременно значением и ключевым словом. Давайте сначала посмотрим на значение NULL –

MySQL ЕСТЬ НУЛЬ И НЕ НУЛЬ

Нуль как значение

Проще говоря, 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 email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345rm@tstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter MaleNULL 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

Давайте посчитаем всех участников, обновивших свой контактный_номер.

SELECT COUNT(contact_number)  FROM `members`;

Выполнение вышеуказанного запроса дает нам следующие результаты.

COUNT(contact_number)
7

Примечание. Значения NULL не включены.

Что не является?

Логический оператор NOT используется для проверки логических условий и возвращает true, если условие ложно. Оператор NOT возвращает false, если проверенное условие истинно.

Состояние НЕ Operaрезультат
Правда Ложь
Ложь Правда

Зачем использовать NOT null?

Будут случаи, когда нам придется выполнять вычисления над набором результатов запроса и возвращать значения. Выполнение любых арифметических операций над столбцами, имеющими значение NULL, возвращает нулевые результаты. Чтобы избежать таких ситуаций, мы можем использовать предложение NOT 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 Workbench выдает следующую ошибку:

НЕ НУЛЕВЫЕ значения

НУЛЕВЫЕ ключевые слова

NULL также можно использовать в качестве ключевого слова при выполнении логических операций над значениями, содержащими NULL. Для таких целей ключевое слово «IS/NOT» используется вместе со словом NULL. Основной синтаксис, когда в качестве ключевого слова используется значение null, выглядит следующим образом.

`comlumn_name'  IS NULL
`comlumn_name' NOT NULL

ВОТ

  • "НУЛЕВОЙ — ключевое слово, выполняющее логическое сравнение. Он возвращает true, если предоставленное значение равно NULL, и false, если предоставленное значение не NULL.
  • "НЕ НОЛЬ"— ключевое слово, выполняющее логическое сравнение. Он возвращает true, если предоставленное значение не равно NULL, и false, если предоставленное значение равно null.

Давайте теперь рассмотрим практический пример, в котором ключевое слово NOT NULL используется для исключения всех значений столбца, имеющих нулевые значения.

Продолжая приведенный выше пример, предположим, что нам нужны сведения об участниках, чей контактный номер не равен нулю. Мы можем выполнить запрос типа

SELECT * FROM `members` WHERE contact_number IS NOT NULL;

Выполнение приведенного выше запроса дает только записи, в которых контактный номер не равен нулю.

Предположим, нам нужны записи участников, в которых контактный номер имеет значение null. Мы можем использовать следующий запрос

SELECT * FROM `members` WHERE contact_number IS NULL;

Выполнение приведенного выше запроса дает данные участника, чей контактный номер равен NULL.

membership_ number full_names gender date_of_birth physical_address postal_address contact_ number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 rm@tstreet.com
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

Сравнение нулевых значений

Трехзначная логика – выполнение логических операций в условиях, содержащих NULL, может либо вернуть «Неизвестно», «Правда» или «Ложь».

Например, используя ключевое слово «IS NULL» при выполнении операций сравнения с участием NULL может либо вернуться правда or ложный. Использование других операторов сравнения возвращает «Неизвестно» (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 используется для проверки логических значений и оценивается как true, если логическое значение ложно, и как ложь, если логическое значение истинно.
  • Предложение NOT NULL используется для исключения значений NULL из набора результатов.
  • Выполнение арифметических операций над значениями NULL всегда возвращает результаты NULL.
  • Операторы сравнения, такие как [, = и т. д.], нельзя использовать для сравнения значений NULL.