Учебники

18) Нуль

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

MySQL NULL и не NULL Учебник с примерами

Null как значение

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

Чтобы удовлетворить требования истинных систем управления реляционными базами данных, MySQL использует NULL в качестве заполнителя для значений, которые не были представлены. На приведенном ниже снимке экрана показано, как значения NULL выглядят в базе данных.

MySQL NULL и не NULL Учебник с примерами

Давайте теперь посмотрим на некоторые из основ NULL, прежде чем мы углубимся в обсуждение.

  • NULL не является типом данных — это означает, что он не распознается как «int», «date» или любой другой определенный тип данных.
  • Арифметические операции с участием NULL всегда возвращают NULL, например, 69 + NULL = NULL.
  • Все агрегатные функции влияют только на строки, которые не имеют значений NULL .

Давайте теперь продемонстрируем, как функция count обрабатывает нулевые значения. Давайте посмотрим текущее содержимое таблицы членов

SELECT * FROM `members`;

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

membership_ numberfull_ namesgenderdate_of_ birthphysical_ addresspostal_ addresscontact_ numberemail
1Janet JonesFemale21-07-1980First Street Plot No 4Private Bag0759 253 542[email protected]
2Janet Smith JonesFemale23-06-1980Melrose 123NULLNULL[email protected]
3Robert PhilMale12-07-19893rd Street 34NULL12345[email protected]
4Gloria WilliamsFemale14-02-19842nd Street 23NULLNULLNULL
5Leonard HofstadterMaleNULLWoodcrestNULL845738767NULL
6Sheldon CooperMaleNULLWoodcrestNULL976736763NULL
7Rajesh KoothrappaliMaleNULLWoodcrestNULL938867763NULL
8Leslie WinkleMale14-02-1984WoodcrestNULL987636553NULL
9Howard WolowitzMale24-08-1981SouthParkP.O. Box 4563987786553lwolowitz[at]email.me

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

SELECT COUNT(contact_number)  FROM `members`;

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

COUNT (contact_number)
7

Примечание: значения, которые имеют значение NULL, не были включены

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

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

Состояние

НЕ Оператор Результат

Правда

Ложь

Ложь

Правда

 

Почему НЕ используется?

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

MySQL NULL и не NULL Учебник с примерами

NULL Ключевые слова

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

`comlumn_name'  IS NULL
`comlumn_name' NOT NULL

ВОТ

  • «IS NULL» - это ключевое слово, которое выполняет логическое сравнение. Он возвращает true, если предоставленное значение равно NULL, и false, если предоставленное значение не равно NULL.
  • «NOT NULL» - это ключевое слово, которое выполняет логическое сравнение. Он возвращает true, если предоставленное значение не равно NULL, и false, если предоставленное значение равно нулю.

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

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

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

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

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

SELECT * FROM `members` WHERE contact_number IS NULL;
 

Выполнение вышеупомянутого запроса дает детали участника, чей контактный номер НЕДЕЙСТВИТЕЛЕН

membership_ numberfull_namesgenderdate_of_birthphysical_addresspostal_addresscontact_ numberemail
1Janet JonesFemale21-07-1980First Street Plot No 4Private Bag0759 253 542[email protected]
3Robert PhilMale12-07-19893rd Street 34NULL12345[email protected]
5Leonard HofstadterMaleNULLWoodcrestNULL845738767NULL
6Sheldon CooperMaleNULLWoodcrestNULL976736763NULL
7Rajesh KoothrappaliMaleNULLWoodcrestNULL938867763NULL
8Leslie WinkleMale14-02-1984WoodcrestNULL987636553NULL
9Howard WolowitzMale24-08-1981SouthParkP.O. Box 4563987786553lwolowitz[at]email.me

Сравнение нулевого значения s

 

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

Например, использование ключевого слова «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 НУЛЬ
0

Результат запроса равен 0, что ЛОЖЬ

SELECT NULL IS NULL;
NULL IS NULL
1

Результат запроса - 1, ИСТИНА

Резюме

  • NULL is a value place holder for optional table fields.
  • MySQL treats the NULL value differently from other data types. The NULL values when used in a condition evaluates to the false Boolean value.
  • The NOT logical operate is used to test for Boolean values and evaluates to true if the Boolean value is false and false if the Boolean value is true.
  • The NOT NULL clause is used to eliminate NULL values from a result set
  • Performing arithmetic operations on NULL values always returns NULL results.
  • The comparison operators such as [, =, etc.] cannot be used to compare NULL values.