Jak počítat hodnoty SQL NULL a NOT NULL ve sloupci

Práce s hodnotami NULL v databázích SQL představuje běžnou výzvu pro datové analytiky i databázové specialisty. Manipulace s NULL může být složitá a nejednoznačná, což může vést k frustraci při analýze dat.

Nicméně, je zásadní pochopit, co přesně hodnoty NULL reprezentují a jaký mají vliv na data, abyste mohli získat přesné a ucelené informace. Tento článek se zaměří na SQL příkazy a jejich využití pro zjišťování počtu hodnot NULL a NOT NULL.

Co je hodnota NULL v SQL?

Hodnota NULL v SQL označuje absenci jakékoliv hodnoty. Není to nula ani prázdný řetězec.

Proto na ni nelze aplikovat běžné porovnávací operátory jako =, <, > a <>. Při jejich použití bude výsledkem vždy NEZNÁMÝ.

Představte si hodnotu NULL jako nevyplněné pole při vytváření nového záznamu. Můžete vytvořit tabulku a přidat nový sloupec bez zadání hodnoty. Toto pole pak bude mít hodnotu NULL. NULL hodnoty lze také vkládat do sloupců libovolného datového typu.

Pro demonstraci vytvořte novou SQL tabulku s použitím níže uvedeného kódu:

 CREATE TABLE Employee (
  FirstName VARCHAR(50),
  LastName VARCHAR(50),
  PhoneNum VARCHAR(15),
  Salary FLOAT
);

INSERT INTO Employee (FirstName, LastName, PhoneNum, Salary)
VALUES 
  ('Maxwell', 'Ayomide', '812-345-6789', 150000.00),
  ('David', 'Tosin', NULL, 450000.00),
  ('Eben', 'Teniola', '912-345-6789', 590000.00),
  ('Kenneth', 'Olisa', '809-456-8732', NULL),
  ('Esther', 'Oge', NULL, NULL);
 

Hodnoty NULL v tabulce můžete rovněž aktualizovat pomocí příkazu UPDATE. Použijte následující syntaxi.

 UPDATE Employee
SET FirstName="Esther"
WHERE Salary = 200000; 

Pro zobrazení výsledku spusťte:

 SELECT * FROM Employee;

Kdy jsou hodnoty NULL užitečné?

V SQL se hodnoty NULL používají v různých situacích:

  • Když data nejsou dostupná nebo nejsou známá v okamžiku vkládání.
  • Když se daný údaj nevztahuje na danou entitu. Například v dotazníku může mít otázka, kde mají účastníci zaškrtnout políčko, zda mají děti, nějaké hodnoty NULL.

Co je podmínka SQL IS NULL?

Příkaz SQL IS NULL je klíčový příkaz, který by měl znát každý programátor. Slouží k testování, zda je hodnota NULL. Nejčastěji se používá při vyhledávání NULL hodnot. Tento příkaz vrátí všechny řádky, které mají ve sloupci specifikovaném v dotazu hodnotu NULL.

 SELECT FirstName, LastName, PhoneNum
FROM Employee
WHERE PhoneNum IS NULL;
 

Tento dotaz vrátí všechny hodnoty NULL ve sloupci PhoneNum.

Co je podmínka SQL IS NOT NULL?

Příkaz SQL IS NOT NULL je opakem příkazu SQL IS NULL.

Používá se k testování hodnot, které nejsou prázdné (NOT NULL hodnoty). Vždy vrátí všechny řádky ve sloupci, které mají nějakou hodnotu, a vyloučí všechny hodnoty NULL ve sloupci určeném dotazem.

 SELECT FirstName, LastName, PhoneNum
FROM Employee
WHERE PhoneNum IS NOT NULL;
 

Tento dotaz vrátí všechny hodnoty NOT NULL ve sloupci PhoneNum.

Jak spočítat hodnoty NULL ve sloupci?

Pro počítání se používá příkaz COUNT(). Je to užitečný příkaz pro analýzu dat v tabulkách SQL a práci s poddotazy a dočasnými tabulkami.

Následující dotaz spočítá počet hodnot NULL ve sloupci PhoneNum.

 SELECT COUNT(*) AS [Celkový počet NULL hodnot]
FROM Employee
WHERE PhoneNum IS NULL
 

Výsledkem bude:

Jak spočítat hodnoty NOT NULL ve sloupci?

Pomocí příkazu NOT NULL můžete spočítat počet hodnot, které nejsou NULL ve sloupci PhoneNum.

 SELECT COUNT(PhoneNum) AS [Celkový počet nenulových hodnot]
FROM Employee
WHERE PhoneNum IS NOT NULL
 

Výsledkem bude:

Tento dotaz lze rovněž použít k uložení výsledku do tabulky.

 SELECT SUM(CASE WHEN PhoneNum is null THEN 1 ELSE 0 END) 
AS [Počet nulových hodnot],
COUNT(PhoneNum) AS [Počet nenulových hodnot]
FROM Employee
 

V tomto dotazu se příkazy CASE a IS NULL použily ke klasifikaci vaší hodnoty NULL ve sloupci PhoneNum jako 1. Tato hodnota se sečte a uloží do nově vytvořeného sloupce Počet nulových hodnot.

Spočítejte NULL hodnoty a pokračujte v analýze

Ačkoliv se může práce s NULL hodnotami zdát komplikovaná, ve skutečnosti je poměrně jednoduchá. S použitím funkce COUNT() můžete spočítat jak NULL, tak nenulové hodnoty pomocí několika řádků SQL kódu.

Jakmile si osvojíte tyto SQL příkazy, můžete je aplikovat v různých situacích a efektivně analyzovat data.