MySQL IS NULL & IS NOT NULL Підручник із ПРИКЛАДАМИ
У SQL Null є як значенням, так і ключовим словом. Давайте спочатку розглянемо значення 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 | 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 | 12345 | rm@tstreet.com |
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 використовується для перевірки логічних умов і повертає істину, якщо умова хибна. Оператор 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 видає таку помилку-
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 | |
---|---|---|---|---|---|---|---|
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.