MySQL IS NULL & IS NOT NULL Підручник із ПРИКЛАДАМИ

У SQL Null є як значенням, так і ключовим словом. Давайте спочатку розглянемо значення NULL –

MySQL Є NULL & НЕ Є NULL

Null як значення

Простіше кажучи, NULL — це просто заповнювач для даних, яких не існує. Під час виконання операцій вставки в таблицях іноді значення деяких полів будуть недоступні.

Щоб відповідати вимогам справжньої системи управління реляційними базами даних, MySQL використовує NULL як заповнювач для значень, які не були надіслані. На знімку екрана нижче показано, як значення 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

Давайте підрахуємо всіх учасників, які оновили свій contact_number

SELECT COUNT(contact_number)  FROM `members`;

Виконання наведеного вище запиту дає нам такі результати.

COUNT(contact_number)
7

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

Що НІ?

Логічний оператор NOT використовується для перевірки логічних умов і повертає істину, якщо умова хибна. Оператор NOT повертає false, якщо перевірена умова є істинною

стан $NOT Operator Результат
Правда Помилковий
Помилковий Правда

Навіщо використовувати NOT null?

Бувають випадки, коли нам доведеться виконувати обчислення на наборі результатів запиту та повертати значення. Виконання будь-яких арифметичних операцій зі стовпцями, які мають значення 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 видає таку помилку-

Значення NOT NULL

NULL Ключові слова

NULL також можна використовувати як ключове слово під час виконання логічних операцій над значеннями, які містять NULL. Для таких цілей у поєднанні зі словом NULL використовується ключове слово «IS/NOT». Основний синтаксис, коли 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;

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

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

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 false. Використання інших операторів порівняння повертає «Невідомо» (NULL).

Припустимо, ви порівнюєте число п'ять з п'ятьма

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, коли вони використовуються в умові, обчислюються як логічне значення false.
  • Логічна операція NOT використовується для перевірки логічних значень і оцінюється як true, якщо логічне значення є false, і false, якщо логічне значення є true.
  • Речення NOT NULL використовується для усунення значень NULL із набору результатів
  • Виконання арифметичних операцій над значеннями NULL завжди повертає результати NULL.
  • Оператори порівняння, такі як [, = тощо], не можна використовувати для порівняння значень NULL.