Jak działa IS NOT NULL w języku SQL? Przykłady zastosowania

Jak działa IS NOT NULL w języku SQL? Przykłady zastosowania

Pracując z bazami danych, często natrafiam na wartość NULL, która oznacza brak danych, a nie zero czy pusty ciąg znaków. W SQL bardzo ważne jest umiejętne filtrowanie rekordów, a jednym z kluczowych operatorów do tego jest IS NOT NULL. Dzisiaj wyjaśnię, jak on działa i jak wykorzystać go w praktyce.

Co to jest NULL w SQL?

Zanim przejdę do działania IS NOT NULL, warto wyjaśnić, czym właściwie jest NULL. W SQL NULL oznacza nieokreśloną wartość, co różni się od wartości pustej ('') czy zera (0). Oto kilka kluczowych cech wartości NULL:

  • Nie można jej porównywać za pomocą operatorów logicznych = czy !=.
  • Operacje matematyczne na NULL zawsze zwracają NULL.
  • Jest używana, gdy w kolumnie nie przechowujemy konkretnej wartości.

Jak działa IS NOT NULL w SQL?

Skoro NULL reprezentuje brak danych, trudno go porównywać standardowymi operatorami. Jeśli napiszę:

SELECT * FROM pracownicy WHERE pensja != NULL;

To SQL nie zwróci żadnych rezultatów, ponieważ porównanie czegokolwiek do NULL zawsze daje wynik FALSE lub UNKNOWN. Aby prawidłowo znaleźć rekordy, gdzie kolumna nie zawiera wartości NULL, muszę użyć operatora IS NOT NULL:

SELECT * FROM pracownicy WHERE pensja IS NOT NULL;

Dzięki temu zapytaniu otrzymam tylko te wiersze, gdzie kolumna pensja ma rzeczywistą wartość.

Przykłady użycia IS NOT NULL

1. Filtrowanie wyników według określonych danych

Jeśli chcę znaleźć pracowników, którzy mają przypisane adresy e-mail, mogę użyć następującego zapytania:

SELECT imie, nazwisko, email FROM pracownicy WHERE email IS NOT NULL;

2. Łączenie tabel i unikanie pustych wartości

Załóżmy, że mam dwie tabele: klienci i zamówienia. Jeśli chcę znaleźć klientów, którzy dokonali zamówienia, mogę użyć LEFT JOIN wraz z IS NOT NULL w warunku WHERE:

SELECT klienci.id, klienci.nazwa, zamówienia.id AS zamowienie_id
FROM klienci
LEFT JOIN zamówienia ON klienci.id = zamówienia.klient_id
WHERE zamówienia.id IS NOT NULL;

To zapewni, że zwrócone będą tylko rekordy, gdzie istnieje powiązane zamówienie.

3. Agregacja danych i eliminacja NULL

Przykładowo, jeśli chcę obliczyć średnią pensję pracowników, ale pominąć tych, którzy jej nie mają określonej, mogę wykonać zapytanie:

SELECT AVG(pensja) AS srednia_pensja FROM pracownicy WHERE pensja IS NOT NULL;

Porównanie wyników bez IS NOT NULL i z IS NOT NULL

Aby zobrazować różnicę w wynikach, spójrzmy na poniższą tabelę:

ID Imię Pensja
1 Jan 5000
2 Anna NULL
3 Piotr 4500

Jeśli wykonam zapytanie:

SELECT * FROM pracownicy;

Dostanę wszystkie rekordy, również te z wartością NULL w kolumnie pensja. Natomiast gdy użyję IS NOT NULL:

SELECT * FROM pracownicy WHERE pensja IS NOT NULL;

Wynik zwróci tylko Jana i Piotra, ponieważ Anna ma wartość NULL w kolumnie pensja.

Podsumowanie

Operator IS NOT NULL w SQL to potężne narzędzie, które pozwala filtrować rekordy, eliminując te, które zawierają nieokreślone wartości. Często używam go w praktyce do:

  • Filtrowania rekordów, które mają rzeczywiste wartości.
  • Łączenia tabel i eliminowania pustych rekordów.
  • Obliczeń agregujących, w których wartości NULL mogą zaburzyć wynik.

Rozumiejąc, jak działa IS NOT NULL, mogę lepiej zarządzać danymi i unikać problemów wynikających z obecności wartości NULL w bazie danych.

 

Inny ciekawy artykuł:

Jak działa IS NULL w języku SQL? Przykłady zastosowania

KajoDataSpace