DBMS-də boş dəyərlər

Bir cədvəldə atribut dəyərləri həmişə bilinən dəyərlər deyil. Sütun dəyərləri yerləşdirmə zamanı bilinməməlidir, sonuncusu yenilənə və ya hesablana bilər. Bəzən sütunun müəyyən birləşmə dəsti üçün bilinən heç bir dəyəri olmayacaq.

Tələbə cədvəlinin AVG_MARKS sütununa sahib olduğunu düşünək, onun dəyəri cədvələ daxil edilən tələbə təfərrüatları daxil edilə bilməz (təsəvvür edin ki, tələbə məlumatları kursa yazıldıqda daxil edilir). Bu sütun dəyəri imtahanda iştirak etdikdən və qiymətlərini alandan sonra mövcud olacaq. Eynilə, şagirdin telefon nömrəsinin olmadığını və ya bilinmədiyini düşünək. Bu halda hansı dəyər daxil ediləcək? Xeyr və ya bilinməyən daxil edə bilərikmi? Bu cür dəyərləri daxil etdikdə, mövcud olmadığı mənasını vermir. Bəzi dəyərlər kimi qəbul edilir. 'Bilinməyən'i təmsil etmək üçün SQL NULL dəyərləri adlanan xüsusi bir dəyər istifadə edir. Derleyicinin dəyərin olmadığını ifadə edir.

DB -də masaları, NULL sütun dəyərləri boş sütun (boşluq yoxdur) və ya NULL və ya (null) ilə təmsil olunur. Sütun dəyərinin sıfır olub olmadığını yoxlamaq lazım olduğu bir sorğuda '=' operatorunu istifadə edərək birbaşa müqayisə edə bilmərik, çünki bu dəyər bilinmir; naməlum həmişə bilinməyənə bərabər ola bilməz və ya belə dəyərləri müqayisə edə bilmərik. Ancaq 'IS NULL' və ya 'IS NULL NOT' bəndindən istifadə edərək bilinmədiklərini yoxlayaraq müqayisə edə bilərik.

SELECT * FROM STUDENT WHERE AVG_MARKS IS NULL; -- checks if the value is null and if yes returns the row.

SELECT * FROM STUDENT WHERE AVG_MARKS IS NOT NULL; -- checks if the value is not null and if yes returns the row.

  • NULL sütunları ilə hər hansı bir arifmetik əməliyyat NULL dəyərləri ilə nəticələnəcəkdir. Tələbədən birinin hələ orta qiymət ala bilmədiyi aşağıdakı nümunəni nəzərdən keçirin. İndi avg_mark sütunu əlavə etməyə çalışırıq, NULL dəyəri ilə nəticələnəcəkdir.

  • COUNT xaricindəki bütün məcmu funksiyalar NULL dəyərlərini görməzdən gəlir. Yuxarıdakı nümunəni bir daha nəzərdən keçirin. Maksimum və min orta qiymətləri tapmaq üçün sorğu etsək, sıfır dəyəri görməyəcək və nəticə verəcəkdir.

MAX SEÇİN (AVG_MARK), MIN (AVG_MARK) DAN TƏLƏBƏ;

Eyni zamanda, sorğu cədvəldəki şagirdləri avg_mark sütunundan istifadə edərək sayarsa, sıfır sütunu da nəzərdən keçirəcək və nəticəsi 3 olacaqdır. Yəni sayma sorğuda istifadə edildikdə sütunu və ya onun dəyərini nəzərə almır.

SAYI SEÇİN (AVG_MARK) DAN TƏLƏBƏ;

  • NULL dəyəri ilə birlikdə istifadə olunan hər hansı bir müqayisə operatoru sıfır dəyəri özü qaytaracaqdır.

SEÇİM * DAN TƏLƏBƏ HARADA STD_ID = 100 AVG_MARK> 50;

Bu müqayisə NULL ilə nəticələndiyindən bu sorğu heç bir nəticə vermir və cədvəldə heç bir dəyər tapa bilmir.

Şərh yaz

Translate »