SQL-is on Null nii väärtus kui ka märksõna. Vaatame kõigepealt NULL väärtust -
Null kui väärtus
Lihtsamalt öeldes on NULL lihtsalt andmete hoidja, mida pole olemas. Tabelite sisestamistoimingute tegemisel on need ajad, mil mõned välja väärtused pole saadaval.
Päris relatsiooniliste andmebaaside haldussüsteemide nõuete täitmiseks kasutab MySQL esitamata väärtuste kohahoidjana NULL-i. Allpool olev pilt näitab, kuidas NULL-väärtused andmebaasis välja näevad.
Vaatame nüüd NULLi põhitõdesid, enne kui läheme arutelusse.
- NULL ei ole andmetüüp - see tähendab, et seda ei tunnistata int, kuupäev ega muu määratletud andmetüübina.
- Aritmeetikakäsud kaasates NULL alati tagasi NULL näiteks 69 + NULL = NULL.
- Kõik koondfunktsioonid mõjutavad ainult ridu, millel pole NULL väärtusi .
Näitame nüüd, kuidas loendusfunktsioon nullväärtusi kohtleb. Vaatame liikmete tabeli praegust sisu-
SELECT * FROM `members`;
Ülaltoodud skripti käivitamine annab meile järgmised tulemused
membership_ number | full_ names | gender | date_of_ birth | physical_ address | postal_ address | contact_ number | |
---|---|---|---|---|---|---|---|
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 |
Loendame kokku kõik liikmed, kes on oma kontaktnumbrit uuendanud
SELECT COUNT(contact_number) FROM `members`;
Ülaltoodud päringu täitmine annab meile järgmised tulemused.
COUNT(contact_number) |
---|
7 |
Märkus: NULL-väärtusi ei ole lisatud
Mis EI OLE?
Loogilist operaatorit NOT kasutatakse Boole'i tingimuste testimiseks ja see tagastab tõene, kui tingimus on vale. Operaator NOT tagastab vale, kui testitud tingimus on tõene
Seisund |
EI operaatori tulemus |
Tõsi |
Vale |
Vale |
Tõsi |
Miks kasutada NOT null?
On juhtumeid, kui peame arvutama päringu tulemuste komplekti ja tagastama väärtused. NULL-väärtusega veergudel mis tahes aritmeetiliste toimingute tegemine tagastab nulltulemused. Selliste olukordade vältimiseks võime kasutada klahvi NOT NULL, et piirata nende andmete tulemusi.
EI NULL Väärtused
Oletame, et tahame luua tabeli, millel on kindlad väljad ja millele tuleks alati lisada uusi väärtusi tabelisse väärtused. Tabeli loomisel saame antud väljal kasutada lauset NOT NULL.
Allpool toodud näide loob uue tabeli, mis sisaldab töötaja andmeid. Töötaja number tuleb alati esitada
CREATE TABLE `employees`(employee_number int NOT NULL,full_names varchar(255) ,gender varchar(6));
Proovime nüüd sisestada uue kirje töötaja nime täpsustamata ja vaatame, mis juhtub.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Ülaltoodud skripti käivitamine MySQL-i tööpingis annab järgmise tõrke -
NULL märksõna
NULL-i saab kasutada märksõnana ka Boole'i toimingute tegemisel väärtustega, mis sisaldavad NULL-i. Sellistel eesmärkidel kasutatakse märksõna "IS / NOT" koos NULL-sõnaga. Põhisüntaks, kui nulli kasutatakse märksõnana, on järgmine
`comlumn_name' IS NULL`comlumn_name' NOT NULL
SIIN
- "IS NULL" on märksõna, mis täidab Boole'i võrdlust. See tagastab tõese, kui pakutav väärtus on NULL, ja vale, kui sisestatud väärtus pole NULL.
- "NOT NULL" on märksõna, mis täidab Boole'i võrdlust. See tagastab tõese, kui sisestatud väärtus pole NULL, ja vale, kui sisestatud väärtus on null.
Vaatame nüüd praktilist näidet, mis kasutab märksõna NOT NULL kõigi nullväärtustega veeruväärtuste kõrvaldamiseks.
Eespool toodud näite jätkamiseks oletame, et vajame üksikasju liikmete kohta, kelle kontaktnumber pole null. Saame täita sellist päringut nagu
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Ülaltoodud päringu täitmine annab ainult kirjed, kus kontakti number pole null.
Oletame, et soovime liikmete kirjeid, kus kontakti number on null. Saame kasutada järgmist päringut
SELECT * FROM `members` WHERE contact_number IS NULL;
Ülaltoodud päringu täitmine annab liikme üksikasjad, kelle kontaktinumber on NULL
membership_ number | full_names | gender | date_of_birth | physical_address | postal_address | contact_ number | |
---|---|---|---|---|---|---|---|
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 |
Nullväärtuse s võrdlemine
Kolme väärtusega loogika - Boole'i toimingute tegemine tingimustes, mis hõlmavad NULL-i, võib anda kas "Tundmatu", "Tõene" või "Vale".
Näiteks NULL-i hõlmavate võrdlustoimingute tegemisel märksõna "IS NULL" kasutamine võib anda kas tõese või vale . Teiste võrdlusoperaatorite kasutamisel tagastatakse väärtus "Tundmatu" (NULL).
Oletame, et võrdlete numbrit viis 5-ga
SELECT 5 =5;
Päringu tulemus on 1, mis tähendab TÕENE
5 =5 |
---|
1 |
Teeme sama toimingu ka NULL-iga
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Vaatame veel ühte näidet
SELECT 5 > 5;
5> 5 |
---|
0 |
Päringu tulemus on 0, mis tähendab FALSE
Vaatame sama näidet, kasutades NULL-i
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
Kasutab märksõna IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Päringu tulemus on 0, mis on FALSE
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Päringu tulemus on 1, mis on TÕSI
Kokkuvõte
- NULL on valikuliste tabeliväljade väärtusekoht.
- MySQL käsitleb NULL-väärtust teistest andmetüüpidest erinevalt. Tingimuses kasutatavad NULL-väärtused vastavad valele Boole'i väärtusele.
- Loogilist operatsiooni NOT kasutatakse tõeväärtuse testimiseks ja see hindab väärtusele Tõene, kui tõeväärtus on tõene, ja tõeväärtus on tõene, kui tõeväärtus on tõene.
- Klauslit NOT NULL kasutatakse NULL-väärtuste kõrvaldamiseks tulemuste komplektist
- NULL-väärtuste aritmeetiliste toimingute tegemine annab alati NULL-tulemused.
- NULL-väärtuste võrdlemiseks ei saa kasutada selliseid võrdlusoperaatoreid nagu [, = jne.].