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: