JavaRush /Курси /SQL SELF /Знайомство з NULL. Відмінність NULL від 0

Знайомство з NULL. Відмінність NULL від 0

SQL SELF
Рівень 9 , Лекція 0
Відкрита

Настав час детальніше поговорити про NULL. І це зовсім не порожня розмова, хоч наш герой і виглядає... ніяк. Якби таблиця була домом, NULL був би його привидом — мовчазним, загадковим і непередбачуваним. Він наче присутній, але на питання не відповідає, у підрахунках не бере участі, порівнянь уникає. Це не просто "порожньо" — це "нічого не відомо".

У світі SQL NULL — не нуль, не порожній рядок і не "немає даних" у звичному сенсі. Це особливий знак невідомості, з яким треба поводитись обережно. Сьогодні розберемося, чому NULL — не просто дивний гість, а важливий учасник будь-якої бази даних. Адже він буквально означає "значення невідоме або не визначене".

Чим NULL відрізняється від порожнього рядка або числа 0?

Багато новачків плутають NULL з іншими значеннями, такими як порожній рядок '' або число 0. Давай розберемо ключові відмінності:

Поняття Значення
NULL Повна відсутність значення. Це не просто порожня коробка, це відсутність коробки
Порожній рядок Це рядок, у якого просто немає символів. Наприклад: ''
Число 0 Значення, що представляє конкретне число, рівне нулю

Приклад з реального життя: уяви, що у тебе є таблиця співробітників, і ти зберігаєш їхні зарплати. Якщо зарплата вказана як 0, значить, людині нічого не заплатили. Якщо ж зарплата вказана як NULL, то ти просто не знаєш, скільки їй платять (або це ще не визначено).

Як інтерпретувати NULL

Тепер, коли ми вже трохи знаємо, що таке NULL, давай подивимось, як з ним працює SQL. Найважливіше про NULL можна передати однією фразою: NULL нічому не дорівнює і нічому не не дорівнює, навіть самому собі.

SELECT NULL = NULL;  -- Результат: FALSE

Сюрприз! Чому так? Бо NULL — це невідомість. Якщо у тебе є два невідомих значення, ти не можеш стверджувати, що вони рівні, так само як і те, що вони не рівні.

Давай розберемо кілька прикладів:

Приклади операцій з NULL

SELECT NULL + 1;      -- Результат: NULL
SELECT NULL * 100;    -- Результат: NULL
SELECT NULL = 0;      -- Результат: FALSE
SELECT NULL <> 0;     -- Результат: FALSE

NULL при додаванні, множенні чи будь-якому іншому обчисленні завжди повертає NULL. Тут NULL працює не зовсім так, як 0 у математиці. Ми наче кидаємо щось у порожнечу і ця порожнеча все поглинає.

Практичні приклади

Уявімо таблицю students з інформацією про студентів:

id name birth_date grade
1 Alice 2000-01-01 85
2 Bob NULL 90
3 Charlie 1999-05-22 NULL
4 Diana NULL NULL

Приклад 1: Вплив NULL в умовах

Якщо ми спробуємо знайти всіх студентів без дати народження, поставивши умову WHERE birth_date = NULL:

SELECT *
FROM students 
WHERE birth_date = NULL;

Ми не отримаємо жодних результатів, бо NULL = NULL повертає FALSE. Для перевірки на NULL треба використовувати IS NULL:

SELECT * FROM students WHERE birth_date IS NULL;

Результат:

id name birth_date grade
2 Bob NULL 90
4 Diana NULL NULL

Приклад 2: Вплив NULL в обчисленнях

id name birth_date grade
1 Alice 2000-01-01 85
2 Bob NULL 90
3 Charlie 1999-05-22 NULL
4 Diana NULL NULL

Якщо ми спробуємо обчислити середню оцінку для всіх студентів:

SELECT AVG(grade) FROM students;

Результат буде: 87.5. Чому? Бо NULL ігнорується в агрегатних функціях, таких як AVG, SUM, MIN, MAX. Але будь уважний! Якщо тобі треба враховувати рядки з NULL, це потребує додаткових маніпуляцій.

Більш детально ми вивчимо роботу з NULL у наступних лекціях.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ