SQL: ssä Null on sekä arvo että avainsana. Tarkastellaan ensin NULL-arvoa -
Null arvona
Yksinkertaisesti sanottuna NULL on yksinkertaisesti paikanhaltija tiedoille, joita ei ole olemassa. Kun suoritat lisäysoperaatioita taulukoille, ne ovat aikoja, jolloin jotkut kenttäarvot eivät ole käytettävissä.
Täyttääkseen todellisten relaatiotietokantojen hallintajärjestelmien vaatimukset MySQL käyttää NULL: ää paikkana haltijoille arvoille, joita ei ole lähetetty. Alla oleva kuvakaappaus näyttää, kuinka NULL-arvot näyttävät tietokannassa.
Katsotaan nyt joitain NULL: n perusasioita, ennen kuin menemme pidemmälle keskusteluun.
- NULL ei ole tietotyyppi - se tarkoittaa, että sitä ei tunnisteta "int", "päivämäärä" tai muuksi määritetyksi tietotyypiksi.
- Aritmeettiset operaatiot , joihin liittyy NULL aina palata NULL esimerkiksi 69 + NULL = NULL.
- Kaikki aggregaattitoiminnot vaikuttavat vain riveihin, joilla ei ole NULL-arvoja .
Näytetään nyt, kuinka laskentatoiminto kohtelee nolla-arvoja. Katsotaanpa jäsenten taulukon nykyinen sisältö-
SELECT * FROM `members`;
Yllä olevan komentosarjan suorittaminen antaa meille seuraavat tulokset
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 |
Lasketaan kaikki jäsenet, jotka ovat päivittäneet yhteystietonumeronsa
SELECT COUNT(contact_number) FROM `members`;
Yllä olevan kyselyn suorittaminen antaa meille seuraavat tulokset.
COUNT(contact_number) |
---|
7 |
Huomaa: NULL-arvoja ei ole sisällytetty
Mikä ei ole?
NOT-loogista operaattoria käytetään totuusarvojen testaamiseen ja palauttaa arvon true, jos ehto on väärä. NOT-operaattori palauttaa arvon false, jos testattu ehto on tosi
Kunto |
EI käyttäjän tulosta |
Totta |
Väärä |
Väärä |
Totta |
Miksi käyttää NOT null?
Joissakin tapauksissa meidän on suoritettava laskelmat kyselyn tulosjoukolle ja palautettava arvot. Minkä tahansa aritmeettisen operaation suorittaminen sarakkeilla, joilla on NULL-arvo, palauttaa nolla tuloksen. Tällaisten tilanteiden välttämiseksi voimme käyttää NOT NULL -lauseketta rajoittaaksemme tuloksia, joilla tietomme toimivat.
EI NULL-arvoja
Oletetaan, että haluamme luoda taulukon, jossa on tiettyjä kenttiä, joiden arvot on aina annettava, kun uusia rivejä lisätään taulukkoon. Voimme käyttää NOT NULL -lauseketta tietyssä kentässä taulukkoa luodessamme.
Alla oleva esimerkki luo uuden taulukon, joka sisältää työntekijän tiedot. Työntekijän numero tulee aina antaa
CREATE TABLE `employees`(employee_number int NOT NULL,full_names varchar(255) ,gender varchar(6));
Yritetään nyt lisätä uusi tietue määrittelemättä työntekijän nimeä ja katsotaan mitä tapahtuu.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä antaa seuraavan virheen -
NULL-avainsanat
NULL-arvoa voidaan käyttää myös avainsanana suoritettaessa Boolen operaatioita arvoille, jotka sisältävät NULL-arvon. Hakusanaa "IS / NOT" käytetään yhdessä NULL-sanan kanssa tällaisiin tarkoituksiin. Perussyntaksi, kun nollaa käytetään avainsanana, on seuraava
`comlumn_name' IS NULL`comlumn_name' NOT NULL
TÄSSÄ
- "IS NULL" on avainsana, joka suorittaa Boolen-vertailun. Se palauttaa arvon tosi, jos toimitettu arvo on NULL ja epätosi, jos toimitettu arvo ei ole NULL.
- "NOT NULL" on avainsana, joka suorittaa Boolen-vertailun. Se palauttaa arvon tosi, jos annettu arvo ei ole NULL, ja epätosi, jos toimitettu arvo on nolla.
Tarkastellaan nyt käytännön esimerkkiä, joka käyttää NOT NULL-avainsanaa kaikkien sarakearvojen poistamiseen, joilla on nolla-arvot.
Oletetaan, että tarvitsemme yksityiskohtia jäsenistä, joiden yhteysnumero ei ole nolla. Voimme suorittaa kyselyn kuten
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Yllä olevan kyselyn suorittaminen antaa vain tietueet, joissa yhteyshenkilön numero ei ole nolla.
Oletetaan, että haluamme jäsenrekisterit, joissa yhteyshenkilön numero on tyhjä. Voimme käyttää seuraavaa kyselyä
SELECT * FROM `members` WHERE contact_number IS NULL;
Yllä olevan kyselyn suorittaminen antaa jäsenetiedot, joiden yhteyshenkilön numero 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 |
Nolla-arvon s vertaaminen
Kolmiarvoinen logiikka - Boolen operaatioiden suorittaminen olosuhteissa, joihin liittyy NULL, voi joko palauttaa "Tuntematon", "Tosi" tai "Epätosi".
Esimerkiksi käyttämällä "IS NULL" avainsana tehdessä vertailuoperaatiota NULL voi joko palauttaa true tai false . Muiden vertailuoperaattoreiden käyttäminen palauttaa "Tuntematon" (NULL).
Oletetaan, että verrataan viittä numeroa viiteen
SELECT 5 =5;
Kyselyn tulos on 1, mikä tarkoittaa TOSI
5 =5 |
---|
1 |
Tehdään sama toiminto NULL: n kanssa
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Katsotaanpa toista esimerkkiä
SELECT 5 > 5;
5> 5 |
---|
0 |
Kyselyn tulos on 0, mikä tarkoittaa EPÄTOSI
Katsotaanpa samaa esimerkkiä NULL: n avulla
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
Voidaan käyttää IS NULL -avainsanaa
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Kyselyn tulos on 0, mikä on EPÄTOSI
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Kyselyn tulos on 1, joka on TOSI
Yhteenveto
- NULL on arvopaikan haltija valinnaisille taulukokentille.
- MySQL kohtelee NULL-arvoa eri tavalla kuin muut tietotyypit. NULL-arvot, kun niitä käytetään olosuhteissa, arvioivat väärän loogisen arvon.
- NOT-loogista operaatiota käytetään loogisten arvojen testaamiseen ja se arvioi arvon tosi, jos looginen arvo on väärä ja väärä, jos looginen arvo on tosi.
- NOT NULL -lauseketta käytetään poistamaan NULL-arvot tulosjoukosta
- Aritmeettisten operaatioiden suorittaminen NULL-arvoille palauttaa aina NULL-tulokset.
- Vertailuoperaattoreita, kuten [, = jne.], Ei voida käyttää NULL-arvojen vertaamiseen.