MySQL ON NULL & IS NOT NULL Opetusohjelma ESIMERKKEJÄ

SQL:ssä Null on sekä arvo että avainsana. Tarkastellaan ensin NULL-arvoa -

MySQL ON NULL & EI OLE NULL

Nolla arvona

Yksinkertaisesti sanottuna NULL on yksinkertaisesti paikkamerkki tiedoille, joita ei ole olemassa. Kun suoritat lisäystoimintoja taulukoille, ne ovat aikoja, jolloin jotkin kenttäarvot eivät ole käytettävissä.

Täyttääkseen todellisten relaatiotietokannan hallintajärjestelmien vaatimukset, MySQL käyttää NULL-arvoa paikanpitäjänä arvoille, joita ei ole lähetetty. Alla oleva kuvakaappaus näyttää, miltä NULL-arvot näyttävät tietokannassa.

Nolla arvona

Katsotaanpa nyt joitain NULL:n perusasioita ennen kuin siirrymme pidemmälle keskusteluun.

  • NULL ei ole tietotyyppi – tämä tarkoittaa, että sitä ei tunnisteta "int", "date" tai muuksi määritellyksi tietotyypiksi.
  • Aritmeettiset toimenpiteet johon NULL aina palauta NULL esimerkiksi 69 + NULL = NULL.
  • Kaikki kokonaisfunktiot vaikuttavat vain riveihin, joilla ei ole NULL-arvoja.

Osoitetaan nyt, kuinka count-funktio käsittelee nolla-arvoja. Katsotaanpa jäsentaulukon nykyinen sisältö -

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

Lasketaan kaikki jäsenet, jotka ovat päivittäneet yhteystietonsa

SELECT COUNT(contact_number)  FROM `members`;

Yllä olevan kyselyn suorittaminen antaa meille seuraavat tulokset.

COUNT(contact_number)
7

Huomautus: Arvoja, jotka ovat NULL, ei ole sisällytetty

Mikä ei ole?

Loogista NOT-operaattoria käytetään Boolen ehtojen testaamiseen ja se palauttaa tosi, jos ehto on epätosi. NOT-operaattori palauttaa epätosi, jos testattu ehto on tosi

Kunto ÄLÄ Operator Tulos
Totta Väärä
Väärä Totta

Miksi käyttää NOT nulla?

On tapauksia, joissa meidän on suoritettava laskelmia kyselyn tulosjoukosta ja palautettava arvot. Aritmeettisten toimintojen suorittaminen sarakkeille, joilla on NULL-arvo, palauttaa nollatulokset. Tällaisten tilanteiden välttämiseksi voimme käyttää NOT NULL -lauseketta rajoittaaksemme tuloksia, joihin tietomme toimivat.

NOT NULL Arvot

Oletetaan, että haluamme luoda taulukon, jossa on tietyt kentät, joille tulee aina antaa arvot, kun taulukkoon lisätään uusia rivejä. Voimme käyttää NOT NULL -lausetta tietyssä kentässä taulukkoa luotaessa.

Alla oleva esimerkki luo uuden taulukon, joka sisältää työntekijän tiedot. Työntekijänumero tulee aina ilmoittaa

CREATE TABLE `employees`(
  employee_number int NOT NULL,
  full_names varchar(255) ,
  gender varchar(6)
);

Yritetään nyt lisätä uusi tietue ilmoittamatta työntekijän nimeä 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 -

NOT NULL Arvot

NULL Avainsanat

NULL-arvoa voidaan käyttää myös avainsanana suoritettaessa Boolen operaatioita arvoille, jotka sisältävät NULL:n. "IS/EI"-avainsanaa käytetään yhdessä NULL-sanan kanssa tällaisiin tarkoituksiin. Perussyntaksi, kun avainsanana käytetään nulla, on seuraava

`comlumn_name'  IS NULL
`comlumn_name' 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 TYHJÄ"on avainsana, joka suorittaa Boolen vertailun. Se palauttaa tosi, jos annettu arvo ei ole NULL ja false, jos annettu arvo on nolla.

Katsotaanpa nyt käytännön esimerkkiä, joka käyttää NOT NULL -avainsanaa poistamaan kaikki sarakearvot, joilla on nolla-arvoja.

Jatkamme yllä olevaa esimerkkiä, oletetaan, että tarvitsemme tiedot jäsenistä, joiden yhteysnumero ei ole tyhjä. 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 tyhjä.

Oletetaan, että haluamme jäsentietueita, joissa yhteyshenkilönumero on tyhjä. Voimme käyttää seuraavaa kyselyä

SELECT * FROM `members` WHERE contact_number IS NULL;

Yllä olevan kyselyn suorittaminen antaa jäsenen tiedot, jonka puhelinnumero on NULL

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
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 rm@tstreet.com
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-arvojen vertailu

Kolmen arvon logiikka – Boolen operaatioiden suorittaminen ehdoissa, joihin liittyy NULL, voi joko palauttaa "Tuntematon", "Tosi" tai "Epätosi".

Esimerkiksi käyttämällä avainsanaa "IS NULL". vertailutoimintoja tehdessään mukana NULL voi joko palata totta or väärä. Muiden vertailuoperaattoreiden käyttäminen palauttaa "Tuntematon" (NULL).

Oletetaan, että vertaat numeroa viittä numeroon 5

SELECT 5 =5;

Kyselyn tulos on 1, mikä tarkoittaa TOSI

5 =5
1

Tehdään sama toimenpide 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ä käyttäen NULL

SELECT NULL > NULL;
NULL > NULL
NULL

Käytetään avainsanaa IS NULL

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 valinnaisten taulukkokenttien arvon paikkamerkki.
  • MySQL käsittelee NULL-arvoa eri tavalla kuin muut tietotyypit. NULL-arvot, kun niitä käytetään ehdoissa, evaluoituvat vääräksi Boolen arvoksi.
  • Loogista NOT-toimintoa käytetään Boolen arvojen testaamiseen ja arvoksi tosi, jos Boolen arvo on epätosi, ja epätosi, jos Boolen arvo on tosi.
  • NOT NULL -lausetta 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 vertailuun.