NULL w SQL

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

NULL w SQL oznacza brak wartości w polu tabeli. Nie jest tym samym co 0, pusty tekst '' ani spacja. Oznacza, że dana informacja nie została podana lub jest nieznana.

Jak działa NULL w warunkach?

Ważna zasada: wartości NULL nie porównuje się zwykłymi operatorami = ani !=.

Niepoprawne lub nieskuteczne filtrowanie:

SELECT * FROM zwierzeta WHERE szczepienie = NULL;

Poprawne sprawdzanie braku wartości:

SELECT * FROM zwierzeta WHERE szczepienie IS NULL;

Poprawne sprawdzanie, że wartość istnieje:

SELECT * FROM zwierzeta WHERE szczepienie IS NOT NULL;

NULL a warunek z konkretną wartością

Jeżeli zapytanie zawiera warunek:

WHERE szczepienie = 2016

zostaną wybrane tylko rekordy, w których kolumna szczepienie ma dokładnie wartość 2016. Rekordy z NULL w tej kolumnie nie spełnią tego warunku.

Przykład:

SELECT imie
FROM zwierzeta
WHERE rodzaj = 2 AND szczepienie = 2016;

Zapytanie wybierze imiona zwierząt, które jednocześnie:

  • mają rodzaj = 2,
  • mają szczepienie = 2016.

Jeżeli zwierzę ma rodzaj = 2, ale w kolumnie szczepienie znajduje się NULL, nie zostanie pokazane w wyniku.

Typowy błąd na egzaminie

Częsty błąd polega na traktowaniu NULL jak zwykłej wartości. W SQL NULL oznacza „nie wiadomo” lub „brak danych”, dlatego wymaga operatorów IS NULL i IS NOT NULL.