NULL bedeutet, dass kein Wert für ein Attribut vorhanden ist. NULL ist unabhängig vom Datentyp des Attributs.
Man darf NULL nicht mit 0 oder einem leeren Text verwechseln!
Damit man sich das gut merken kann, kursieren im Internet sehr viele Variationen dieses Bildes:
NULL vs 0 mit Klorollen
Das Vorhandensein einer leeren Klorolle entspricht dem Wert 0 (die Rolle hat 0 Blätter). Das Fehlen der Klorolle entspricht NULL (nicht nur keine Blätter, einfach nichts).
Auf der Toilette ist beides ärgerlich. In der Datenbank kann aber beides möglich und sogar gewünscht sein:
Speichert man eine Temperatur, so ist 00 Grad durchaus ein sinnvoller Wert.
Gibt ein Kunde manche Daten von sich nicht preis, so möchte man in der Datenbank auch einfach die Information bekommen, dass für dieses Attribut kein Wert vorhanden ist. Die Datenbank legt in diesem Fall ganz von selbst den Attributwert NULL fest.

NULL und SQL

Bei Datenbankabfragen mit SQL kann man sich NULL-Werte zunutze machen.
Nach NULL-Werten kann man mit SQL gezielt suchen:
SELECT *
FROM Klopapierhalter
WHERE Blattanzahl IS NULL;
Oder sie gezielt vermeiden:
SELECT *
FROM Klopapierhalter
WHERE NOT Blattanzahl IS NULL;
Möchte man, dass ein Attribut niemals keinen Wert hat, also niemals NULL ist, so ergänzt man in SQL bei der Definition der Relation in dieser Spalte NOT NULL:
CREATE TABLE Klopapierhalter(
  HalterNr INT,
  Blattanzahl INT NOT NULL,
  PRIMARY KEY(HalterNr)
);
Nie wieder kein Klopapier!
Kommentieren Kommentare