Suprasti NULL naudojimą, kad išvengtumėte duomenų bazių problemų
Naujiems duomenų bazių pasaulyje naudotojai dažnai painioja ypatingą lauko reikšmę - NULL vertę. Ši vertė gali būti randama lauke, kuriame yra bet kokio tipo duomenys, ir turi ypatingą reikšmę reliacinės duomenų bazės kontekste. Tikriausiai geriausia pradėti diskusiją apie NULL keliais žodžiais apie tai, kas NULL nėra :
- NULL nėra numeris nuliui.
- NULL nėra tuščia eilutė ("") vertė.
Priešingai, NULL yra vertė, naudojama norint pateikti nežinomą duomenų dalį. Dažnai duomenų bazės programuotojai naudoja frazę "NULL vertė", bet tai yra neteisinga. Prisiminti: NULL yra nežinoma vertė, kurioje laukas yra tuščias.
NULL realiame pasaulyje
Pažvelkime į paprastą pavyzdį: lentelę, kurioje pateikiamas vaisių stendo aprašas. Tarkime, kad mūsų inventoriuje yra 10 obuolių ir trys apelsinai. Mes taip pat atsargūs slyvos, tačiau mūsų inventoriaus informacija yra neišsami, ir mes nežinome, kiek (jei yra) slyvų yra. Naudodamiesi NULL reikšme, mes turėsime inventoriaus lentelę, pateiktą žemiau esančioje lentelėje.
Vaisių stendo inventorius
InventoryID | Prekė | Kiekis |
1 | Obuoliai | 10 |
2 | Apelsinai | 3 |
3 | Slyvos | NULL |
Būtų klaidinga įtraukti kiekį 0 į slyvų įrašą, nes tai reikštų, kad inventoriuje neturime slyvų. Priešingai, mes galime turėti slyvų, bet mes nesame tikri.
NULL arba NOT NULL?
Lentelė gali būti sukurta taip, kad leistų nustatyti NULL vertes arba ne.
Čia pateikiamas SQL pavyzdys, sukuriantis Inventoriaus lentelę, leidžiančią atlikti tam tikrus NULL:
SQL> CREATE TABLE INVENTORY (InventoryID INT NOT NULL, Prekė VARCHAR (20) NE NULL, Kiekis INT);Inventoriaus lentelė čia neleidžia NULL vertės " InventoryID" ir "Stulpelių" elementų , bet leidžia juos naudoti stulpelyje " Kiekis" .
NULL vertė yra visiškai gerai, todėl NULL reikšmės gali sukelti problemų, nes bet koks verčių, kurių viena yra NULL, palyginimas visada lemia NULL.
Norėdami patikrinti, ar jūsų lentelėje yra NULL vertės, naudokite operatorių IS NULL arba IS NOT NULL. Štai IS NULL pavyzdys:
SQL> SELECT INVENTORYID, ITEM, KIEKIS IŠ INVENTORIUS, KURIOS KIEKIS NĖRA NULL;Atsižvelgiant į mūsų pavyzdį, tai grįš:
InventoryID | Prekė | Kiekis |
---|---|---|
3 | Slyvos |
Veikianti NULL
Darbas su NULL reikšmėmis dažnai sukuria NULL rezultatus, priklausomai nuo SQL operacijos . Pavyzdžiui, darant prielaidą, kad A yra NULL:
Aritmetiniai operatoriai
- A + B = NULL
- A - B = NULL
- A * B = NULL
- A / B = NULL
Palyginimo operatoriai
- A = B = NULL
- A! = B = NULL
- A> B = NULL
- A!
Tai tik keletas operatorių pavyzdžių, kurie visada grąžins NULL, jei vienas operandas yra NULL. Egzistuoja daug sudėtingesnių užklausų, o viskas yra sudėtinga NULL reikšmių. Paimkite namo tašką tuo, kad, jei leisite NULL vertes savo duomenų bazėje, suprasite jų pasekmes ir planuosite.
Tai trumpa informacija apie NULL !