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.

  • 🧩 Definicja podstawowa: NULL to symbol zastępczy dla danych, które nie istnieją. Nie jest to typ danych ani liczba zero.
  • Zachowanie arytmetyczne: Każde wyrażenie arytmetyczne zawierające wartość NULL zwraca wartość NULL, więc 69 + NULL daje w wyniku wartość NULL, a nie 69.
  • 📊 Łączny wpływ: Funkcja COUNT(kolumna) i inne funkcje agregujące pomijają wiersze NULL, natomiast funkcja COUNT(*) nadal zlicza każdy wiersz w tabeli.
  • ???? Ograniczenie NOT NULL: Deklaracja kolumny NOT NULL powoduje odrzucenie wszelkich wstawek pomijających wartość, co chroni pola obowiązkowe, takie jak identyfikatory.
  • 🔍 Prawidłowe filtrowanie: Jedynymi niezawodnymi testami są IS NULL i IS NOT NULL, ponieważ operator równości nigdy nie dopasowuje wartości NULL.
  • ⚖️. Logika trójwartościowa: Porównania z NULL zwracają UNKNOWN, więc SELECT NULL = NULL zwraca NULL zamiast TRUE.

MySQL JEST NULL i NIE JEST NULL

W SQL NULL jest zarówno wartością, jak i słowem kluczowym. Przyjrzyjmy się najpierw wartości NULL.

MySQL JEST NULL I NIE JEST 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.

Null jako wartość

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 email
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 12345rm@tstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter MaleNULL 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ę.

NIE NULL Wartości

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 email
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.

FAQ

Zero to liczba, a pusty ciąg to tekst, więc oba spełniają testy równości. NULL oznacza, że ​​nie podano żadnej wartości, dlatego reaguje tylko na IS NULL i IS NOT NULL.

IFNULL(kolumna, 'N/A') zwraca zamiennik, gdy kolumna ma wartość NULL. COALESCE(a, b, c) zwraca pierwszy argument różny od NULL. Oba są przydatne w… MySQL Funkcje i raporty.

Nie. MySQL Automatycznie stosuje NOT NULL do każdej kolumny klucza podstawowego, ponieważ nie może brakować klucza identyfikującego wiersz. Indeks UNIQUE działa inaczej i dopuszcza wiele wartości NULL.

Zazwyczaj tak. Asystenci AI w narzędziach takich jak MySQL Workbench zamień „członków bez numeru telefonu” na klauzulę WHERE column IS NULL. Revsprawdź filtr, ponieważ test równości względem NULL nie zwraca niczego.

Często tak. Narzędzia do przeglądu AI sygnalizują błędy, takie jak porównania = NULL, SELECT która uśrednia kolumnę zawierającą NULL, a NOT IN listy zawierające NULL. Ostateczna ocena należy do osoby znającej dane.

Podsumuj ten post następująco: