:: DEVELOPER ZONE
Das Konzept des NULL-Wert ist eine häufige Quelle der Verwirrung für
SQL-Anfänger. Diese denken häufig, NULL sei dasselbe wie eine leere
Zeichenkette ''. Das ist nicht der Fall! So sind zum Beispiel
folgende Statements grundverschieden:
mysql> INSERT INTO meine_tabelle (Telefon) VALUES (NULL);
mysql> INSERT INTO meine_tabelle (Telefon) VALUES ("");
Beide Statements fügen einen Wert in die Telefon-Spalte ein, aber
das erste fügt einen NULL-Wert und das zweite eine leere
Zeichenkette ein. Die Bedeutung des ersten ist etwa ``Telefonnummer
unbekannt'' und des zweiten ``Keine Telefonnummer''.
In SQL ist der NULL-Wert im Vergleich mit jedem anderen Wert immer
UNWAHR (false), selbst im Vergleich mit NULL. Ein Ausdruck, der
NULL enthält, erzeugt immer einen NULL-Wert, ausser wenn es
in der Dokumentation der Operatoren und Funktionen, die im Ausdruck
beteiligt sind, anders angegeben ist. Alle Spalten im folgenden Beispiel
geben NULL zurück:
mysql> SELECT NULL,1+NULL,CONCAT('unsichtbar',NULL);
Wenn Sie nach Spaltenwerten suchen, die NULL sind, können Sie nicht
=NULL benutzen. Folgendes Statement gibt keine Zeilen zurück, weil
ausdruck = NULL für jeden beliebigen Ausdruck UNWAHR (false) ist:
mysql> SELECT * FROM meine_tabelle WHERE Telefon = NULL;
Um nach NULL-Werten zu suchen, müssen Sie IS NULL benutzen.
Folgende Beispiele zeigen, wie Sie die NULL-Telefonnummer und die
leere Telefonnummer finden:
mysql> SELECT * FROM meine_tabelle WHERE Telefon IS NULL; mysql> SELECT * FROM meine_tabelle WHERE Telefon = "";
In MySQL können Sie - wie bei vielen anderen SQL-Servern - keine Spalten
indexieren, die NULL-Werte enthalten dürfen. Sie müssen solche
Spalten aus NOT NULL deklarieren. Sie dürfen in eine indexierte
Spalte keine NULL-Werte einfügen.
Wenn Sie Daten mit LOAD DATA INFILE einlesen, werden leere Spalten
mit '' aktualisiert. Wenn Sie einen NULL-Wert in einer Spalte
haben wollen, müssen Sie in der Textdatei \N benutzen. Unter manchen
Umständen kann auch das Literalwort 'NULL' benutzt werden.
See Abschnitt 7.4.9, „LOAD DATA INFILE-Syntax“.
Wenn Sie ORDER BY benutzen, werden NULL-Werte zuerst
angezeigt. Wenn Sie mit DESC in absteigender Reihenfolge sortieren,
werden NULL-Werte zuletzt angezeigt. Wenn Sie GROUP BY
benutzen, werden alle NULL-Werte als gleich betrachtet.
Um die Handhabung von NULL zu erleichtern, können Sie die IS NULL- und IS NOT NULL-Operatoren und die IFNULL()-Funktion
benutzen.
Bei manchen Spaltentypen werden NULL-Werte besonders behandelt. Wenn
Sie NULL in die erste TIMESTAMP-Spalte einer Tabelle
einfügen, werden das aktuelle Datum und die aktuelle Zeit eingefügt. Wenn
Sie NULL in eine AUTO_INCREMENT-Spalte einfügen, wird die
nächste Zahl in der Zahlenfolge eingefügt.
© 1995-2005 MySQL AB. All rights reserved.
