Rouven: mysql not null oder null

Beitrag lesen

Hello,

Na ja es gibt da schon einen Unterschied. wenn ich frage nach
select * from tbl where xy=''; klappt das nur, solange das Feld ein
"NOT NULL" Feld ist.

ja - deswegen unterscheidet beispielsweise Microsoft Access auch zwischen Value required (NULL/NOT NULL) und allow zero length ('').
Zunächst mal: Es bleibt im Prinzip dir überlassen, wie du für dich einen nicht vorhandenen Eintrag kennzeichnen möchtest. Nach meinem Verständnis der relationalen Lehre ist das ganze etwa so gedacht:
Nehmen wir mal an, du hast eine Kundendatenbank mit einer Spalte Telefonnummer. Nun gibt es verschiedene Zustände:

  1. du weißt nichts über die Telefonnummer
  2. du weißt, dass der Kunde keine Telefonnummer hat
  3. du weißt, welche Telefonnummer der Kunde hat.
    -> wir erkennen eine Art 3-wertiger Logik. Diese wird mit Hilfe von NULL/''/{wert} abgebildet.
    Beachte weiterhin, dass NULL ein reserviertes Wort der Datenbank ist. PHPMyAdmin zeigt dir als Inhalt zwar NULL an, andere Datenbanksysteme schreiben u.U. einfach gar nichts hin. Auf gar keinen Fall steht in dem Feld 'NULL' drin, das ist etwas völlig anderes als NULL. Ersteres ist eine Zeichenfolge von 4 Zeichen N-U-L-L, letzteres ist einfach nichts.
    Wie bekommst du einen NULL-Wert in die Tabelle? Wie Ilja schon sagte: Lasse die Spalte im INSERT-Statement weg, oder schreibe als Wert explizit NULL hin.

MfG
Rouven

--
-------------------
Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"