
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
Opanuj SQL z moim kursem!
Poznasz zarówno podstawy, jak i zaawansowane zapytania analityczne (CTE, subqueries, window functions). Nauczysz się pracować na różnych silnikach – na kursie pracujemy zarówno na MySQL, jak i na Postgres. Wszystko zainstalujemy na Twoim komputerze, plus dostaniesz mnóstwo zestawów danych do ćwiczeń.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.