MySQL IS NULL i IS NOT NULL s primjerima
โก Pametni saลพetak
MySQL IS NULL i IS NOT NULL su kljuฤne rijeฤi za usporedbu koje provjeravaju sadrลพi li stupac nedostajuฤu vrijednost. NULL oznaฤava odsutne podatke, ponaลกa se drugaฤije od nule ili praznog niza i zahtijeva namjenske operatore za pouzdano filtriranje.

U SQL-u, NULL je i vrijednost i kljuฤna rijeฤ. Prvo pogledajmo NULL vrijednost.
ล to je NULL u MySQL?
Jednostavnim rijeฤima, NULL je rezervirano mjesto za podatke koji ne postojePrilikom izvoฤenja operacija umetanja u tablice, ponekad ฤe neke vrijednosti polja biti nedostupene.
Kako bismo zadovoljili zahtjeve pravih sustava za upravljanje relacijskim bazama podataka, MySQL koristi NULL kao rezervirano mjesto za vrijednosti koje nisu poslane. Snimka zaslona u nastavku prikazuje kako NULL vrijednosti izgledaju u tablici baze podataka.
Primijetite da su prazne ฤelije oznaฤene s NULL, a ne s praznim tekstom i ne s nulom. Prije nego ลกto krenemo dalje, pogledajte neke osnove funkcije NULL.
- NULL nije tip podataka โ to znaฤi da se ne prepoznaje kao "int", "date" ili bilo koja druga definirana vrsta podataka.
- Aritmetiฤke operacije ukljuฤuje NULL uvijek vrati NULL, na primjer, 69 + NULL = NULL.
- most agregatne funkcije ignoriraj retke koji sadrลพe NULL vrijednostiJedina iznimka je COUNT(*), koja broji svaki redak bez obzira na NULL.
Kako agregatne funkcije tretiraju NULL
Ovo pravilo mijenja odgovore koje vraฤaju upiti za izvjeลกtavanje, pa dokaลพimo to. Poฤnimo s trenutnim sadrลพajem tablice ฤlanova.
SELECT * FROM `members`;
Izvrลกavanje gornje skripte daje nam sljedeฤe rezultate.
| 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 |
Istaknuti stupac contact_number sadrลพi ukupno devet redaka, ali dva od njih su NULL. Prebrojimo sve ฤlanove koji su aลพurirali svoj kontaktni broj.
SELECT COUNT(contact_number) FROM `members`;
Izvrลกavanje gornjeg upita daje nam sljedeฤe rezultate.
| COUNT(contact_number) |
|---|
| 7 |
Biljeลกka: Odgovor je 7, a ne 9, jer dvije NULL vrijednosti nisu bile ukljuฤene. Pokretanje funkcije COUNT(*) na istoj tablici vratilo bi 9, buduฤi da COUNT(*) broji retke, a ne vrijednosti.
NIJE NULL vrijednosti
Sigurniji pristup je uopฤe sprijeฤiti ulazak NULL-a u obavezne stupce. To je zadatak ograniฤenja NOT NULL.
ล to je NE Operator?
Logiฤki operator NOT koristi se za testiranje Booleovih uvjeta i vraฤa vrijednost true ako je uvjet laลพan. Operator NOT vraฤa vrijednost false ako je uvjet koji se testira istinit.
| Stanje | NE Operator Rezultat |
|---|---|
| Pravi | Laลพan |
| Laลพan | Pravi |
Zaลกto koristiti NOT NULL?
Postojat ฤe sluฤajevi kada ฤemo morati izvrลกiti izraฤune na skupu rezultata upita i vratiti vrijednosti. Izvoฤenje bilo koje aritmetiฤke operacije na stupcu koji sadrลพi NULL vrijednost vraฤa NULL rezultat. Kako bismo izbjegli takve situacije, moลพemo upotrijebiti klauzulu NOT NULL kako bismo ograniฤili rezultate na kojima naลกi podaci operiraju.
Izrada tablice sa stupcem tipa NOT NULL
Pretpostavimo da ลพelimo stvoriti tablicu s odreฤenim poljima koja uvijek trebaju biti ispunjena vrijednostima prilikom umetanja novih redaka. Moลพemo koristiti klauzulu NOT NULL na zadanom polju prilikom stvaranja tablice.
Primjer prikazan u nastavku stvara novu tablicu koja sadrลพi podatke o zaposlenicima. Broj zaposlenika treba uvijek navesti.
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Pokuลกajmo sada umetnuti novi zapis bez navoฤenja broja zaposlenika i vidjeti ลกto ฤe se dogoditi.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Izvrลกavanje gornje skripte u MySQL Radna tezga daje sljedeฤu greลกku jer je obavezni stupac izostavljen.
Kljuฤne rijeฤi IS NULL i IS NOT NULL
Ograniฤenje blokira nove NULL vrijednosti. Za rad s NULL vrijednostima koje veฤ postoje, NULL se koristi kao kljuฤna rijeฤ. Sintaksa je sljedeฤa.
column_name IS NULL column_name IS NOT NULL
OVDJE
- "JE NULL" je kljuฤna rijeฤ koja izvodi Booleovu usporedbu. Vraฤa true ako je isporuฤena vrijednost NULL i false ako isporuฤena vrijednost nije NULL.
- "NIJE NULL" je kljuฤna rijeฤ koja izvodi suprotnu usporedbu. Vraฤa true ako navedena vrijednost nije NULL i false ako je navedena vrijednost NULL.
Pogledajmo praktiฤan primjer koji koristi kljuฤnu rijeฤ IS NOT NULL za uklanjanje svih redaka koji sadrลพe NULL vrijednosti u stupcu.
Nastavljajuฤi s gornjom tablicom ฤlanova, pretpostavimo da su nam potrebni podaci o ฤlanovima ฤiji kontakt broj nije NULL. Moลพemo izvrลกiti upit poput ovog.
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Izvrลกavanje gornjeg upita vraฤa samo sedam zapisa u kojima je prisutan kontaktni broj, ลกto odgovara rezultatu COUNT iz prethodnog odjeljka.
Sada pretpostavimo da ลพelimo suprotno: zapise ฤlanova gdje nedostaje kontaktni broj. Moลพemo upotrijebiti sljedeฤi upit.
SELECT * FROM `members` WHERE contact_number IS NULL;
Izvrลกavanjem gornjeg upita dobivaju se dva zapisa ฤlanova ฤiji je kontaktni broj 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 |
Upozorenje: Uvjet kao ลกto je WHERE contact_number = NULL vraฤa prazan skup rezultata, ฤak i ako postoje NULL vrijednosti. Operator jednakosti nikada ne moลพe odgovarati NULL-u, pa je IS NULL jedini ispravan test.
Usporeฤivanje NULL vrijednosti s trovrijednosnom logikom
Logika tri vrijednosti โ izvoฤenje Booleovih operacija nad uvjetima koji ukljuฤuju NULL moลพe vratiti โNepoznatoโ, โToฤnoโ ili โNetoฤnoโ.
Koriลกtenje kljuฤne rijeฤi โIS NULLโ kada radite operacije usporedbe ukljuฤujuฤi NULL vraฤa istinski or laลพanKoriลกtenje ostalih operatora usporedbe vraฤa โNepoznatoโ (NULL)Donja tablica usporeฤuje svaki izraz jedan pored drugog.
| Izraz | Proizlaziti | Znaฤenje |
|---|---|---|
| ODABERI 5 = 5; | 1 | TRUE |
| ODABERI NULL = NULL; | NULL | NEPOZNATI |
| ODABERITE 5 > 5; | 0 | FALSE |
| ODABERI NULL > NULL; | NULL | NEPOZNATI |
| ODABERI 5 JE NULL; | 0 | FALSE |
| ODABERI NULL JE NULL; | 1 | TRUE |
Usporedite broj pet sa samim sobom, a zatim ponovite operaciju s NULL-om.
SELECT 5 =5; SELECT NULL = NULL;
| 5 =5 | NULL = NULL |
|---|---|
| 1 | NULL |
Prvi rezultat je 1 (TRUE). Drugi je NULL, jer MySQL Ne moลพe se tvrditi da je jedna nepoznata vrijednost jednaka drugoj nepoznatoj vrijednosti. Sada upotrijebite kljuฤnu rijeฤ IS NULL na istim vrijednostima.
SELECT 5 IS NULL; SELECT NULL IS NULL;
| 5 IS NULL | NULL IS NULL |
|---|---|
| 0 | 1 |
Ovaj put odgovori su definitivni: 0 (NETOฤNO) i 1 (ISTINA). Samo kljuฤne rijeฤi IS NULL i IS NOT NULL vraฤaju definitivan odgovor kada je ukljuฤen NULL.


