Obwohl der Datentyp für alle Attribute einschränkt, welche Werte es annehmen kann, gibt es einen "Attributwert", den man bei allen Attributen sehen könnte: NULL.
NULL bedeutet, dass kein Wert vorhanden ist.
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).
Ärgerlich ist beides.
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