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 –

MySQL JE NULL & NENÍ 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.

Null jako hodnota

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 email
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 12345rm@tstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter MaleNULL 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 -

NOT NULL Hodnoty

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 email
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.