Nie każdy zwój ma wypełnione wszystkie rubryki. Czasem rok urodzenia autora jest nieznany, a wypożyczona książka nie została jeszcze zwrócona. Tę pustkę - brak jakiejkolwiek wartości - w bazie danych nazywamy NULL.
Ważne, @name:
NULL to nie to samo co liczba 0 ani pusty tekst ''. NULL oznacza "tu nic nie ma, wartość nieznana". To jak pusta rubryka na zwoju, której nikt jeszcze nie wypełnił.Z powodu tej "nieznanej" natury
NULL nie możemy porównać go zwykłym znakiem =. To zapytanie nie zadziała poprawnie:1SELECT * FROM wypozyczenia
2WHERE data_zwrotu = NULL;Biblioteka nie wie, czy "nieznane" równa się "nieznane", więc zawsze zwróci pustkę. Dlatego MySQL ma specjalne operatory.
Aby sprawdzić, czy wartość jest pusta, używamy IS NULL:
1SELECT * FROM wypozyczenia
2WHERE data_zwrotu IS NULL;To znaczy: "Wypożyczenia, które nie zostały jeszcze zwrócone" - bo dopóki książka jest u czytelnika,
data_zwrotu pozostaje pusta.Aby znaleźć wiersze, które mają wartość, używamy IS NOT NULL:
1SELECT * FROM wypozyczenia
2WHERE data_zwrotu IS NOT NULL;To znaczy: "Wypożyczenia już zwrócone" - bo
data_zwrotu została wpisana.Zapamiętaj prostą regułę: do NULL nigdy nie używamy
, tylko =
lub IS NULL
. To jeden z najczęstszych błędów początkujących skrybów - Ty już go unikniesz!IS NOT NULL