Programmā SQL Null ir gan vērtība, gan atslēgvārds. Vispirms apskatīsim NULL vērtību -
Null kā vērtība
Vienkārši sakot, NULL ir vienkārši vietas īpašnieks datiem, kuru nav. Veicot ievietošanas operācijas tabulās, tās būs reizes, kad dažas lauka vērtības nebūs pieejamas.
Lai izpildītu patieso relāciju datu bāzu pārvaldības sistēmu prasības, MySQL izmanto NULL kā vietas turētāju vērtībām, kas nav iesniegtas. Zemāk redzamajā ekrānuzņēmumā parādīts, kā NULL vērtības izskatās datu bāzē.
Apskatīsim dažus no NULL pamatiem, pirms mēs turpinām diskusiju.
- NULL nav datu tips - tas nozīmē, ka tas netiek atpazīts kā “int”, “date” vai kāds cits noteikts datu tips.
- Aritmētiskās darbības ar NULL vienmēr atgriež NULL , piemēram, 69 + NULL = NULL.
- Visas apkopotās funkcijas ietekmē tikai tās rindas, kurām nav NULL vērtību .
Tagad parādīsim, kā skaitīšanas funkcija izturas pret nulles vērtībām. Apskatīsim dalībnieku tabulas pašreizējo saturu-
SELECT * FROM `members`;
Izpildot iepriekš minēto skriptu, mēs iegūstam šādus rezultātus
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 |
Saskaitīsim visus dalībniekus, kuri ir atjauninājuši savu kontaktu numuru
SELECT COUNT(contact_number) FROM `members`;
Izpildot iepriekš minēto vaicājumu, tiek iegūti šādi rezultāti.
COUNT(contact_number) |
---|
7 |
Piezīme: NULL vērtības nav iekļautas
Kas NAV?
Operators NOT loģiski tiek izmantots Būla nosacījumu pārbaudei un atgriež vērtību true, ja nosacījums ir nepatiess. Operators NOT atgriež false, ja pārbaudītais nosacījums ir patiess
Stāvoklis |
NAV operatora rezultāts |
Patiesi |
Nepatiesa |
Nepatiesa |
Patiesi |
Kāpēc izmantot NOT null?
Būs gadījumi, kad mums būs jāveic aprēķini par vaicājuma rezultātu kopu un jāatgriež vērtības. Veicot jebkādas aritmētiskās darbības kolonnās, kurām ir NULL vērtība, tiek atgriezti nulles rezultāti. Lai izvairītos no šādu situāciju rašanās, mēs varam izmantot klauzulu NOT NULL, lai ierobežotu rezultātus, ar kuriem darbojas mūsu dati.
NAV NULL vērtības
Pieņemsim, ka mēs vēlamies izveidot tabulu ar noteiktiem laukiem, kuriem vienmēr jāpievieno vērtības, ievietojot tabulā jaunas rindas. Veidojot tabulu, dotajā laukā mēs varam izmantot klauzulu NOT NULL.
Zemāk parādītais piemērs izveido jaunu tabulu, kurā ir darbinieku dati. Darbinieka numurs vienmēr jānorāda
CREATE TABLE `employees`(employee_number int NOT NULL,full_names varchar(255) ,gender varchar(6));
Mēģināsim tagad ievietot jaunu ierakstu, nenorādot darbinieka vārdu un redzēsim, kas notiek.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Izpildot iepriekš minēto skriptu MySQL darbagaldā, rodas šāda kļūda -
NULL Atslēgvārdi
NULL var izmantot arī kā atslēgvārdu, veicot Būla darbības ar vērtībām, kas ietver NULL. Šādiem mērķiem atslēgvārdu “IS / NOT” lieto kopā ar vārdu NULL. Pamata sintakse, ja nulli izmanto kā atslēgvārdu, ir šāda
`comlumn_name' IS NULL`comlumn_name' NOT NULL
ŠEIT
- "IS NULL" ir atslēgvārds, kas veic Būla salīdzinājumu. Tas atgriež vērtību true, ja norādītā vērtība ir NULL, un false, ja norādītā vērtība nav NULL.
- "NOT NULL" ir atslēgvārds, kas veic Būla salīdzinājumu. Tas atgriež vērtību true, ja norādītā vērtība nav NULL, un false, ja norādītā vērtība ir nulle.
Apskatīsim praktisku piemēru, kurā tiek izmantots atslēgvārds NOT NULL, lai izslēgtu visas kolonnu vērtības, kurām ir nulles vērtības.
Turpinot iepriekš minēto piemēru, pieņemsim, ka mums ir nepieciešama informācija par dalībniekiem, kuru kontakta numurs nav null. Mēs varam izpildīt tādu vaicājumu kā
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Izpildot iepriekš minēto vaicājumu, tiek iegūti tikai tādi ieraksti, kur kontakta numurs nav null.
Pieņemsim, ka mēs vēlamies dalībnieku ierakstus, kur kontakta numurs nav derīgs. Mēs varam izmantot šādu vaicājumu
SELECT * FROM `members` WHERE contact_number IS NULL;
Izpildot iepriekš minēto vaicājumu, tiek sniegta informācija par dalībnieku, kura kontakta numurs ir 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 |
Salīdzinot nulles vērtību s
Trīs vērtību loģika - veicot Būla darbības apstākļos, kas saistīti ar NULL, var atgriezt vērtību “Nezināms”, “Patiesība” vai “Nepatiesa”.
Piemēram, izmantojot atslēgvārdu "IS NULL" , veicot salīdzināšanas darbības, kurās iesaistīta NULL, var atgriezties patiess vai nepatiess . Izmantojot citus salīdzināšanas operatorus, tiek atgriezta vērtība "Nezināma" (NULL).
Pieņemsim, ka jūs salīdzināt numuru 5 ar 5
SELECT 5 =5;
Vaicājuma rezultāts ir 1, kas nozīmē TRUE
5 =5 |
---|
1 |
Darīsim to pašu darbību ar NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Apskatīsim citu piemēru
SELECT 5 > 5;
5> 5 |
---|
0 |
Vaicājuma rezultāts ir 0, kas nozīmē FALSE
Apskatīsim to pašu piemēru, izmantojot NULL
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
Ļauj izmantot atslēgvārdu IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Vaicājuma rezultāts ir 0, kas ir FALSE
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Vaicājuma rezultāts ir 1, kas ir PATIESA
Kopsavilkums
- NULL ir vērtības vietas turētājs neobligātiem tabulas laukiem.
- MySQL pret NULL vērtību izturas atšķirīgi no citiem datu tipiem. NULL vērtības, lietojot nosacījumu, tiek novērtētas kā nepatiesa Būla vērtība.
- NOT loģisko operāciju izmanto, lai pārbaudītu Būla vērtības, un tā tiek vērtēta kā patiess, ja Būla vērtība ir nepatiesa un nepatiesa, ja Būla vērtība ir patiesa.
- Klauzula NOT NULL tiek izmantota, lai izslēgtu NULL vērtības no rezultātu kopas
- Aritmētisko darbību veikšana ar NULL vērtībām vienmēr atgriež NULL rezultātus.
- NULL vērtību salīdzināšanai nevar izmantot tādus salīdzināšanas operatorus kā [, = utt.].