MySQL НУЛЬНИЙ & НЕ ПУСТИЙ підручник з ПРИКЛАДАМИ

Зміст:

Anonim

У 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 email
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 email
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.