MySQL IS NULL & IS NOT NULL Tutorial cu EXEMPLE
În SQL, nulul este atât o valoare, cât și un cuvânt cheie. Să ne uităm mai întâi la valoarea NULL -
Null ca valoare
În termeni simpli, NULL este pur și simplu un deținător de loc pentru date care nu există. Când se efectuează operații de inserare pe tabele, vor fi momente în care unele valori de câmp nu vor fi disponibile.
Pentru a îndeplini cerințele sistemelor adevărate de management al bazelor de date relaționale, MySQL folosește NULL ca deținător de loc pentru valorile care nu au fost trimise. Captura de ecran de mai jos arată cum arată valorile NULL în baza de date.
Să ne uităm acum la câteva dintre elementele de bază pentru NULL înainte de a merge mai departe în discuție.
- NULL nu este un tip de date – aceasta înseamnă că nu este recunoscut ca „int”, „date” sau orice alt tip de date definit.
- Operatii aritmetice implicând NULL mereu returnează NULL de exemplu, 69 + NULL = NULL.
- TOATE funcții agregate afectează numai rândurile care nu au valori NULL.
Să demonstrăm acum cum funcția de numărare tratează valorile nule. Să vedem conținutul curent al tabelului de membri -
SELECT * FROM `members`;
Executarea scriptului de mai sus ne oferă următoarele 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 |
Să numărăm toți membrii care și-au actualizat contact_number
SELECT COUNT(contact_number) FROM `members`;
Executarea interogării de mai sus ne oferă următoarele rezultate.
COUNT(contact_number) |
---|
7 |
Notă: Valorile care sunt NULL nu au fost incluse
Ce nu este?
Operatorul logic NOT este folosit pentru a testa condițiile booleene și returnează adevărat dacă condiția este falsă. Operatorul NOT returnează false dacă condiția care a fost testată este adevărată
Condiție | NU Operator Rezultat |
---|---|
Adevărat | Fals |
Fals | Adevărat |
De ce să folosiți NOT null?
Vor exista cazuri când va trebui să efectuăm calcule pe un set de rezultate de interogare și să returnăm valorile. Efectuarea oricăror operații aritmetice pe coloanele care au valoarea NULL returnează rezultate nule. Pentru a evita astfel de situații, putem folosi clauza NOT NULL pentru a limita rezultatele pe care operează datele noastre.
Valori NOT NULL
Să presupunem că vrem să creăm un tabel cu anumite câmpuri care ar trebui să fie întotdeauna furnizate cu valori atunci când inserăm rânduri noi într-un tabel. Putem folosi clauza NOT NULL pe un anumit câmp atunci când creăm tabelul.
Exemplul prezentat mai jos creează un nou tabel care conține datele angajatului. Numărul angajatului trebuie furnizat întotdeauna
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Să încercăm acum să inserăm o înregistrare nouă fără a specifica numele angajatului și să vedem ce se întâmplă.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Executarea scriptului de mai sus în MySQL workbench dă următoarea eroare-
Cuvinte cheie NULL
NULL poate fi folosit și ca cuvânt cheie atunci când se efectuează operații booleene pe valori care includ NULL. Cuvântul cheie „IS/NOT” este folosit împreună cu cuvântul NULL în astfel de scopuri. Sintaxa de bază atunci când null este folosit ca cuvânt cheie este următoarea
`comlumn_name' IS NULL `comlumn_name' NOT NULL
AICI
- „Este nulă este cuvântul cheie care efectuează comparația booleană. Returnează true dacă valoarea furnizată este NULL și false dacă valoarea furnizată nu este NULL.
- "NU NUL"este cuvântul cheie care efectuează comparația booleană. Returnează true dacă valoarea furnizată nu este NULL și false dacă valoarea furnizată este nulă.
Să ne uităm acum la un exemplu practic care utilizează cuvântul cheie NOT NULL pentru a elimina toate valorile coloanelor care au valori nule.
Continuând cu exemplul de mai sus, să presupunem că avem nevoie de detalii ale membrilor al căror număr de contact nu este nul. Putem executa o interogare de genul
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Executarea interogării de mai sus oferă numai înregistrări în care numărul de contact nu este nul.
Să presupunem că vrem înregistrări ale membrilor unde numărul de contact este nul. Putem folosi următoarea interogare
SELECT * FROM `members` WHERE contact_number IS NULL;
Executarea interogării de mai sus oferă detalii despre membru al cărui număr de contact este 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 |
Compararea valorilor nule
Logica cu trei valori – efectuarea de operații booleene în condiții care implică NULL poate fi returnată „Necunoscut”, „adevărat” sau „fals”.
De exemplu, folosind cuvântul cheie „IS NULL”. când se efectuează operații de comparație implicând NULL poate fie să se întoarcă adevărat or fals. Folosind alți operatori de comparație returnează „Necunoscut” (NULL).
Să presupunem că compari numărul cinci cu 5
SELECT 5 =5;
Rezultatul interogării este 1, ceea ce înseamnă ADEVĂRAT
5 =5 |
---|
1 |
Să facem aceeași operație cu NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Să ne uităm la un alt exemplu
SELECT 5 > 5;
5 > 5 |
---|
0 |
Rezultatul interogării este 0, ceea ce înseamnă FALS
Să ne uităm la același exemplu folosind NULL
SELECT NULL > NULL;
NULL > NULL |
---|
NULL |
Să folosim cuvântul cheie IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Rezultatul interogării este 0, ceea ce este FALS
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Rezultatul interogării este 1, care este TRUE
Rezumat
- NULL este un loc titular de valoare pentru câmpurile opționale ale tabelului.
- MySQL tratează valoarea NULL diferit de alte tipuri de date. Valorile NULL atunci când sunt utilizate într-o condiție se evaluează la o valoare booleană falsă.
- Operația logică NOT este utilizată pentru a testa valorile booleene și evaluează ca adevărat dacă valoarea booleană este falsă și falsă dacă valoarea booleană este adevărată.
- Clauza NOT NULL este folosită pentru a elimina valorile NULL dintr-un set de rezultate
- Efectuarea de operații aritmetice pe valori NULL returnează întotdeauna rezultate NULL.
- Operatorii de comparare precum [, =, etc.] nu pot fi utilizați pentru a compara valorile NULL.