MySQL ON NULL & EI OLE NULL esimerkkien kera
⚡ Älykäs yhteenveto
MySQL IS NULL ja IS NOT NULL ovat vertailuhakusanoja, jotka testaavat, puuttuuko sarakkeesta arvo. NULL merkitsee puuttuvaa tietoa, toimii eri tavalla kuin nolla tai tyhjä merkkijono ja vaatii erilliset operaattorit luotettavaa suodatusta varten.
SQL:ssä NULL on sekä arvo että avainsana. Tarkastellaan ensin NULL-arvoa.
Mikä on NULL-funktio? MySQL?
Yksinkertaisesti sanottuna, NULL on paikkamerkki tiedolle, jota ei ole olemassaKun taulukoihin lisätään toimintoja, jotkin kenttien arvot eivät aina ole käytettävissä.
Täyttääkseen todellisten relaatiotietokannan hallintajärjestelmien vaatimukset, MySQL käyttää NULL-arvoa paikkamerkkinä arvoille, joita ei ole lähetetty. Alla oleva kuvakaappaus näyttää, miltä NULL-arvot näyttävät tietokantataulukossa.
Huomaa, että tyhjät solut on merkitty NULL-merkillä, eivätkä tyhjällä tekstillä eivätkä nollalla. Ennen kuin jatkat, tutustu NULL-merkinnän perusteisiin.
- NULL ei ole tietotyyppi – tämä tarkoittaa, että sitä ei tunnisteta "int", "date" tai muuksi määritellyksi tietotyypiksi.
- Aritmeettiset toimenpiteet johon NULL aina palauta NULLesimerkiksi 69 + NULL = NULL.
- bridge kokonaisfunktiot jätä NULL-arvoja sisältävät rivit huomiottaAinoa poikkeus on COUNT(*), joka laskee jokaisen rivin riippumatta siitä, onko kyseessä NULL.
Miten aggregaattifunktiot käsittelevät NULL-arvoa
Tämä sääntö muuttaa raportointikyselyiden palauttamia vastauksia, joten todistetaan se. Aloitetaan jäsentaulukon nykyisestä sisällöstä.
SELECT * FROM `members`;
Yllä olevan skriptin 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 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
| 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 |
Korostetussa yhteystietonumero-sarakkeessa on yhteensä yhdeksän riviä, mutta kaksi niistä on TYHJÄ. Lasketaanpa 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 |
Huomautus: Vastaus on 7 eikä 9, koska kahta NULL-arvoa ei otettu mukaan. COUNT(*)-funktion suorittaminen samassa taulukossa palauttaisi arvon 9, koska COUNT(*) laskee rivejä arvojen sijaan.
NOT NULL Arvot
Turvallisempi lähestymistapa on estää NULL-operaattoria syöttämästä pakollisia sarakkeita ollenkaan. Tämä on NOT NULL -rajoitteen tehtävä.
Mikä on EI OperaTor?
NOT-operaattoria käytetään totuusarvojen testaamiseen, ja se palauttaa arvon true, jos ehto on epätosi. NOT-operaattori palauttaa arvon false, jos testattava ehto on tosi.
| Kunto | ÄLÄ Operator Tulos |
|---|---|
| Totta | Väärä |
| Väärä | Totta |
Miksi käyttää NOT NULL -arvoa?
Joskus meidän on suoritettava laskutoimituksia kyselyn tulosjoukolle ja palautettava arvot. Minkä tahansa aritmeettisen operaation suorittaminen NULL-arvoa sisältävälle sarakkeelle palauttaa NULL-tuloksen. Tällaisten tilanteiden välttämiseksi voimme käyttää NOT NULL -lauseketta rajoittaaksemme tuloksia, joihin datamme vaikuttaa.
Taulukon luominen NOT NULL -sarakkeella
Oletetaan, että haluamme luoda taulukon, jonka tietyille kentille tulisi aina antaa arvot uusia rivejä lisättäessä. Voimme käyttää NOT NULL -lauseketta tietylle kentälle taulukkoa luotaessa.
Alla oleva esimerkki luo uuden taulukon, joka sisältää työntekijätiedot. Työntekijänumero on aina annettava.
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Yritetään nyt lisätä uusi tietue määrittämättä työntekijänumeroa ja katsotaan, mitä tapahtuu.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Suoritetaan yllä oleva komentosarja MySQL Työpöytä antaa seuraavan virheen, koska pakollinen sarake on jätetty pois.
ON NULL ja EI OLE NULL Avainsanat
Rajoitus estää uudet NULL-arvot. Jos NULL-arvoja on jo olemassa, avainsanana käytetään NULL-arvoa. Syntaksi on seuraava.
column_name IS NULL column_name IS NOT NULL
TÄÄLTÄ
- "ON NULL" on avainsana, joka suorittaa Boolen vertailun. Se palauttaa tosi, jos annettu arvo on NULL ja false, jos annettu arvo ei ole NULL.
- "EI OLE TYHJÄ" on avainsana, joka suorittaa päinvastaisen vertailun. Se palauttaa arvon true, jos annettu arvo ei ole NULL, ja arvon false, jos annettu arvo on NULL.
Tarkastellaan käytännön esimerkkiä, jossa IS NOT NULL -avainsanaa käytetään poistamaan kaikki rivit, jotka sisältävät NULL-arvoja sarakkeessa.
Jatkaen yllä olevaa jäsentaulukkoa, oletetaan, että tarvitsemme niiden jäsenten tiedot, joiden yhteystiedot eivät ole NULL. Voimme suorittaa seuraavanlaisen kyselyn.
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Yllä olevan kyselyn suorittaminen palauttaa vain seitsemän tietuetta, joissa yhteystietonumero on, mikä vastaa edellisen osan COUNT-tulosta.
Oletetaan nyt, että haluamme päinvastaisen: jäsentietueet, joista yhteystietonumero puuttuu. Voimme käyttää seuraavaa kyselyä.
SELECT * FROM `members` WHERE contact_number IS NULL;
Yllä olevan kyselyn suorittaminen antaa kaksi jäsentietuetta, joiden yhteysnumero on NULL.
| membership_ number | full_names | gender | date_of_birth | physical_address | postal_address | contact_ number | |
|---|---|---|---|---|---|---|---|
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Varoitus: Ehto, kuten WHERE yhteystieto_numero = NULL, palauttaa tyhjän tulosjoukon, vaikka NULL-arvoja on olemassa. Yhtäsuuruusoperaattori ei voi koskaan vastata NULL-arvoa, joten IS NULL on ainoa oikea testi.
NULL-arvojen vertailu kolmiarvoiseen logiikkaan
Kolmen arvon logiikka – Boolen operaatioiden suorittaminen ehdoilla, joihin liittyy NULL, voi palauttaa "Tuntematon", "Tosi" tai "Epätosi".
Avainsanan ”IS NULL” käyttäminen vertailutoimintoja tehdessään mukana NULL Tuotto totta or vääräMuiden vertailuoperaattoreiden käyttäminen palauttaa "Tuntematon" (TYHJÄ)Alla olevassa taulukossa vertaillaan kutakin lauseketta rinnakkain.
| Ilmaisu | Tulos | Merkitys |
|---|---|---|
| VALITSE 5 = 5; | 1 | TOSI |
| VALITSE NULL = NULL; | NULL | TUNTEMATON |
| VALITSE 5 > 5; | 0 | VÄÄRÄ |
| VALITSE NULL > NULL; | NULL | TUNTEMATON |
| VALITSE 5 ON TYHJÄ; | 0 | VÄÄRÄ |
| VALITSE NULL ON NULL; | 1 | TOSI |
Vertaa lukua viisi itseensä ja toista sitten operaatio NULL-arvolla.
SELECT 5 =5; SELECT NULL = NULL;
| 5 =5 | NULL = NULL |
|---|---|
| 1 | NULL |
Ensimmäinen tulos on 1 (TOSI). Toinen on NULL, koska MySQL Ei voida todeta, että yksi tuntematon arvo on yhtä suuri kuin toinen tuntematon arvo. Käytä nyt IS NULL -avainsanaa samoille arvoille.
SELECT 5 IS NULL; SELECT NULL IS NULL;
| 5 IS NULL | NULL IS NULL |
|---|---|
| 0 | 1 |
Tällä kertaa vastaukset ovat varmoja: 0 (EPÄTOSI) ja 1 (TOSI). Vain avainsanat IS NULL ja IS NOT NULL palauttavat varman vastauksen, kun NULL on mukana.



