MySQL IS NULL i IS NOT NULL z przykładami
⚡ Inteligentne podsumowanie
MySQL IS NULL i IS NOT NULL to słowa kluczowe porównania, które sprawdzają, czy kolumna zawiera brakującą wartość. NULL oznacza brakujące dane, zachowuje się inaczej niż zero lub pusty ciąg znaków i wymaga dedykowanych operatorów do niezawodnego filtrowania.

W SQL NULL jest zarówno wartością, jak i słowem kluczowym. Przyjrzyjmy się najpierw wartości NULL.
Co oznacza NULL w MySQL?
W prostych słowach, NULL jest symbolem zastępczym dla danych, które nie istniejąPodczas wykonywania operacji wstawiania do tabel mogą zdarzyć się sytuacje, w których niektóre wartości pól będą niedostępne.
Aby spełnić wymagania prawdziwych systemów zarządzania relacyjnymi bazami danych, MySQL Używa wartości NULL jako symbolu zastępczego dla wartości, które nie zostały przesłane. Poniższy zrzut ekranu pokazuje, jak wartości NULL wyglądają w tabeli bazy danych.
Zwróć uwagę, że puste komórki są oznaczone wartością NULL, a nie pustym tekstem i zerem. Zanim przejdziemy dalej, zapoznaj się z podstawami wartości NULL.
- NULL nie jest typem danych – oznacza to, że nie jest rozpoznawany jako „int”, „data” ani żaden inny zdefiniowany typ danych.
- Działania arytmetyczne z udziałem NULL zawsze zwróć NULLna przykład 69 + NULL = NULL.
- Większość funkcje agregujące zignoruj wiersze zawierające wartości NULLJedynym wyjątkiem jest COUNT(*), który zlicza każdy wiersz bez względu na wartość NULL.
Jak funkcje agregujące traktują wartość NULL
Ta reguła zmienia odpowiedzi zwracane przez zapytania raportujące, więc udowodnijmy to. Zacznijmy od bieżącej zawartości tabeli członków.
SELECT * FROM `members`;
Wykonanie powyższego skryptu daje nam następujące wyniki.
| membership_ number | full_ names | gender | date_of_ birth | physical_ address | postal_ address | contact_ number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
| 5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me |
Podświetlona kolumna „contact_ number” zawiera łącznie dziewięć wierszy, ale dwa z nich są puste. Policzmy wszystkich członków, którzy zaktualizowali swój numer kontaktowy.
SELECT COUNT(contact_number) FROM `members`;
Wykonanie powyższego zapytania daje nam następujące wyniki.
| COUNT(contact_number) |
|---|
| 7 |
Uwaga: Odpowiedź to 7, a nie 9, ponieważ dwie wartości NULL nie zostały uwzględnione. Uruchomienie funkcji COUNT(*) na tej samej tabeli zwróciłoby 9, ponieważ COUNT(*) zlicza wiersze, a nie wartości.
NIE NULL Wartości
Bezpieczniejszym rozwiązaniem jest całkowite zablokowanie wprowadzania wartości NULL do obowiązkowych kolumn. To właśnie jest zadaniem ograniczenia NOT NULL.
Co to jest NIE Operasłup?
Operator logiczny NOT służy do testowania warunków boolowskich i zwraca wartość true, jeśli warunek jest fałszywy. Operator NOT zwraca wartość false, jeśli testowany warunek jest prawdziwy.
| Stan | NIE Operawynik |
|---|---|
| Prawdziwy | Fałszywy |
| Fałszywy | Prawdziwy |
Dlaczego warto używać NOT NULL?
Zdarzają się sytuacje, w których musimy wykonać obliczenia na zbiorze wyników zapytania i zwrócić wartości. Wykonanie dowolnej operacji arytmetycznej na kolumnie zawierającej wartość NULL zwraca wynik NULL. Aby uniknąć takich sytuacji, możemy zastosować klauzulę NOT NULL, aby ograniczyć wyniki, na których operują nasze dane.
Tworzenie tabeli z kolumną NOT NULL
Załóżmy, że chcemy utworzyć tabelę z określonymi polami, które zawsze powinny być uzupełniane wartościami podczas wstawiania nowych wierszy. Możemy użyć klauzuli NOT NULL dla danego pola podczas tworzenia tabeli.
Poniższy przykład tworzy nową tabelę zawierającą dane pracowników. Numer pracownika powinien być zawsze podawany.
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Spróbujmy teraz wstawić nowy rekord bez określania numeru pracownika i zobaczmy, co się stanie.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Wykonanie powyższego skryptu w MySQL Workbench wyświetla następujący błąd, ponieważ pominięto obowiązkową kolumnę.
Słowa kluczowe IS NULL i IS NOT NULL
Ograniczenie blokuje nowe wartości NULL. Aby pracować z wartościami NULL, które już istnieją, należy użyć słowa kluczowego NULL. Składnia jest następująca.
column_name IS NULL column_name IS NOT NULL
TUTAJ
- „NIE JEST NULL” to słowo kluczowe, które wykonuje porównanie logiczne. Zwraca wartość true, jeśli podana wartość ma wartość NULL i false, jeśli podana wartość nie jest równa NULL.
- „NIE JEST NULL” to słowo kluczowe, które wykonuje porównanie odwrotne. Zwraca wartość true, jeśli podana wartość jest różna od NULL, i false, jeśli podana wartość jest równa NULL.
Przyjrzyjmy się praktycznemu przykładowi, w którym użyto słowa kluczowego IS NOT NULL w celu wyeliminowania wszystkich wierszy, które w kolumnie zawierają wartości NULL.
Kontynuując analizę powyższej tabeli członków, załóżmy, że potrzebujemy danych członków, których numer kontaktowy jest różny od NULL. Możemy wykonać takie zapytanie.
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Wykonanie powyższego zapytania zwróci tylko siedem rekordów, w których znajduje się numer kontaktowy, co jest zgodne z wynikiem COUNT z poprzedniej sekcji.
Załóżmy teraz, że chcemy zrobić coś odwrotnego: rekordy członków, w których brakuje numeru kontaktowego. Możemy użyć następującego zapytania.
SELECT * FROM `members` WHERE contact_number IS NULL;
Wykonanie powyższego zapytania zwraca dwa rekordy członków, których numer kontaktowy jest NULL.
| membership_ number | full_names | gender | date_of_birth | physical_address | postal_address | contact_ number | |
|---|---|---|---|---|---|---|---|
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Ostrzeżenie: Warunek taki jak WHERE contact_number = NULL zwraca pusty zestaw wyników, mimo że istnieją wartości NULL. Operator równości nigdy nie może dopasować wartości NULL, więc IS NULL jest jedynym poprawnym testem.
Porównywanie wartości NULL z logiką trójwartościową
Logika trzech wartości – wykonywanie operacji logicznych na warunkach zawierających wartość NULL może zwrócić „Nieznane”, „Prawda” lub „Fałsz”.
Użycie słowa kluczowego „IS NULL” podczas wykonywania operacji porównania z udziałem NULL powraca prawdziwy or fałszywy. Użycie innych operatorów porównania powoduje zwrot „Nieznany” (NULL)Poniższa tabela porównuje poszczególne wyrażenia.
| Wyrażenie | Wynik | Znaczenie |
|---|---|---|
| WYBIERZ 5 = 5; | 1 | TRUE |
| WYBIERZ NULL = NULL; | NULL | NIEZNANE |
| WYBIERZ 5 > 5; | 0 | FAŁSZYWY |
| WYBIERZ NULL > NULL; | NULL | NIEZNANE |
| WYBIERZ 5 JEST NULL; | 0 | FAŁSZYWY |
| WYBIERZ NULL JEST NULL; | 1 | TRUE |
Porównaj liczbę pięć ze sobą, a następnie powtórz operację z wartością NULL.
SELECT 5 =5; SELECT NULL = NULL;
| 5 =5 | NULL = NULL |
|---|---|
| 1 | NULL |
Pierwszy wynik to 1 (PRAWDA). Drugi to NULL, ponieważ MySQL Nie można stwierdzić, że jedna nieznana wartość jest równa innej nieznanej wartości. Teraz użyj słowa kluczowego IS NULL dla tych samych wartości.
SELECT 5 IS NULL; SELECT NULL IS NULL;
| 5 IS NULL | NULL IS NULL |
|---|---|
| 0 | 1 |
Tym razem odpowiedzi są pewne: 0 (FAŁSZ) i 1 (PRAWDA). Tylko słowa kluczowe IS NULL i IS NOT NULL zwracają pewną odpowiedź, gdy występuje wartość NULL.


