Artıq vaxtdır ki, NULL haqqında bir az daha ətraflı danışaq. Və bu, heç də boş söhbət deyil, baxmayaraq ki, bizim qəhrəmanımız... heç bir şeyə bənzəmir. Əgər cədvəl ev olsaydı, NULL onun ruhu olardı — səssiz, sirli və gözlənilməz. Sanki var, amma suallara cavab vermir, hesablamalarda iştirak etmir, müqayisədən qaçır. Bu sadəcə "boş" deyil — bu "heç nə məlum deyil" deməkdir.
SQL dünyasında NULL — nə sıfırdır, nə boş sətirdir, nə də "məlumat yoxdur" adi mənada. Bu, xüsusi bir naməlumluq işarəsidir və onunla ehtiyatla davranmaq lazımdır. Bu gün başa düşəcəyik ki, NULL sadəcə qəribə bir qonaq deyil, hər bir verilənlər bazasının vacib iştirakçısıdır. Çünki o, sözün əsl mənasında "dəyər məlum deyil və ya müəyyən olunmayıb" deməkdir.
NULL boş sətirdən və ya 0 rəqəmindən nə ilə fərqlənir?
Çox yeni başlayanlar NULL-u başqa dəyərlərlə, məsələn, boş sətir '' və ya 0 rəqəmi ilə qarışdırırlar. Gəlin əsas fərqlərə baxaq:
| Anlayış | Dəyər |
|---|---|
NULL |
Dəyərin tamamilə olmaması. Bu sadəcə boş qutu deyil, ümumiyyətlə qutu yoxdur |
| Boş sətir | Sadəcə heç bir simvolu olmayan sətirdir. Məsələn: '' |
0 rəqəmi |
Konkret olaraq sıfıra bərabər olan bir dəyər |
Həyatdan bir nümunə: təsəvvür et ki, səndə işçilərin cədvəli var və onların maaşlarını saxlayırsan. Əgər maaş 0 yazılıbsa, deməli, adama heç nə ödənilməyib. Amma maaş NULL yazılıbsa, sadəcə bilmirik ona nə qədər maaş verilir (və ya hələ müəyyən olunmayıb).
NULL-u necə başa düşmək olar
Artıq bir az bildik ki, NULL nədir, indi baxaq SQL onunla necə işləyir. NULL haqqında ən vacib şeyi bir cümlə ilə demək olar: NULL heç nəyə bərabər deyil və heç nəyə bərabər deyil, hətta özünə də.
SELECT NULL = NULL; -- Nəticə: FALSE
Sürpriz! Niyə belədir? Çünki NULL — naməlumluqdur. Əgər səndə iki naməlum dəyər varsa, onların bərabər olduğunu və ya olmadığını deyə bilməzsən.
Gəlin bir neçə nümunəyə baxaq:
NULL ilə əməliyyat nümunələri
SELECT NULL + 1; -- Nəticə: NULL
SELECT NULL * 100; -- Nəticə: NULL
SELECT NULL = 0; -- Nəticə: FALSE
SELECT NULL <> 0; -- Nəticə: FALSE
NULL toplama, vurma və ya başqa hər hansı hesablama zamanı həmişə NULL qaytarır. Burada NULL tam olaraq riyaziyyatda 0 kimi işləmir. Sanki nəyisə boşluğa atırsan və o boşluq hər şeyi udur.
Praktik nümunələr
Təsəvvür et cədvəldə students var və orada tələbələr haqqında məlumat saxlanılır:
| 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 |
Nümunə 1: NULL-un şərtlərdə təsiri
Əgər biz doğum tarixi olmayan bütün tələbələri tapmaq istəsək və şərt kimi WHERE birth_date = NULL yazsaq:
SELECT *
FROM students
WHERE birth_date = NULL;
Heç bir nəticə almayacağıq, çünki NULL = NULL FALSE qaytarır. NULL-u yoxlamaq üçün IS NULL istifadə etmək lazımdır:
SELECT * FROM students WHERE birth_date IS NULL;
Nəticə:
| id | name | birth_date | grade |
|---|---|---|---|
| 2 | Bob | NULL | 90 |
| 4 | Diana | NULL | NULL |
Nümunə 2: NULL-un hesablarda təsiri
| 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 |
Əgər bütün tələbələr üçün orta qiyməti hesablamaq istəsək:
SELECT AVG(grade) FROM students;
Nəticə olacaq: 87.5. Niyə? Çünki NULL AVG, SUM, MIN, MAX kimi aggregat funksiyalarda nəzərə alınmır. Amma diqqətli ol! Əgər sənə NULL olan sətirləri də nəzərə almaq lazımdırsa, əlavə manipulyasiyalar etmək lazım olacaq.
NULL ilə işləməyi daha ətraflı növbəti dərslərdə öyrənəcəyik.
GO TO FULL VERSION