MySQL IS NULL & IS NOT NULL Vodič s PRIMJERIMA
U SQL-u Null je i vrijednost i ključna riječ. Pogledajmo prvo vrijednost NULL –
Null kao vrijednost
Jednostavno rečeno, NULL je jednostavno mjesto za podatke koji ne postoje. Prilikom izvođenja operacija umetanja na tablicama bit će vremena kada neke vrijednosti polja neće biti dostupne.
Kako bismo zadovoljili zahtjeve pravih sustava za upravljanje relacijskim bazama podataka, MySQL koristi NULL kao držač mjesta za vrijednosti koje nisu poslane. Snimak zaslona u nastavku pokazuje kako NULL vrijednosti izgledaju u bazi podataka.
Pogledajmo sada neke od osnova za NULL prije nego što odemo dalje u raspravu.
- 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.
- Svi agregatne funkcije utječu samo na retke koji nemaju NULL vrijednosti.
Pokažimo sada kako funkcija brojanja tretira nulte vrijednosti. Pogledajmo trenutni sadržaj 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 |
Prebrojimo sve članove koji su ažurirali svoj contact_number
SELECT COUNT(contact_number) FROM `members`;
Izvršavanje gornjeg upita daje nam sljedeće rezultate.
COUNT(contact_number) |
---|
7 |
Napomena: Vrijednosti koje su NULL nisu uključene
Što NIJE?
Logički operator NOT koristi se za testiranje Booleovih uvjeta i vraća true ako je uvjet lažan. Operator NOT vraća false ako je testirani uvjet istinit
Stanje | NE Operator Rezultat |
---|---|
Pravi | Lažan |
Lažan | Pravi |
Zašto koristiti NOT null?
Bit će slučajeva kada ćemo morati izvršiti izračune na skupu rezultata upita i vratiti vrijednosti. Izvođenje bilo koje aritmetičke operacije na stupcima koji imaju NULL vrijednost vraća null rezultate. Kako bismo izbjegli takve situacije, možemo upotrijebiti klauzulu NOT NULL da ograničimo rezultate na kojima funkcioniraju naši podaci.
NIJE NULL vrijednosti
Pretpostavimo da želimo stvoriti tablicu s određenim poljima koja bi uvijek trebala biti opskrbljena vrijednostima prilikom umetanja novih redaka u tablicu. Možemo koristiti NOT NULL klauzulu na danom polju kada kreiramo tablicu.
Primjer prikazan u nastavku stvara novu tablicu koja sadrži podatke o zaposleniku. Uvijek treba navesti broj zaposlenika
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Pokušajmo sada umetnuti novi zapis bez navođenja imena zaposlenika i vidjeti što će se dogoditi.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Izvršavanje gornje skripte u MySQL radni stol daje sljedeću grešku-
NULL ključne riječi
NULL se također može koristiti kao ključna riječ pri izvođenju Booleovih operacija na vrijednostima koje uključuju NULL. Ključna riječ "IS/NOT" koristi se zajedno s riječju NULL u takve svrhe. Osnovna sintaksa kada se null koristi kao ključna riječ je sljedeća
`comlumn_name' IS NULL `comlumn_name' NOT NULL
OVDJE
- “JE NIŠTAVAN 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 Booleovu usporedbu. Vraća true ako isporučena vrijednost nije NULL i false ako je isporučena vrijednost null.
Pogledajmo sada praktični primjer koji koristi ključnu riječ NOT NULL za eliminaciju svih vrijednosti stupaca koji imaju null vrijednosti.
Nastavljajući s gornjim primjerom, pretpostavimo da su nam potrebni podaci o članovima čiji kontakt broj nije null. Možemo izvršiti upit poput
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Izvršavanje gornjeg upita daje samo zapise u kojima broj kontakta nije nula.
Pretpostavimo da želimo zapise o članovima gdje je kontakt broj null. Možemo koristiti sljedeći upit
SELECT * FROM `members` WHERE contact_number IS NULL;
Izvršavanje gornjeg upita daje podatke o članu čiji je kontakt broj NULL
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 |
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 |
Usporedba nultih vrijednosti
Logika tri vrijednosti – izvođenje Booleovih operacija na uvjetima koji uključuju NULL može ili vratiti "Nepoznato", "Točno" ili "Netočno".
Na primjer, koristeći ključnu riječ “IS NULL”. kada radite operacije usporedbe uključujući NULL može ili vratiti istinski or lažan. Korištenje drugih operatora usporedbe vraća “Nepoznato” (NULL).
Pretpostavimo da usporedite broj pet s pet
SELECT 5 =5;
Rezultat upita je 1 što znači TRUE
5 =5 |
---|
1 |
Napravimo istu operaciju s NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Pogledajmo još jedan primjer
SELECT 5 > 5;
5 > 5 |
---|
0 |
Rezultat upita je 0 što znači FALSE
Pogledajmo isti primjer koristeći NULL
SELECT NULL > NULL;
NULL > NULL |
---|
NULL |
Upotrijebimo ključnu riječ IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Rezultat upita je 0 što je FALSE
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Rezultat upita je 1 što je TOČNO
Rezime
- NULL je držač mjesta vrijednosti za izborna polja tablice.
- MySQL tretira vrijednost NULL drugačije od drugih tipova podataka. Vrijednosti NULL kada se koriste u uvjetu procjenjuju se na lažnu Booleovu vrijednost.
- Logička operacija NOT koristi se za testiranje Booleovih vrijednosti i procjenjuje se na istinito ako je Booleova vrijednost lažna i na lažno ako je Booleova vrijednost istinita.
- Klauzula NOT NULL koristi se za uklanjanje NULL vrijednosti iz skupa rezultata
- Izvođenje aritmetičkih operacija na NULL vrijednostima uvijek vraća NULL rezultate.
- Operatori usporedbe kao što su [, =, itd.] ne mogu se koristiti za usporedbu NULL vrijednosti.