У 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 |
Давайте порахуємо всіх членів, які оновили номер контакту
SELECT COUNT(contact_number) FROM `members`;
Виконання вищезазначеного запиту дає такі результати.
COUNT(contact_number) |
---|
7 |
Примітка: Значення, які мають значення NULL, не були включені
Що НЕ?
Логічний оператор NOT використовується для перевірки булевих умов і повертає true, якщо умова хибна. Оператор NOT повертає значення false, якщо перевірена умова відповідає дійсності
Хвороба |
НЕ Результат оператора |
Правда |
помилковий |
помилковий |
Правда |
Чому використовувати 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 дає таку помилку -
NULL Ключові слова
NULL також може використовуватися як ключове слово при виконанні булевих операцій зі значеннями, що містять NULL. Для таких цілей разом із NULL-словом використовується ключове слово "IS / NOT". Основний синтаксис, коли 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;
Виконуючи наведений вище запит, ви отримуєте деталі учасника, контактний номер яких 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, може повернути "Невідомо", "Істинно" або "Невірно".
Наприклад, використання ключового слова "IS NULL" при виконанні операцій порівняння, що включає NULL, може повернути true або false . Використання інших операторів порівняння повертає "Невідомо" (NULL).
Припустимо, ви порівняєте число п’яте з 5
SELECT 5 =5;
Результат запиту - 1, що означає TRUE
5 =5 |
---|
1 |
Давайте зробимо ту ж операцію з NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Давайте розглянемо ще один приклад
SELECT 5 > 5;
5> 5 |
---|
0 |
Результат запиту - 0, що означає FALSE
Давайте розглянемо той самий приклад використання 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, що є TRUE
Резюме
- NULL - це власник місця значення для необов’язкових полів таблиці.
- MySQL трактує значення NULL інакше, ніж інші типи даних. Значення NULL при використанні в умові обчислюється хибним булевим значенням.
- Логічна операція NOT використовується для перевірки булевих значень і обчислює значення true, якщо булеве значення хибне, і false, якщо булеве значення істинне.
- Речення NOT NULL використовується для виключення значень NULL із набору результатів
- Виконання арифметичних операцій над значеннями NULL завжди повертає результати NULL.
- Оператори порівняння, такі як [, = та ін.], Не можна використовувати для порівняння значень NULL.