In SQL ist Null sowohl ein Wert als auch ein Schlüsselwort. Schauen wir uns zuerst den NULL-Wert an -
Null als Wert
In einfachen Worten ist NULL einfach ein Platzhalter für Daten, die nicht existieren. Wenn Sie Einfügevorgänge für Tabellen ausführen, sind einige Feldwerte manchmal nicht verfügbar.
Um die Anforderungen echter relationaler Datenbankverwaltungssysteme zu erfüllen, verwendet MySQL NULL als Platzhalter für die nicht übermittelten Werte. Der folgende Screenshot 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 er nicht als "int", "date" oder ein anderer definierter Datentyp erkannt wird.
- Arithmetische Operationen mit NULL geben immer NULL zurück, z. B. 69 + NULL = NULL.
- Alle Aggregatfunktionen wirken sich nur auf Zeilen aus, die keine NULL-Werte haben .
Lassen Sie uns nun zeigen, wie die Zählfunktion Nullwerte behandelt. Sehen wir uns den aktuellen Inhalt der Mitgliedertabelle an.
SELECT * FROM `members`;
Wenn Sie das obige Skript ausführen, erhalten Sie die folgenden Ergebnisse
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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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`;
Wenn Sie die obige Abfrage ausführen, erhalten Sie 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 auf boolesche Bedingungen verwendet und gibt true zurück, wenn die Bedingung false ist. Der NOT-Operator gibt false zurück, wenn die getestete Bedingung wahr ist
Bedingung |
NICHT Bedienerergebnis |
Wahr |
Falsch |
Falsch |
Wahr |
Warum NICHT null verwenden?
Es wird Fälle geben, in denen wir Berechnungen für eine Abfrageergebnismenge durchführen und die Werte zurückgeben müssen. Durch Ausführen von arithmetischen Operationen für Spalten mit dem Wert NULL werden Nullergebnisse zurückgegeben. Um solche Situationen zu vermeiden, können wir die NOT NULL-Klausel verwenden, um die Ergebnisse zu begrenzen, mit denen unsere Daten arbeiten.
NICHT NULL Werte
Angenommen, wir möchten eine Tabelle mit bestimmten Feldern erstellen, die beim Einfügen neuer Zeilen in eine Tabelle immer mit Werten versehen werden sollten. Wir können die NOT NULL-Klausel für ein bestimmtes Feld verwenden, wenn wir die Tabelle erstellen.
Im folgenden Beispiel wird eine neue Tabelle erstellt, die Mitarbeiterdaten 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 einzufügen, ohne den Namen des Mitarbeiters anzugeben, und sehen, was passiert.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Das Ausführen des obigen Skripts in der MySQL-Workbench führt zu folgendem Fehler:
NULL Schlüsselwörter
NULL kann auch als Schlüsselwort verwendet werden, wenn boolesche Operationen für Werte ausgefü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 bei Verwendung von null als Schlüsselwort lautet wie folgt
`comlumn_name' IS NULL`comlumn_name' NOT NULL
HIER
- "IS 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.
- "NOT 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, bei dem das Schlüsselwort NOT NULL verwendet wird, um alle Spaltenwerte mit Nullwerten zu entfernen.
Angenommen, wir benötigen Details zu Mitgliedern, deren Kontaktnummer nicht null ist. Wir können eine Abfrage wie 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 folgende Abfrage verwenden
SELECT * FROM `members` WHERE contact_number IS NULL;
Wenn Sie die obige Abfrage ausführen, erhalten Sie Mitgliederdetails, 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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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 |
Vergleichen des Nullwerts s
Drei-Werte-Logik - Das Ausführen von Booleschen Operationen unter Bedingungen, die NULL betreffen, kann entweder "Unbekannt", "Wahr" oder "Falsch" zurückgeben.
Beispielsweise kann die Verwendung des Schlüsselworts "IS NULL" bei Vergleichsoperationen mit NULL entweder true oder false zurückgeben . Wenn Sie andere Vergleichsoperatoren verwenden, wird "Unbekannt" (NULL) zurückgegeben.
Angenommen, Sie vergleichen Nummer fünf mit 5
SELECT 5 =5;
Das Abfrageergebnis ist 1, was WAHR bedeutet
5 =5 |
---|
1 |
Lassen Sie uns den gleichen Vorgang mit NULL ausführen
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Schauen wir uns ein anderes Beispiel an
SELECT 5 > 5;
5> 5 |
---|
0 |
Das Abfrageergebnis ist 0, was FALSE 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 FALSE 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 NOT wird zum Testen auf Boolesche Werte verwendet und als wahr ausgewertet, wenn der Boolesche Wert falsch ist, und 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 für NULL-Werte gibt immer NULL-Ergebnisse zurück.
- Die Vergleichsoperatoren wie [, = usw.] können nicht zum Vergleichen von NULL-Werten verwendet werden.