MySQL IS NULL & IS NOT NULL Samouczek z PRZYKŁADAMI
W SQL Null jest zarówno wartością, jak i słowem kluczowym. Przyjrzyjmy się najpierw wartości NULL –
Null jako wartość
Mówiąc prościej, NULL jest po prostu symbolem zastępczym dla danych, które nie istnieją. Podczas wykonywania operacji wstawiania w tabelach, będą chwile, gdy niektóre wartości pól nie będą dostępne.
Aby spełnić wymagania prawdziwych systemów zarządzania relacyjnymi bazami danych, MySQL używa NULL jako symbolu zastępczego wartości, które nie zostały przesłane. Poniższy zrzut ekranu pokazuje, jak wartości NULL wyglądają w bazie danych.
Zanim przejdziemy do dalszej dyskusji, przyjrzyjmy się teraz niektórym podstawom 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óć NULL na przykład 69 + NULL = NULL.
- Wszystkie produkty funkcje agregujące wpływa tylko na wiersze, które nie mają wartości NULL.
Pokażmy teraz, jak funkcja count traktuje wartości null. Zobaczmy aktualną zawartość 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 |
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: wartości NULL nie zostały uwzględnione
Co nie jest?
Operator logiczny NOT jest używany 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 NIE używać wartości null?
Będą przypadki, gdy będziemy musieli wykonać obliczenia na zestawie wyników zapytania i zwrócić wartości. Wykonanie jakichkolwiek operacji arytmetycznych na kolumnach, które mają wartość NULL, zwróci wyniki null. Aby uniknąć takich sytuacji, możemy zastosować klauzulę NOT NULL, aby ograniczyć wyniki, na których operują nasze dane.
NIE NULL Wartości
Załóżmy, że chcemy utworzyć tabelę z określonymi polami, do których podczas wstawiania nowych wierszy do tabeli należy zawsze podawać wartości. Tworząc tabelę, na danym polu możemy zastosować klauzulę NOT NULL.
Poniższy przykład tworzy nową tabelę zawierającą dane pracownika. Zawsze należy podać numer pracownika
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Spróbujmy teraz wstawić nowy rekord bez podawania nazwiska 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-
Słowa kluczowe NULL
NULL może być również używane jako słowo kluczowe podczas wykonywania operacji logicznych na wartościach zawierających NULL. Słowo kluczowe „IS/NOT” jest używane w połączeniu ze słowem NULL w takich celach. Podstawowa składnia, gdy null jest używane jako słowo kluczowe, jest następująca
`comlumn_name' IS NULL `comlumn_name' NOT NULL
TUTAJ
- „ 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 ZEREM"to słowo kluczowe, które wykonuje porównanie logiczne. Zwraca wartość true, jeśli podana wartość nie jest równa NULL, i fałsz, jeśli podana wartość ma wartość null.
Przyjrzyjmy się teraz praktycznemu przykładowi, w którym słowo kluczowe NOT NULL zostało użyte do wyeliminowania wszystkich wartości kolumn mających wartości null.
Kontynuując powyższy przykład, załóżmy, że potrzebujemy szczegółów członków, których numer kontaktowy nie jest nullem. Możemy wykonać zapytanie takie jak
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Wykonanie powyższego zapytania daje tylko rekordy, w których numer kontaktowy nie jest pusty.
Załóżmy, że chcemy rekordów członków, w których numer kontaktowy jest nullem. Możemy użyć następującego zapytania
SELECT * FROM `members` WHERE contact_number IS NULL;
Wykonanie powyższego zapytania powoduje wyświetlenie danych członka, którego numer kontaktowy jest NULL
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 |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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 |
Porównywanie wartości null
Logika trzech wartości – wykonywanie operacji logicznych na warunkach zawierających wartość NULL może zwrócić „Nieznane”, „Prawda” lub „Fałsz”.
Na przykład, za pomocą słowa kluczowego „IS NULL”. podczas wykonywania operacji porównania z udziałem NULL może albo wrócić prawdziwy or fałszywy. Użycie innych operatorów porównania powoduje zwrot „Nieznany” (BEZ WARTOŚCI).
Załóżmy, że porównujesz liczbę pięć z liczbą 5
SELECT 5 =5;
Wynikiem zapytania jest 1, co oznacza PRAWDA
5 =5 |
---|
1 |
Wykonajmy tę samą operację z wartością NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Spójrzmy na inny przykład
SELECT 5 > 5;
5 > 5 |
---|
0 |
Wynikiem zapytania jest 0, co oznacza FAŁSZ
Spójrzmy na ten sam przykład, używając wartości NULL
SELECT NULL > NULL;
NULL > NULL |
---|
NULL |
Użyjmy słowa kluczowego IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Wynikiem zapytania jest 0, co oznacza FAŁSZ
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Wynikiem zapytania jest 1, czyli PRAWDA
Podsumowanie
- NULL jest obiektem zastępczym wartości dla opcjonalnych pól tabeli.
- MySQL traktuje wartość NULL inaczej niż inne typy danych. Wartości NULL użyte w warunku dają fałszywą wartość logiczną.
- Operacja logiczna NOT służy do testowania wartości logicznych i zwraca wartość prawda, jeśli wartość logiczna jest fałszywa, lub fałsz, jeśli wartość logiczna jest prawdziwa.
- Klauzula NOT NULL służy do eliminowania wartości NULL ze zbioru wyników
- Wykonywanie operacji arytmetycznych na wartościach NULL zawsze zwraca wynik NULL.
- Operatorów porównania, takich jak [, = itd.] nie można używać do porównywania wartości NULL.