În SQL Null este atât o valoare, cât și un cuvânt cheie. Să analizăm mai întâi valoarea NULL -
Nul ca valoare
În termeni simpli, NULL este pur și simplu un deținător de locuri pentru datele care nu există. Când efectuați operații de inserare pe tabele, acestea vor fi momente în care unele valori de câmp nu vor fi disponibile.
Pentru a îndeplini cerințele adevăratelor sisteme de gestionare a bazelor de date relaționale, MySQL folosește NULL ca deținător al valorilor care nu au fost trimise. Captura de ecran de mai jos arată cum arată valorile NULL în baza de date.
Să vedem acum 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”, „dată” sau alt tip de date definit.
- Operațiile aritmetice care implică NULL returnează întotdeauna NULL, de exemplu, 69 + NULL = NULL.
- Toate funcțiile agregate afectează numai rândurile care nu au valori NULL .
Să demonstrăm acum modul în care funcția de numărare tratează valorile nule. Să vedem conținutul curent al tabelei membrilor
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 | 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 |
Să numărăm toți membrii care și-au actualizat numărul_de contact
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 NU logic este folosit pentru a testa condițiile booleene și returnează adevărat dacă condiția este falsă. Operatorul NOT returnează fals dacă condiția testată este adevărată
Condiție |
NU rezultatul operatorului |
Adevărat |
Fals |
Fals |
Adevărat |
De ce să folosești NU nul?
Vor fi cazuri când va trebui să efectuăm calcule pe un set de rezultate ale interogării și să returnăm valorile. Efectuarea oricăror operații aritmetice pe coloane care au valoarea NULL returnează rezultate nule. Pentru a evita astfel de situații, putem folosi utilizarea clauzei NOT NULL pentru a limita rezultatele pe care operează datele noastre.
NU valori nule
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 se introduc rânduri noi într-un tabel. Putem folosi clauza NOT NULL pe un câmp dat la crearea tabelei.
Exemplul prezentat mai jos creează un nou tabel care conține datele angajaților. Numărul angajaților 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 nouă înregistrare 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, de asemenea, utilizat ca cuvânt cheie atunci când efectuați operații booleene pe valori care includ NULL. Cuvântul cheie „ESTE / NU” este utilizat împreună cu cuvântul NULL în astfel de scopuri. Sintaxa de bază atunci când se utilizează nul ca cuvânt cheie este următoarea
`comlumn_name' IS NULL`comlumn_name' NOT NULL
AICI
- „IS NULL” este cuvântul cheie care efectuează comparația booleană. Returnează adevărat dacă valoarea furnizată este NULL și falsă dacă valoarea furnizată nu este NULL.
- „NOT NULL” este cuvântul cheie care efectuează comparația booleană. Returnează adevărat dacă valoarea furnizată nu este NULL și falsă dacă valoarea furnizată este nulă.
Să vedem acum un exemplu practic care folosește cuvântul cheie NOT NULL pentru a elimina toate valorile coloanei care au valori nule.
Continuând cu exemplul de mai sus, să presupunem că avem nevoie de detalii despre membri 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ă dorim înregistrări ale membrilor în care 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ăror 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 | 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 |
Comparând valoarea nulă s
Logică cu trei valori - efectuarea operațiunilor booleene în condiții care implică NULL poate returna „Necunoscut”, „Adevărat” sau „Fals”.
De exemplu, folosirea cuvântului cheie „IS NULL” atunci când efectuați operațiuni de comparație care implică NULL poate returna fie adevărat, fie fals . Utilizarea altor operatori de comparație returnează „Necunoscut” (NULL).
Să presupunem că comparați 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ă vedem același exemplu folosind NULL
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
Permiteți utilizarea cuvântului cheie IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Rezultatul interogării este 0, care este FALS
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Rezultatul interogării este 1, care este ADEVĂRAT
rezumat
- NULL este un deținător de valoare pentru câmpurile tabelului opționale.
- MySQL tratează valoarea NULL diferit de alte tipuri de date. Valorile NULL atunci când sunt utilizate într-o condiție se evaluează la valoarea falsă booleană.
- Operația NU logică este utilizată pentru a testa valorile booleene și se evaluează la adevărat dacă valoarea booleană este falsă și falsă dacă valoarea booleană este adevărată.
- Clauza NOT NULL este utilizată pentru a elimina valorile NULL dintr-un set de rezultate
- Efectuarea operațiilor aritmetice pe valorile NULL returnează întotdeauna rezultatele NULL.
- Operatorii de comparație precum [, =, etc.] nu pot fi folosiți pentru a compara valorile NULL.