V SQL je Null tako vrednost kot ključna beseda. Najprej poglejmo NULL vrednost -
Nič kot vrednost
Preprosto povedano, NULL je preprosto imetnik prostora za podatke, ki ne obstajajo. Pri izvajanju operacij vstavljanja tabel bodo časi, ko nekatere vrednosti polj ne bodo na voljo.
Da bi izpolnil zahteve resničnih sistemov za upravljanje relacijskih baz podatkov, MySQL uporablja NULL kot imetnika mesta za vrednosti, ki niso bile predložene. Spodnji posnetek zaslona prikazuje, kako v bazi podatkov izgledajo NULL vrednosti.
Poglejmo zdaj nekaj osnov za NULL, preden gremo naprej v razpravo.
- NULL ni podatkovni tip - to pomeni, da ni prepoznan kot "int", "date" ali kateri koli drug definiran podatkovni tip.
- Aritmetične operacije, ki vključujejo NULL, vedno vrnejo NULL, na primer 69 + NULL = NULL.
- Vse sestavljene funkcije vplivajo samo na vrstice, ki nimajo vrednosti NULL .
Pokažimo zdaj, kako funkcija štetja obravnava ničelne vrednosti. Poglejmo trenutno vsebino tabele članov -
SELECT * FROM `members`;
Izvedba zgornjega skripta nam da naslednje 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 |
Preštejmo vse člane, ki so posodobili svojo kontaktno številko
SELECT COUNT(contact_number) FROM `members`;
Izvedba zgornje poizvedbe nam da naslednje rezultate.
COUNT(contact_number) |
---|
7 |
Opomba: Vrednosti, ki so NULL, niso bile vključene
Kaj NI?
Logični operator NOT se uporablja za testiranje logičnih pogojev in vrne true, če je pogoj false. Operator NOT vrne false, če je preizkušeni pogoj resničen
Stanje |
NE Rezultat operaterja |
Prav |
Lažno |
Lažno |
Prav |
Zakaj uporabiti NOT null?
Bili bodo primeri, ko bomo morali opraviti izračune na naboru rezultatov poizvedbe in vrniti vrednosti. Izvajanje kakršnih koli aritmetičnih operacij na stolpcih z vrednostjo NULL vrne ničelne rezultate. Da bi se izognili takim situacijam, lahko s klavzulo NOT NULL uporabimo za omejitev rezultatov, na katerih delujejo naši podatki.
NOT NULL Vrednosti
Predpostavimo, da želimo ustvariti tabelo z določenimi polji, ki morajo imeti vedno vrednosti z vstavljanjem novih vrstic v tabelo. Pri ustvarjanju tabele lahko v določenem polju uporabimo stavek NOT NULL.
Spodnji primer ustvarja novo tabelo, ki vsebuje podatke o zaposlenih. Vedno je treba navesti številko zaposlenega
CREATE TABLE `employees`(employee_number int NOT NULL,full_names varchar(255) ,gender varchar(6));
Poskusimo zdaj vstaviti nov zapis, ne da bi navedli ime zaposlenega, in poglejmo, kaj se bo zgodilo.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Izvedba zgornjega skripta v delovnem okolju MySQL povzroči naslednjo napako -
NULL ključne besede
NULL lahko uporabite tudi kot ključno besedo pri izvajanju logičnih operacij z vrednostmi, ki vključujejo NULL. Za te namene se v povezavi z NULL besedo uporablja ključna beseda "IS / NOT". Osnovna sintaksa, ko se kot ključna beseda uporablja null, je naslednja
`comlumn_name' IS NULL`comlumn_name' NOT NULL
TUKAJ
- "IS NULL" je ključna beseda, ki izvaja logično primerjavo. Vrne true, če je podana vrednost NULL, in false, če podana vrednost ni NULL.
- "NOT NULL" je ključna beseda, ki izvaja logično primerjavo. Vrne true, če podana vrednost ni NULL, in false, če je navedena vrednost nič.
Poglejmo si zdaj praktični primer, ki s ključno besedo NOT NULL izloči vse vrednosti stolpcev, ki imajo ničelne vrednosti.
Če nadaljujemo z zgornjim primerom, predpostavimo, da potrebujemo podatke o članih, katerih kontaktna številka ni nična. Izvedemo lahko poizvedbo kot
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Izvedba zgornje poizvedbe daje samo zapise, pri katerih kontaktna številka ni nič.
Recimo, da želimo zapise članov, kjer je kontaktna številka nična. Lahko uporabimo naslednjo poizvedbo
SELECT * FROM `members` WHERE contact_number IS NULL;
Z izvajanjem zgornje poizvedbe dobite podrobnosti o članu, katerih kontaktna številka je 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 |
Primerjava ničelnih vrednosti s
Trivrednostna logika - izvajanje logičnih operacij v pogojih, ki vključujejo NULL, lahko vrne »Neznano«, »Resnično« ali »False«.
Na primer, uporaba ključne besede "IS NULL" pri izvajanju primerjalnih operacij, ki vključujejo NULL, lahko vrne true ali false . Uporaba drugih primerjalnih operaterjev vrne "Neznano" (NULL).
Recimo, da primerjate številko pet s 5
SELECT 5 =5;
Rezultat poizvedbe je 1, kar pomeni TRUE
5 =5 |
---|
1 |
Naredimo enako operacijo z NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Poglejmo si še en primer
SELECT 5 > 5;
5> 5 |
---|
0 |
Rezultat poizvedbe je 0, kar pomeni FALSE
Poglejmo si isti primer z uporabo NULL
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
Uporabimo ključno besedo IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Rezultat poizvedbe je 0, kar je FALSE
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Rezultat poizvedbe je 1, kar je TRUE
Povzetek
- NULL je imetnik mesta vrednosti za neobvezna polja tabel.
- MySQL NULL vrednost obravnava drugače kot druge vrste podatkov. Vrednosti NULL, kadar se uporabljajo v pogoju, se izračunajo kot napačne logične vrednosti.
- Logična operacija NOT se uporablja za testiranje logičnih vrednosti in oceni na true, če je logična vrednost false, in false, če je logična vrednost true.
- Stavek NOT NULL se uporablja za odstranjevanje vrednosti NULL iz nabora rezultatov
- Izvajanje aritmetičnih operacij z vrednostmi NULL vedno vrne NULL rezultate.
- Operaterjev primerjave, kot je [, = itd.], Ni mogoče uporabiti za primerjavo NULL vrednosti.