Suche…
Einführung
NULL
in SQL sowie Programmieren im Allgemeinen bedeutet wörtlich "nichts". In SQL ist es einfacher zu verstehen als "das Fehlen jeglicher Werte".
Es ist wichtig, es von scheinbar leeren Werten zu unterscheiden, wie z. B. der leere Zeichenfolge ''
oder der Zahl 0
, von denen keiner tatsächlich NULL
.
Es ist auch wichtig, darauf zu achten, dass NULL
in Anführungszeichen eingeschlossen wird, wie 'NULL'
ist in Spalten zulässig, die Text akzeptieren, aber nicht NULL
und Fehler und falsche Datensätze verursachen kann.
Filtern nach NULL in Abfragen
Die Syntax für das Filtern nach NULL
(dh das Fehlen eines Werts) in WHERE
Blöcken unterscheidet sich geringfügig von der Filterung nach bestimmten Werten.
SELECT * FROM Employees WHERE ManagerId IS NULL ;
SELECT * FROM Employees WHERE ManagerId IS NOT NULL ;
Beachten Sie, dass die Verwendung von Gleichheitsoperatoren = NULL
oder <> NULL
(oder != NULL
) immer den Wahrheitswert von UNKNOWN
liefert, da NULL
nicht gleich irgendetwas ist, auch nicht für sich selbst. UNKNOWN
wird von WHERE
.
WHERE
filtert alle Zeilen, bei denen die Bedingung FALSE
oder UKNOWN
und behält nur die Zeilen bei, bei denen die Bedingung TRUE
.
Nullable-Spalten in Tabellen
Beim Erstellen von Tabellen ist es möglich, eine Spalte als null- oder nicht-nullfähig zu deklarieren.
CREATE TABLE MyTable
(
MyCol1 INT NOT NULL, -- non-nullable
MyCol2 INT NULL -- nullable
) ;
Standardmäßig ist jede Spalte (außer der in der Primärschlüsseleinschränkung) nullwertfähig, sofern nicht ausdrücklich die NOT NULL
Einschränkung festgelegt wird.
Der Versuch, einer nicht-nullfähigen Spalte NULL
zuzuweisen, führt zu einem Fehler.
INSERT INTO MyTable (MyCol1, MyCol2) VALUES (1, NULL) ; -- works fine
INSERT INTO MyTable (MyCol1, MyCol2) VALUES (NULL, 2) ;
-- cannot insert
-- the value NULL into column 'MyCol1', table 'MyTable';
-- column does not allow nulls. INSERT fails.
Felder auf NULL aktualisieren
Das Festlegen eines Felds auf NULL
funktioniert genauso wie bei jedem anderen Wert:
UPDATE Employees
SET ManagerId = NULL
WHERE Id = 4
Zeilen mit NULL-Feldern einfügen
Einfügen eines Mitarbeiters ohne Telefonnummer und ohne Manager in die Beispieltabelle Employees :
INSERT INTO Employees
(Id, FName, LName, PhoneNumber, ManagerId, DepartmentId, Salary, HireDate)
VALUES
(5, 'Jane', 'Doe', NULL, NULL, 2, 800, '2016-07-22') ;