MySQL - SQL - Grundlagen- NULL
1. Der Wert NULL
... sorgt bei Anfängern immer wieder für Irritationen. Darum werde ich jetzt mal das Licht der Erkenntnis über euch zum Leuchten bringen.
Also, was ist NULL
schon mal nicht. Es ist nicht die Zahl 0
und es ist auch keine leere Zeichenkette à la
''
.
Und was ist nun NULL
In guter Tradition will ich das mal an einem ziemlich blödsinnigen Beispiel erklären. Wir habe in einer Adresstabelle die
Spalte wohnort
, in der wir die Straße, die PLZ und den Wohnort abspeichern. Gut das sollte man nicht machen, aber die
Gründe kennt ihr ja schon.
INSERT INTO adresse VALUES ('Peter Kropff',NULL);
Diese Anweisung bedeutet, dass der Wohnort von diesem zwielichtigen Typ unbekannt ist. Ein NULL
ist also nichts
anderes als das Eingeständnis eigener Unwissenheit. Ganz anders verhält es sich dagegen bei diesem SQL-Statement.
INSERT INTO adresse VALUES ('Peter Kropff', '');
In diesem Fall bedeutet der Leerstring ''
, dass der arme Kerl keinen Wohnort hat, also obdachlos ist. Sollte das tatsächlich mal passieren,
so findet ihr mich unter den Rheinbrücken in Köln.
2. Und wozu das Buhei?
Will man nun herausfinden, bei welchen Personen wir den Wohnort nicht kennen, so prüfen wir auf NULL
:
SELECT * FROM adresse WHERE wohnort IS NULL;
Wollen wir dagegen alle Obdachlosen suchen, so geschieht dies mit folgender Anweisung:
SELECT * FROM adresse WHERE wohnort = '';
Die Negation der obigen Abfragen sieht dann so aus:
SELECT * FROM adresse WHERE wohnort != '';
SELECT * FROM adresse WHERE wohnort IS NOT NULL;
3. default
Wenn man eine Tabelle erstellt (dazu später mehr), so wird bei allen Spalten als Standardwert NULL
vorgegeben. Will man aber
den nicht zulassen, so muss man das zusätzlich angeben:
NOT NULL default ''
NOT NULL default 0
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt