U SQL-u Null je i vrijednost i ključna riječ. Pogledajmo prvo NULL vrijednost -
Nula kao vrijednost
Jednostavno rečeno, NULL je jednostavno držač mjesta za podatke koji ne postoje. Prilikom izvođenja operacija umetanja na tablicama, bit će vremena kada neke vrijednosti polja neće biti dostupne.
Kako bi udovoljio zahtjevima istinskih relacijskih sustava za upravljanje bazama podataka, MySQL koristi NULL kao držač mjesta za vrijednosti koje nisu predane. Snimak zaslona u nastavku prikazuje kako NULL vrijednosti izgledaju u bazi podataka.
Pogledajmo sada neke od osnova za NULL prije nego što krenemo dalje u raspravu.
- NULL nije vrsta podataka - to znači da se ne prepoznaje kao "int", "datum" ili bilo koji drugi definirani tip podataka.
- Aritmetičke operacije koje uključuju NULL uvijek vraćaju NULL, na primjer, 69 + NULL = NULL.
- Sve skupne funkcije utječu samo na retke koji nemaju NULL vrijednosti .
Pokažimo sada kako funkcija count tretira null 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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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 |
Izbrojimo sve članove koji su ažurirali svoj kontakt_broj
SELECT COUNT(contact_number) FROM `members`;
Izvršenje 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 logičkih uvjeta i vraća true ako je uvjet false. Operator NOT vraća false ako je provjereni uvjet istinit
Stanje |
NE Rezultat operatora |
Pravi |
Lažno |
Lažno |
Pravi |
Zašto koristiti NOT null?
Bit će slučajeva kada ćemo morati izvršiti proračune na skupu rezultata upita i vratiti vrijednosti. Izvođenje bilo kojih aritmetičkih operacija na stupcima koji imaju vrijednost NULL vraća null rezultate. Da se takve situacije ne bi dogodile, možemo upotrijebiti klauzulu NOT NULL kako bismo ograničili rezultate na kojima posluju naši podaci.
NOT NULL Vrijednosti
Pretpostavimo da želimo stvoriti tablicu s određenim poljima koja uvijek trebaju imati vrijednosti kada umetamo nove retke u tablicu. Prilikom izrade tablice možemo koristiti klauzulu NOT NULL na zadanom polju.
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 workbenchu daje sljedeću pogrešku -
NULL Ključne riječi
NULL se također može koristiti kao ključna riječ prilikom izvođenja logičkih operacija na vrijednostima koje uključuju NULL. Ključna riječ "IS / NOT" koristi se zajedno s NULL riječju 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
- "IS NULL" je ključna riječ koja izvodi logičku usporedbu. Vraća true ako je navedena vrijednost NULL i false ako isporučena vrijednost nije NULL.
- "NOT NULL" je ključna riječ koja izvodi logičku usporedbu. Vraća true ako navedena vrijednost nije NULL i false ako je navedena vrijednost null.
Pogledajmo sada praktični primjer koji koristi ključnu riječ NOT NULL za uklanjanje svih vrijednosti stupaca koje imaju null vrijednosti.
Nastavljajući s gornjim primjerom, pretpostavimo da su nam potrebni detalji članova č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 kod kojih kontakt broj nije null.
Pretpostavimo da želimo zapise članova gdje je kontakt broj null. Možemo koristiti sljedeći upit
SELECT * FROM `members` WHERE contact_number IS NULL;
Izvršavanje gornjeg upita daje detalje o članu čiji je kontaktni 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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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 null vrijednosti s
Logika s tri vrijednosti - izvođenje logičkih operacija u uvjetima koji uključuju NULL može vratiti "Nepoznato", "Istinito" ili "Netačno".
Na primjer, upotreba ključne riječi "IS NULL" prilikom izvođenja operacija usporedbe koja uključuje NULL može vratiti true ili false . Korištenje drugih operatora usporedbe vraća "Nepoznato" (NULL).
Pretpostavimo da usporedite broj pet s 5
SELECT 5 =5;
Rezultat upita je 1 što znači ISTINA
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 ISTINA
Sažetak
- NULL je držač mjesta vrijednosti za neobavezna polja tablice.
- MySQL NULL vrijednost tretira drugačije od ostalih tipova podataka. Vrijednosti NULL kada se koriste u stanju procjenjuju se na lažnu logičku vrijednost.
- Logička operacija NOT koristi se za testiranje logičkih vrijednosti i procjenjuje na true ako je Booleova vrijednost lažna i false 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 poput [, = itd.] Ne mogu se koristiti za usporedbu NULL vrijednosti.