MySQL IS NULL & IS NOT NULL mit Beispielen
โก Intelligente Zusammenfassung
MySQL Die Vergleichskriterien IS NULL und IS NOT NULL prรผfen, ob eine Spalte einen fehlenden Wert enthรคlt. NULL kennzeichnet fehlende Daten, verhรคlt sich anders als Null oder eine leere Zeichenkette und erfordert spezielle Operatoren fรผr eine zuverlรคssige Filterung.

In SQL ist NULL sowohl ein Wert als auch ein Schlรผsselwort. Schauen wir uns zunรคchst den Wert NULL an.
Was ist NULL in MySQL?
In einfachen Worten, NULL ist ein Platzhalter fรผr Daten, die nicht existieren.Bei Einfรผgeoperationen in Tabellen kann es vorkommen, dass einige Feldwerte nicht verfรผgbar sind.
Um den Anforderungen echter relationaler Datenbankverwaltungssysteme gerecht zu werden, MySQL Verwendet NULL als Platzhalter fรผr die nicht รผbermittelten Werte. Der folgende Screenshot zeigt, wie NULL-Werte in einer Datenbanktabelle aussehen.
Beachten Sie, dass die leeren Zellen mit NULL gekennzeichnet sind, nicht mit leerem Text oder Null. Bevor wir fortfahren, sehen wir uns einige Grundlagen zu NULL an.
- NULL ist kein Datentyp โ Dies bedeutet, dass es nicht als โintโ, โdateโ oder ein anderer definierter Datentyp erkannt wird.
- Rechenoperationen Beteiligung NULL immer NULL zurรผckgebenZum Beispiel: 69 + NULL = NULL.
- Most Aggregatfunktionen Zeilen mit NULL-Werten ignorierenDie einzige Ausnahme bildet COUNT(*), das jede Zeile unabhรคngig von NULL zรคhlt.
Wie Aggregatfunktionen mit NULL-Werten umgehen
Diese Regel รคndert die Antworten, die Berichtsabfragen liefern. Lassen Sie uns dies beweisen. Beginnen wir mit dem aktuellen Inhalt der Mitgliedertabelle.
SELECT * FROM `members`;
Die Ausfรผhrung des obigen Skripts fรผhrt zu den folgenden Ergebnissen.
| 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 |
Die hervorgehobene Spalte โKontaktnummerโ enthรคlt insgesamt neun Zeilen, von denen zwei NULL sind. Wir zรคhlen nun alle Mitglieder, die ihre Kontaktnummer aktualisiert haben.
SELECT COUNT(contact_number) FROM `members`;
Die Ausfรผhrung der obigen Abfrage liefert die folgenden Ergebnisse.
| COUNT(contact_number) |
|---|
| 7 |
Hinweis: Die Antwort ist 7 und nicht 9, da die beiden NULL-Werte nicht berรผcksichtigt wurden. Die Ausfรผhrung von COUNT(*) auf derselben Tabelle wรผrde 9 zurรผckgeben, da COUNT(*) Zeilen und nicht Werte zรคhlt.
KEINE NULL-Werte
Ein sichererer Ansatz besteht darin, zu verhindern, dass NULL-Werte in Pflichtfelder gelangen. Genau dafรผr ist die NOT NULL-Bedingung zustรคndig.
Was ist das NICHT? Operator?
Der logische Operator NOT dient zum Testen boolescher Bedingungen und gibt โwahrโ zurรผck, wenn die Bedingung โfalschโ ist. Der Operator NOT gibt โfalschโ zurรผck, wenn die zu testende Bedingung โwahrโ ist.
| Anforderungen | NICHT Operator Ergebnis |
|---|---|
| richtig | falsch |
| falsch | richtig |
Warum sollte man NOT NULL verwenden?
Es gibt Fรคlle, in denen wir Berechnungen mit einem Abfrageergebnis durchfรผhren und die Werte zurรผckgeben mรผssen. Jede arithmetische Operation auf einer Spalte, die einen NULL-Wert enthรคlt, liefert ein NULL-Ergebnis. Um solche Situationen zu vermeiden, kรถnnen wir die NOT NULL-Klausel verwenden, um die Ergebnisse, mit denen unsere Daten verarbeitet werden, einzuschrรคnken.
Erstellen einer Tabelle mit einer NOT NULL-Spalte
Angenommen, wir mรถchten eine Tabelle mit bestimmten Feldern erstellen, die beim Einfรผgen neuer Zeilen immer mit Werten gefรผllt werden sollen. Wir kรถnnen beim Erstellen der Tabelle die NOT NULL-Klausel fรผr ein bestimmtes Feld verwenden.
Das unten gezeigte Beispiel erstellt eine neue Tabelle, die Mitarbeiterdaten enthรคlt. Die Mitarbeiternummer muss immer angegeben werden.
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Versuchen wir nun, einen neuen Datensatz einzufรผgen, ohne die Mitarbeiternummer anzugeben, und schauen wir, was passiert.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Ausfรผhren des obigen Skripts in MySQL Werkbank fรผhrt zu folgendem Fehler, da die Pflichtspalte ausgelassen wurde.
Schlรผsselwรถrter IS NULL und IS NOT NULL
Die Einschrรคnkung verhindert die Eingabe neuer NULL-Werte. Um mit bereits vorhandenen NULL-Werten zu arbeiten, wird NULL als Schlรผsselwort verwendet. Die Syntax lautet wie folgt.
column_name IS NULL column_name IS NOT NULL
HIER KLICKEN
- "IST NULL" ist das Schlรผsselwort, das den booleschen Vergleich durchfรผhrt. Es gibt true zurรผck, wenn der angegebene Wert NULL ist, und false, wenn der angegebene Wert nicht NULL ist.
- โIST NICHT NULLโ ist das Schlรผsselwort, das den umgekehrten Vergleich durchfรผhrt. Es gibt true zurรผck, wenn der angegebene Wert nicht NULL ist, und false, wenn der angegebene Wert NULL ist.
Betrachten wir ein praktisches Beispiel, das das Schlรผsselwort IS NOT NULL verwendet, um alle Zeilen zu eliminieren, die NULL-Werte in einer Spalte enthalten.
Angenommen, wir benรถtigen anhand der obigen Mitgliedertabelle die Details der Mitglieder, deren Telefonnummer nicht NULL ist. Wir kรถnnen eine Abfrage wie die folgende ausfรผhren.
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Die Ausfรผhrung der obigen Abfrage liefert nur die sieben Datensรคtze zurรผck, in denen die Kontaktnummer vorhanden ist, was dem COUNT-Ergebnis aus dem vorherigen Abschnitt entspricht.
Nehmen wir nun an, wir mรถchten das Gegenteil: die Mitgliedsdatensรคtze, bei denen die Telefonnummer fehlt. Wir kรถnnen die folgende Abfrage verwenden.
SELECT * FROM `members` WHERE contact_number IS NULL;
Die Ausfรผhrung der obigen Abfrage liefert die beiden Mitgliedsdatensรคtze, deren Kontaktnummer NULL ist.
| 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 |
Warnung: Eine Bedingung wie WHERE contact_number = NULL liefert ein leeres Ergebnis, obwohl NULL-Werte vorhanden sind. Der Gleichheitsoperator kann niemals auf NULL zugreifen, daher ist IS NULL der einzig korrekte Test.
Vergleich von NULL-Werten mit dreiwertiger Logik
Dreiwertige Logik โ Die Durchfรผhrung boolescher Operationen auf Bedingungen, die NULL beinhalten, kann Folgendes zurรผckgeben โUnbekanntโ, โWahrโ oder โFalschโ.
Verwendung des Schlรผsselworts โIS NULLโ bei Vergleichsoperationen mit NULL Rรผckgabe was immer dies auch sein sollte. or falschDie Verwendung der anderen Vergleichsoperatoren gibt Folgendes zurรผck โUnbekanntโ (NULL)Die folgende Tabelle vergleicht jeden Ausdruck nebeneinander.
| Ausdruck | Lรถsung | Bedeutung |
|---|---|---|
| SELECT 5 = 5; | 1 | TRUE |
| SELECT NULL = NULL; | NULL | UNKNOWN |
| SELECT 5 > 5; | 0 | FALSCH |
| SELECT NULL > NULL; | NULL | UNKNOWN |
| SELECT 5 IS NULL; | 0 | FALSCH |
| SELECT NULL IS NULL; | 1 | TRUE |
Vergleiche die Zahl fรผnf mit sich selbst und wiederhole dann den Vorgang mit NULL.
SELECT 5 =5; SELECT NULL = NULL;
| 5 =5 | NULL = NULL |
|---|---|
| 1 | NULL |
Das erste Ergebnis ist 1 (WAHR). Das zweite ist NULL, weil MySQL Man kann nicht sagen, dass ein unbekannter Wert gleich einem anderen unbekannten Wert ist. Verwenden Sie nun das Schlรผsselwort IS NULL fรผr dieselben Werte.
SELECT 5 IS NULL; SELECT NULL IS NULL;
| 5 IS NULL | NULL IS NULL |
|---|---|
| 0 | 1 |
Diesmal sind die Antworten eindeutig: 0 (FALSCH) und 1 (WAHR). Nur die Schlรผsselwรถrter IS NULL und IS NOT NULL liefern ein eindeutiges Ergebnis, wenn NULL vorkommt.


