MySQL IS NULL & IS NOT NULL Tutorial mit BEISPIELEN
In SQL ist Null sowohl ein Wert als auch ein Schlüsselwort. Schauen wir uns zunächst den NULL-Wert an –
Null als Wert
Einfach ausgedrückt ist NULL lediglich ein Platzhalter für Daten, die nicht vorhanden sind. Beim Ausführen von Einfügevorgängen 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 Screenshot unten zeigt, wie NULL-Werte in der Datenbank aussehen.
Schauen wir uns nun einige Grundlagen für NULL an, bevor wir weiter auf die Diskussion eingehen.
- 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ückgeben zum Beispiel 69 + NULL = NULL.
- Alle Aggregatfunktionen wirken sich nur auf Zeilen aus, die keine NULL-Werte haben.
Lassen Sie uns nun demonstrieren, wie die Zählfunktion Nullwerte behandelt. Sehen wir uns den aktuellen Inhalt der Mitgliedertabelle an.
SELECT * FROM `members`;
Die Ausführung des obigen Skripts führt zu 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 |
Zählen wir 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: Werte, die NULL sind, wurden nicht berücksichtigt
Was ist nicht?
Der logische Operator NOT wird zum Testen von Booleschen Bedingungen verwendet und gibt true zurück, wenn die Bedingung falsch ist. Der Operator NOT gibt false zurück, wenn die getestete Bedingung wahr ist.
Anforderungen | NICHT Operator Ergebnis |
---|---|
Wahre | falsch |
falsch | Wahre |
Warum NOT null verwenden?
Es wird Fälle geben, in denen wir Berechnungen an einem Abfrageergebnissatz durchführen und die Werte zurückgeben müssen. Das Ausführen von Rechenoperationen an Spalten mit dem Wert NULL gibt Nullergebnisse zurück. Um solche Situationen zu vermeiden, können wir die Klausel NOT NULL verwenden, um die Ergebnisse einzuschränken, mit denen unsere Daten arbeiten.
KEINE NULL-Werte
Nehmen wir an, wir möchten eine Tabelle mit bestimmten Feldern erstellen, die beim Einfügen neuer Zeilen in eine Tabelle immer mit Werten versorgt werden sollen. Beim Erstellen der Tabelle können wir die NOT NULL-Klausel für ein bestimmtes Feld verwenden.
Das unten gezeigte Beispiel erstellt eine neue Tabelle, die die Daten des Mitarbeiters enthält. Die Mitarbeiternummer sollte immer angegeben werden
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Versuchen wir nun, einen neuen Datensatz ohne Angabe des Mitarbeiternamens einzufügen und sehen, was passiert.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Ausführen des obigen Skripts in MySQL Workbench gibt den folgenden Fehler aus:
NULL-Schlüsselwörter
NULL kann auch als Schlüsselwort verwendet werden, wenn Boolesche Operationen mit Werten durchgeführt werden, die NULL enthalten. Das Schlüsselwort „IS/NOT“ wird für solche Zwecke in Verbindung mit dem Wort NULL verwendet. Die grundlegende Syntax, wenn null als Schlüsselwort verwendet wird, lautet wie folgt
`comlumn_name' IS NULL `comlumn_name' NOT NULL
HIER
- "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.
- "NICHT NULL"ist das Schlüsselwort, das den booleschen Vergleich durchführt. Es gibt true zurück, wenn der angegebene Wert nicht NULL ist, und false, wenn der angegebene Wert null ist.
Schauen wir uns nun ein praktisches Beispiel an, das das Schlüsselwort NOT NULL verwendet, um alle Spaltenwerte zu entfernen, die Nullwerte haben.
Um mit dem obigen Beispiel fortzufahren, nehmen wir an, wir benötigen Details zu Mitgliedern, deren Kontaktnummer nicht null ist. Wir können eine Abfrage wie folgt ausführen:
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Das Ausführen der obigen Abfrage liefert nur Datensätze, bei denen die Kontaktnummer nicht null ist.
Angenommen, wir möchten Mitgliedsdatensätze, bei denen die Kontaktnummer null ist. Wir können die folgende Abfrage verwenden
SELECT * FROM `members` WHERE contact_number IS NULL;
Die Ausführung der obigen Abfrage gibt Mitgliedsdetails aus, deren Kontaktnummer NULL ist
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 |
Nullwerte vergleichen
Dreiwertige Logik – Das Ausführen von Booleschen Operationen auf Bedingungen, die NULL beinhalten, kann entweder „Unbekannt“, „Wahr“ oder „Falsch“.
Zum Beispiel, mit dem Schlüsselwort „IS NULL“. bei Vergleichsoperationen mit NULL kann entweder zurückkehren was immer dies auch sein sollte. or falschDie Verwendung anderer Vergleichsoperatoren gibt „Unbekannt“ (NULL).
Angenommen, Sie vergleichen Nummer fünf mit 5
SELECT 5 =5;
Das Abfrageergebnis ist 1, was WAHR bedeutet
5 =5 |
---|
1 |
Machen wir die gleiche Operation mit NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Schauen wir uns ein anderes Beispiel an
SELECT 5 > 5;
5 > 5 |
---|
0 |
Das Abfrageergebnis ist 0, was FALSCH bedeutet
Schauen wir uns dasselbe Beispiel mit NULL an
SELECT NULL > NULL;
NULL > NULL |
---|
NULL |
Verwenden wir das Schlüsselwort IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Das Abfrageergebnis ist 0, was FALSCH ist
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Das Abfrageergebnis ist 1, was WAHR ist
Zusammenfassung
- NULL ist ein Wertplatzhalter für optionale Tabellenfelder.
- MySQL behandelt den NULL-Wert anders als andere Datentypen. Die NULL-Werte werden bei Verwendung in einer Bedingung als falscher boolescher Wert ausgewertet.
- Die logische Operation „NICHT“ wird zum Testen auf Boolesche Werte verwendet und wird als „wahr“ ausgewertet, wenn der Boolesche Wert „falsch“ ist, bzw. als „falsch“, wenn der Boolesche Wert „wahr“ ist.
- Die NOT NULL-Klausel wird verwendet, um NULL-Werte aus einer Ergebnismenge zu entfernen
- Das Ausführen von arithmetischen Operationen mit NULL-Werten gibt immer NULL-Ergebnisse zurück.
- Die Vergleichsoperatoren wie [, = usw.] können nicht zum Vergleichen von NULL-Werten verwendet werden.