SQL sistemoje „Null“ yra ir vertė, ir raktinis žodis. Pirmiausia panagrinėkime NULL vertę -
Nulis kaip vertė
Paprasčiau tariant, NULL yra tiesiog neegzistuojančių duomenų vieta. Atliekant lentelių įterpimo operacijas, tai bus laikas, kai kai kurių lauko reikšmių nebus.
Siekdama patenkinti tikrų reliacinių duomenų bazių valdymo sistemų reikalavimus, „MySQL“ naudoja NULL kaip nepateiktų reikšmių vietos savininką. Žemiau pateiktoje ekrano kopijoje parodoma, kaip NULL reikšmės atrodo duomenų bazėje.
Pažvelkime į kai kuriuos NULL pagrindus, prieš tęsdami diskusiją.
- NULL nėra duomenų tipas - tai reiškia, kad jis nėra atpažįstamas kaip „int“, „data“ ar bet koks kitas apibrėžtas duomenų tipas.
- Aritmetinės operacijos, susijusios su NULL, visada grąžina NULL , pavyzdžiui, 69 + NULL = NULL.
- Visos suvestinės funkcijos veikia tik eilutes, kuriose nėra NULL reikšmių .
Parodykime, kaip skaičiavimo funkcija traktuoja nulines reikšmes. Pažiūrėkime dabartinį narių lentelės turinį-
SELECT * FROM `members`;
Vykdydami pirmiau pateiktą scenarijų, gauname šiuos rezultatus
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 |
Suskaičiuokime visus narius, atnaujinusius savo kontaktinį numerį
SELECT COUNT(contact_number) FROM `members`;
Vykdydami pirmiau pateiktą užklausą gauname šiuos rezultatus.
COUNT(contact_number) |
---|
7 |
Pastaba: NULL vertės nėra įtrauktos
Kas NĖRA?
NOT loginis operatorius naudojamas tikrinant Būlo sąlygas ir grąžina teisingą, jei sąlyga yra klaidinga. Operatorius NOT grąžina klaidingą, jei patikrinta sąlyga yra teisinga
Būklė |
NE operatoriaus rezultatas |
Tiesa |
Klaidinga |
Klaidinga |
Tiesa |
Kodėl verta naudoti NE?
Bus atvejų, kai turėsime atlikti užklausos rezultatų rinkinio skaičiavimus ir grąžinti reikšmes. Atliekant bet kokias aritmetines operacijas stulpeliuose, kurių vertė yra NULL, rezultatai bus nuliniai. Kad išvengtume tokių situacijų, galime naudoti sąlygą NOT NULL, kad apribotume rezultatus, pagal kuriuos veikia mūsų duomenys.
NE NULL vertybės
Tarkime, kad norime sukurti lentelę su tam tikrais laukais, kurie visada turėtų būti pateikiami su vertėmis, kai į lentelę įterpiamos naujos eilutės. Kurdami lentelę tam tikrame lauke galime naudoti sąlygą NOT NULL.
Žemiau pateiktas pavyzdys sukuria naują lentelę, kurioje yra darbuotojų duomenys. Visada reikia nurodyti darbuotojo numerį
CREATE TABLE `employees`(employee_number int NOT NULL,full_names varchar(255) ,gender varchar(6));
Pabandykime dabar įterpti naują įrašą nenurodydami darbuotojo vardo ir pažiūrėkime, kas nutiks.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Vykdant aukščiau pateiktą scenarijų „MySQL“ darbastalyje atsiranda ši klaida -
NULL raktiniai žodžiai
NULL taip pat gali būti naudojamas kaip raktinis žodis, kai atliekamos loginės operacijos vertėms, kuriose yra NULL. Tokiems tikslams raktinis žodis „IS / NOT“ vartojamas kartu su NULL žodžiu. Pagrindinė sintaksė, kai „null“ naudojama kaip raktinis žodis, yra tokia
`comlumn_name' IS NULL`comlumn_name' NOT NULL
ČIA
- „IS NULL“ yra raktinis žodis, kuris atlieka Būlio palyginimą. Jis pateikia teisingą vertę, jei pateikiama vertė yra NULL, ir klaidingą, jei pateikta vertė nėra NULL.
- „NOT NULL“ yra raktinis žodis, kuris atlieka Būlio palyginimą. Jis pateikia reikšmę „true“, jei pateikta vertė nėra NULL, ir „false“, jei pateikta vertė yra nulinė.
Pažvelkime į praktinį pavyzdį, kuris naudoja raktinį žodį NOT NULL, kad pašalintų visas stulpelių reikšmes, kurių reikšmės yra nulinės.
Tęsdami pirmiau pateiktą pavyzdį, tarkime, kad mums reikia išsamios informacijos apie narius, kurių kontaktinis numeris nėra niekinis. Mes galime vykdyti užklausą kaip
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Vykdant anksčiau pateiktą užklausą pateikiami tik tie įrašai, kurių kontaktinis numeris nėra nulinis.
Tarkime, kad norime narių įrašų, kuriuose kontaktinis numeris yra nulinis. Mes galime naudoti šią užklausą
SELECT * FROM `members` WHERE contact_number IS NULL;
Vykdant anksčiau pateiktą užklausą pateikiama išsami informacija apie narį, kurio kontaktinis numeris yra 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 |
Lyginant nulinę vertę s
Trijų reikšmių logika - vykdant Būlo operacijas sąlygomis, kuriose dalyvauja NULL, galima grąžinti „Nežinoma“, „Tiesa“ arba „Netiesa“.
Pvz., Naudojant raktinį žodį „IS NULL“, kai atliekamos palyginimo operacijos, susijusios su NULL, gali būti pateikiama teisinga arba klaidinga . Naudojant kitus palyginimo operatorius, gaunama „Nežinoma“ (NULL).
Tarkime, kad penktą skaičių lyginate su 5
SELECT 5 =5;
Užklausos rezultatas yra 1, o tai reiškia TIESA
5 =5 |
---|
1 |
Atlikime tą pačią operaciją su NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Pažvelkime į kitą pavyzdį
SELECT 5 > 5;
5> 5 |
---|
0 |
Užklausos rezultatas yra 0, o tai reiškia NETIESA
Pažvelkime į tą patį pavyzdį naudodami NULL
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
Leidžia naudoti raktinį žodį IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Užklausos rezultatas yra 0, kuris yra NETIESA
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Užklausos rezultatas yra 1, kuris yra TIESA
Santrauka
- NULL yra pasirinktinių lentelių laukų vertės laikiklis.
- „MySQL“ vertina NULL reikšmę kitaip nei kiti duomenų tipai. NULL reikšmės, kai naudojamos sąlygoje, įvertina klaidingą Bulio reikšmę.
- NOT loginė operacija naudojama tikrinant logines reikšmes ir įvertinama kaip teisinga, jei loginė reikšmė yra klaidinga ir klaidinga, jei loginė reikšmė yra teisinga.
- Sąlyga NOT NULL naudojama norint pašalinti NULL reikšmes iš rezultatų rinkinio
- Atliekant NULL reikšmių aritmetines operacijas, visada gaunami NULL rezultatai.
- Tokių palyginimo operatorių kaip [, = ir kt.] Negalima naudoti NULL reikšmėms palyginti.