MySQL IS NULL & IS NOT NULL Výukový program s PŘÍKLADY
V SQL je Null hodnotou i klíčovým slovem. Nejprve se podíváme na hodnotu NULL –
Null jako hodnota
Jednoduše řečeno, NULL je jednoduše zástupný symbol pro data, která neexistují. Při provádění operací vkládání na tabulkách nastanou situace, kdy některé hodnoty polí nebudou k dispozici.
Aby byly splněny požadavky skutečných systémů pro správu relačních databází, MySQL používá NULL jako zástupný symbol pro hodnoty, které nebyly odeslány. Níže uvedený snímek obrazovky ukazuje, jak hodnoty NULL vypadají v databázi.
Podívejme se nyní na některé základy pro NULL, než přejdeme dále do diskuse.
- NULL není datový typ – to znamená, že není rozpoznán jako „int“, „date“ nebo jiný definovaný datový typ.
- Aritmetické operace zahrnující NULL vždy vrátit NULL například 69 + NULL = NULL.
- Vše agregační funkce ovlivnit pouze řádky, které nemají hodnoty NULL.
Pojďme si nyní ukázat, jak funkce count zachází s hodnotami null. Podívejme se na aktuální obsah tabulky členů-
SELECT * FROM `members`;
Spuštění výše uvedeného skriptu nám poskytne následující 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 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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 |
Počítejme všechny členy, kteří aktualizovali své kontaktní_číslo
SELECT COUNT(contact_number) FROM `members`;
Provedení výše uvedeného dotazu nám poskytne následující výsledky.
COUNT(contact_number) |
---|
7 |
Poznámka: Hodnoty, které jsou NULL, nebyly zahrnuty
Co NENÍ?
Logický operátor NOT se používá k testování booleovských podmínek a vrací hodnotu true, pokud je podmínka nepravdivá. Operátor NOT vrátí hodnotu false, pokud je testovaná podmínka pravdivá
Stav | NENÍ Operator Výsledek |
---|---|
Pravdivý | Falešný |
Falešný | Pravdivý |
Proč používat NOT null?
Nastanou případy, kdy budeme muset provést výpočty na sadě výsledků dotazu a vrátit hodnoty. Provádění jakýchkoli aritmetických operací na sloupcích, které mají hodnotu NULL, vrátí výsledky null. Aby k takovým situacím nedocházelo, můžeme použít klauzuli NOT NULL k omezení výsledků, na kterých naše data fungují.
NOT NULL Hodnoty
Předpokládejme, že chceme vytvořit tabulku s určitými poli, která by měla být vždy doplněna hodnotami při vkládání nových řádků do tabulky. Při vytváření tabulky můžeme na dané pole použít klauzuli NOT NULL.
Níže uvedený příklad vytvoří novou tabulku, která obsahuje data zaměstnance. Vždy by mělo být uvedeno číslo zaměstnance
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Zkusme nyní vložit nový záznam bez uvedení jména zaměstnance a uvidíme, co se stane.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Spuštění výše uvedeného skriptu v MySQL workbench dává následující chybu -
Klíčová slova NULL
NULL lze také použít jako klíčové slovo při provádění booleovských operací s hodnotami, které obsahují NULL. Klíčové slovo „IS/NOT“ se pro tyto účely používá ve spojení se slovem NULL. Základní syntaxe při použití null jako klíčového slova je následující
`comlumn_name' IS NULL `comlumn_name' NOT NULL
ZDE
- "JE NULL." je klíčové slovo, které provádí booleovské porovnání. Vrací hodnotu true, pokud je zadaná hodnota NULL, a hodnotu false, pokud zadaná hodnota není NULL.
- "NENULOVÝ"je klíčové slovo, které provádí booleovské porovnání. Vrací hodnotu true, pokud zadaná hodnota není NULL, a hodnotu false, pokud je zadaná hodnota null.
Podívejme se nyní na praktický příklad, který používá klíčové slovo NOT NULL k odstranění všech hodnot sloupců, které mají hodnoty null.
Pokračujeme ve výše uvedeném příkladu a předpokládejme, že potřebujeme podrobnosti o členech, jejichž kontaktní číslo není nulové. Můžeme provést dotaz jako
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Provedením výše uvedeného dotazu získáte pouze záznamy, kde kontaktní číslo není null.
Předpokládejme, že chceme záznamy členů, kde je kontaktní číslo null. Můžeme použít následující dotaz
SELECT * FROM `members` WHERE contact_number IS NULL;
Provedením výše uvedeného dotazu získáte podrobnosti o členu, jehož 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 | janetjones@yagoo.cm |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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 |
Porovnání nulových hodnot
Trojhodnotová logika – provádění booleovských operací za podmínek, které zahrnují NULL, se může vrátit „Neznámé“, „Pravda“ nebo „Nepravda“.
Například, pomocí klíčového slova „IS NULL“. při provádění srovnávacích operací zahrnující NULL se může buď vrátit pravdivý or nepravdivý. Použití jiných operátorů porovnání vrátí „Neznámý“ (NULL).
Předpokládejme, že porovnáte číslo pět s 5
SELECT 5 =5;
Výsledek dotazu je 1, což znamená PRAVDA
5 =5 |
---|
1 |
Udělejme stejnou operaci s NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Podívejme se na další příklad
SELECT 5 > 5;
5 > 5 |
---|
0 |
Výsledek dotazu je 0, což znamená FALSE
Podívejme se na stejný příklad pomocí NULL
SELECT NULL > NULL;
NULL > NULL |
---|
NULL |
Použijme klíčové slovo IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Výsledek dotazu je 0, což je NEPRAVDA
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Výsledek dotazu je 1, což je PRAVDA
Shrnutí
- NULL je zástupný symbol pro volitelná pole tabulky.
- MySQL zachází s hodnotou NULL odlišně od ostatních datových typů. Hodnoty NULL se při použití v podmínce vyhodnotí jako falešná logická hodnota.
- Logická operace NOT se používá k testování booleovských hodnot a vyhodnocuje se jako true, pokud je logická hodnota nepravda, a false, pokud je logická hodnota true.
- Klauzule NOT NULL se používá k odstranění hodnot NULL ze sady výsledků
- Provádění aritmetických operací s hodnotami NULL vždy vrátí výsledky NULL.
- Porovnávací operátory jako [, = atd.] nelze použít k porovnání hodnot NULL.