V SQL je hodnota Null hodnota aj kľúčové slovo. Najprv sa pozrime na hodnotu NULL -
Null ako hodnota
Zjednodušene povedané, NULL je jednoducho držiteľom údajov, ktoré neexistujú. Pri vykonávaní operácií vloženia do tabuliek to budú časy, keď niektoré hodnoty polí nebudú k dispozícii.
Za účelom splnenia požiadaviek skutočných systémov správy relačných databáz používa MySQL ako zástupcu pre hodnoty, ktoré neboli zadané, NULL. Screenshot nižšie ukazuje, ako vyzerajú hodnoty NULL v databáze.
Pozrime sa teraz na niektoré základné informácie o NULL, kým prejdeme ďalej do diskusie.
- NULL nie je dátový typ - znamená to, že nie je rozpoznaný ako „int“, „dátum“ alebo iný definovaný dátový typ.
- Aritmetické operácie zahŕňajúce NULL vždy vrátia NULL, napríklad 69 + NULL = NULL.
- Všetky agregačné funkcie ovplyvňujú iba riadky, ktoré nemajú hodnoty NULL .
Poďme si teraz demonštrovať, ako funkcia počítania zaobchádza s nulovými hodnotami. Pozrime sa na aktuálny obsah tabuľky členov-
SELECT * FROM `members`;
Vykonanie vyššie uvedeného skriptu nám prinesie nasledujúce výsledky
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 |
Spočítajme všetkých členov, ktorí si aktualizovali svoje kontaktné číslo
SELECT COUNT(contact_number) FROM `members`;
Vykonaním vyššie uvedeného dotazu získate nasledujúce výsledky.
COUNT(contact_number) |
---|
7 |
Poznámka: Hodnoty, ktoré majú hodnotu NULL, neboli zahrnuté
Čo NIE?
Logický operátor NOT sa používa na testovanie logických podmienok a vráti hodnotu true, ak je podmienka nepravdivá. Operátor NOT vráti hodnotu false, ak je testovaná podmienka pravdivá
Stav |
NIE Výsledok operátora |
Pravdaže |
Falošné |
Falošné |
Pravdaže |
Prečo používať NOT null?
Budú prípady, keď budeme musieť vykonať výpočty na množine výsledkov dotazu a vrátiť hodnoty. Vykonanie akýchkoľvek aritmetických operácií na stĺpcoch, ktoré majú hodnotu NULL, vráti nulové výsledky. Aby sa zabránilo takýmto situáciám, môžeme na obmedzenie výsledkov, na ktorých fungujú naše údaje, použiť doložku NOT NULL.
NIE NULL Hodnoty
Predpokladajme, že chceme vytvoriť tabuľku s určitými poľami, ktorým by sa pri vkladaní nových riadkov do tabuľky mali vždy dodávať hodnoty. Pri vytváraní tabuľky môžeme na danom poli použiť klauzulu NOT NULL.
Príklad zobrazený nižšie vytvára novú tabuľku, ktorá obsahuje údaje zamestnancov. Vždy by sa malo uviesť číslo zamestnanca
CREATE TABLE `employees`(employee_number int NOT NULL,full_names varchar(255) ,gender varchar(6));
Skúsme teraz vložiť nový záznam bez uvedenia mena zamestnanca a uvidíme, čo sa stane.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL spôsobí nasledujúcu chybu -
NULL Kľúčové slová
NULL možno tiež použiť ako kľúčové slovo pri vykonávaní booleovských operácií s hodnotami, ktoré zahŕňajú NULL. Kľúčové slovo „IS / NOT“ sa na tieto účely používa v spojení so slovom NULL. Ak sa ako kľúčové slovo použije null, základná syntax je nasledovná
`comlumn_name' IS NULL`comlumn_name' NOT NULL
TU
- „IS NULL“ je kľúčové slovo, ktoré vykonáva boolovské porovnanie. Vráti hodnotu true, ak je zadaná hodnota NULL, a hodnotu false, ak zadaná hodnota nie je NULL.
- „NOT NULL“ je kľúčové slovo, ktoré vykonáva boolovské porovnanie. Vráti hodnotu true, ak zadaná hodnota nemá hodnotu NULL, a hodnotu false, ak je zadaná hodnota nulová.
Pozrime sa teraz na praktický príklad, ktorý pomocou kľúčového slova NOT NULL eliminuje všetky hodnoty stĺpcov, ktoré majú nulové hodnoty.
Pokračovaním vyššie uvedeného príkladu predpokladajme, že potrebujeme podrobnosti o členoch, ktorých kontaktné číslo nie je neplatné. Môžeme vykonať dotaz ako
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Vykonanie vyššie uvedeného dotazu poskytne iba záznamy, kde kontaktné číslo nie je nulové.
Predpokladajme, že chceme záznamy členov, kde je kontaktné číslo nulové. Môžeme použiť nasledujúci dotaz
SELECT * FROM `members` WHERE contact_number IS NULL;
Vykonaním vyššie uvedeného dotazu získate podrobnosti o členovi, ktorého kontaktné číslo 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 |
Porovnanie nulovej hodnoty s
Logika s tromi hodnotami - vykonávanie boolovských operácií za podmienok, ktoré zahŕňajú NULL, môže vrátiť hodnotu „Neznáme“, „Pravda“ alebo „Falošná“.
Napríklad použitie kľúčového slova „IS NULL“ pri porovnávacích operáciách zahŕňajúcich NULL môže vrátiť hodnotu true alebo false . Pri použití iných operátorov porovnania sa vráti hodnota „Neznáme“ (NULL).
Predpokladajme, že porovnáte číslo päť s 5
SELECT 5 =5;
Výsledok dotazu je 1, čo znamená PRAVDA
5 =5 |
---|
1 |
Urobme rovnakú operáciu s NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Pozrime sa na ďalší príklad
SELECT 5 > 5;
5> 5 |
---|
0 |
Výsledok dotazu je 0, čo znamená FALSE
Pozrime sa na rovnaký príklad pomocou NULL
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
Umožňuje použiť kľúčové slovo IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Výsledok dotazu je 0, čo je FALSE
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Výsledok dotazu je 1, čo je PRAVDA
Zhrnutie
- NULL je držiteľ hodnoty pre voliteľné polia tabuľky.
- MySQL zaobchádza s hodnotou NULL odlišne od iných dátových typov. Hodnoty NULL pri použití v podmienke sa vyhodnotia ako nepravdivá logická hodnota.
- NOT logická operácia sa používa na testovanie boolovských hodnôt a vyhodnocuje sa ako true, ak je boolovská hodnota nepravdivá, a nepravdivá, ak je boolovská hodnota pravdivá.
- Klauzula NOT NULL sa používa na vylúčenie hodnôt NULL z množiny výsledkov
- Vykonanie aritmetických operácií s hodnotami NULL vždy vráti výsledky NULL.
- Porovnávacie operátory ako [, = atď.] Nemožno použiť na porovnanie hodnôt NULL.