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.

  • ๐Ÿงฉ Ydinmรครคritelmรค: NULL on paikkamerkki tiedolle, jota ei ole olemassa. Se ei ole tietotyyppi eikรค luku nolla.
  • โž— Aritmeettinen kรคyttรคytyminen: Mikรค tahansa NULL-arvon sisรคltรคvรค aritmeettinen lauseke palauttaa NULL-arvon, joten 69 + NULL antaa tulokseksi NULL eikรค 69.
  • ๐Ÿ“Š Kokonaisvaikutus: COUNT(sarake) ja muut koostefunktiot ohittavat NULL-rivit, kun taas COUNT(*) laskee edelleen jokaisen taulukon rivin.
  • ๐Ÿšซ NOT NULL -rajoite: Sarakkeen NOT NULL -mรครคrittely hylkรครค kaikki lisรคykset, joista puuttuu arvo. Tรคmรค suojaa pakollisia kenttiรค, kuten tunnisteita.
  • ๐Ÿ” Oikea suodatus: IS NULL ja IS NOT NULL ovat ainoat luotettavat testit, koska yhtรคsuuruusoperaattori ei koskaan vastaa NULL-arvoa.
  • ๐Ÿ‡ง๐Ÿ‡ท Kolmiarvoinen logiikka: Vertailut NULL-arvoa vastaan โ€‹โ€‹palauttavat TUNTEMATTOMAN arvon, joten SELECT NULL = NULL tuottaa NULL-arvon TRUE-arvon sijaan.

MySQL ON NULL ja EI OLE NULL

SQL:ssรค NULL on sekรค arvo ettรค avainsana. Tarkastellaan ensin NULL-arvoa.

MySQL ON NULL & EI OLE NULL

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.

Nolla arvona

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 email
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 12345rm@tstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter MaleNULL 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.

NOT NULL Arvot

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 email
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.

UKK

Nolla on numero ja tyhjรค merkkijono on tekstiรค, joten molemmat vastaavat yhtรคsuuruustestejรค. NULL tarkoittaa, ettรค arvoa ei annettu ollenkaan, minkรค vuoksi se reagoi vain IS NULL- ja IS NOT NULL -arvoihin.

IFNULL(sarake, 'N/A') palauttaa korvaavan arvon aina, kun sarake on NULL. COALESCE(a, b, c) palauttaa ensimmรคisen argumentin, joka ei ole NULL. Molemmat ovat hyรถdyllisiรค MySQL tehtรคvรคt ja raportit.

Ei. MySQL kรคyttรครค NOT NULL -arvoa automaattisesti kaikkiin ensisijaisiin avainsarakkeisiin, koska rivin yksilรถivรครค avainta ei voi puuttua. UNIQUE-indeksi on erilainen ja sallii useita NULL-arvoja.

Yleensรค kyllรค. Tekoรคlyavustajat tyรถkalujen sisรคllรค, kuten MySQL Tyรถpรถytรค muuta โ€jรคsenet, joilla ei ole puhelinnumeroaโ€ WHERE-sarake IS NULL -lausekkeeksi. RevKatso suodatinta, koska yhtรคsuuruustesti NULL-arvoa vastaan โ€‹โ€‹ei palauta hiljaa mitรครคn.

Usein kyllรค. Tekoรคlyn tarkistustyรถkalut merkitsevรคt virheitรค, kuten = NULL-vertailuja, a VALITSE , joka laskee keskiarvon NULL-arvoa sisรคltรคvรคlle sarakkeelle ja NULL-arvoa sisรคltรคville NOT IN -listoille. Lopullisen arvion tekee datan tunteva henkilรถ.

Tiivistรค tรคmรค viesti seuraavasti: