V SQL Null je jak hodnota, tak i klíčové slovo. Nejprve se podívejme na hodnotu NULL -
Null jako hodnota
Jednoduše řečeno, NULL je prostě místo pro data, která neexistují. Při provádění operací vložení do tabulek budou časy, kdy některé hodnoty polí nebudou k dispozici.
Aby bylo možné splnit požadavky skutečných systémů správy relačních databází, používá MySQL NULL jako držák hodnot, které nebyly odeslány. Snímek obrazovky níže ukazuje, jak hodnoty NULL vypadají v databázi.
Pojďme se nyní podívat na některé základní informace o NULL, než půjdeme dále do diskuse.
- NULL není datový typ - to znamená, že není rozpoznán jako „int“, „datum“ nebo jakýkoli jiný definovaný datový typ.
- Aritmetické operace zahrnující NULL vždy vrátí NULL například 69 + NULL = NULL.
- Všechny agregační funkce ovlivňují 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`;
Provedení 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 | 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 |
Počítáme 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é mají NULL, nebyly zahrnuty
Co NENÍ?
Logický operátor NOT se používá k testování booleovských podmínek a vrací true, pokud je podmínka false. Operátor NOT vrátí hodnotu false, pokud je testovaná podmínka pravdivá
Stav |
NENÍ výsledek operátora |
Skutečný |
Nepravdivé |
Nepravdivé |
Skutečný |
Proč používat NOT null?
Budou případy, kdy budeme muset provést výpočty na sadě výsledků dotazu a vrátit hodnoty. Provedení jakýchkoli aritmetických operací se sloupci, které mají hodnotu NULL, vrátí výsledky null. Abychom těmto situacím předešli, můžeme k omezení výsledků, na nichž fungují naše data, použít klauzuli NOT NULL.
NE 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 použít klauzuli NOT NULL na daném poli.
Následující příklad vytvoří novou tabulku, která obsahuje data zaměstnanců. 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 zadání jména zaměstnance a uvidíme, co se stane.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Provedení výše uvedeného skriptu v pracovní ploše MySQL dává následující chybu -
NULL Klíčová slova
NULL lze také použít jako klíčové slovo při provádění booleovských operací s hodnotami, které zahrnují NULL. Klíčové slovo „IS / NOT“ se pro tyto účely používá ve spojení se slovem NULL. Základní syntaxe, když se jako klíčové slovo používá null, je následující
`comlumn_name' IS NULL`comlumn_name' NOT NULL
TADY
- „IS NULL“ je klíčové slovo, které provádí booleovské srovnání. Vrátí true, pokud je zadaná hodnota NULL a false, pokud zadaná hodnota není NULL.
- „NOT NULL“ je klíčové slovo, které provádí booleovské srovnání. Vrátí true, pokud zadaná hodnota není NULL, a 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čováním výše uvedeného příkladu předpokládejme, že potřebujeme podrobnosti o členech, jejichž kontaktní číslo není null. Můžeme provést dotaz jako
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Provedení výše uvedeného dotazu dává 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í výše uvedeného dotazu poskytne podrobnosti člena, 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 | 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 |
Porovnání nulové hodnoty s
Logika se třemi hodnotami - provádění booleovských operací za podmínek, které zahrnují NULL, může buď vrátit hodnotu „Unknown“, „True“, nebo „False“.
Například použití klíčového slova "IS NULL" při provádění srovnávacích operací zahrnujících NULL může vrátit hodnotu true nebo false . Použití jiných operátorů porovnání vrátí hodnotu „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á NEPRAVDA
Podívejme se na stejný příklad pomocí NULL
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
Pojďme použít klíčové slovo IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Výsledek dotazu je 0, což je FALSE
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Výsledek dotazu je 1, což je PRAVDA
souhrn
- NULL je držitel hodnoty pro volitelná pole tabulky.
- MySQL zachází s hodnotou NULL odlišně od ostatních datových typů. Hodnoty NULL při použití v podmínce se vyhodnotí na falešnou logickou hodnotu.
- NOT logická operace se používá k testování booleovských hodnot a vyhodnocuje se na true, pokud je booleovská hodnota false, a false, pokud je booleovská hodnota true.
- Klauzule NOT NULL se používá k vyloučení 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.