Es ist Zeit, etwas genauer über NULL zu sprechen. Und das ist alles andere als ein leeres Gespräch, auch wenn unser Held... irgendwie gar nicht aussieht. Wenn eine Tabelle ein Haus wäre, dann wäre NULL sein Geist – still, geheimnisvoll und unberechenbar. Er ist irgendwie da, aber antwortet nicht auf Fragen, macht bei Berechnungen nicht mit und meidet Vergleiche. Das ist nicht einfach nur "leer" – das ist "nichts ist bekannt".
In der SQL-Welt ist NULL weder Null, noch ein leerer String und auch nicht "keine Daten" im üblichen Sinne. Es ist ein spezielles Zeichen für Unbekanntes, mit dem man vorsichtig umgehen muss. Heute klären wir, warum NULL nicht einfach nur ein seltsamer Gast, sondern ein wichtiger Teil jeder Datenbank ist. Denn es bedeutet buchstäblich "Wert ist unbekannt oder nicht definiert".
Worin unterscheidet sich NULL von einem leeren String oder der Zahl 0?
Viele Anfänger verwechseln NULL mit anderen Werten wie dem leeren String '' oder der Zahl 0. Lass uns die wichtigsten Unterschiede anschauen:
| Begriff | Wert |
|---|---|
NULL |
Völliges Fehlen eines Wertes. Das ist nicht einfach eine leere Kiste, das ist das Fehlen der Kiste |
| Leerer String | Das ist ein String ohne Zeichen. Zum Beispiel: '' |
Zahl 0 |
Ein Wert, der eine konkrete Zahl, nämlich Null, darstellt |
Ein Beispiel aus dem echten Leben: Stell dir vor, du hast eine Tabelle mit Mitarbeitern und speicherst deren Gehälter. Wenn das Gehalt als 0 angegeben ist, heißt das, die Person hat nichts bekommen. Wenn das Gehalt aber NULL ist, weißt du einfach nicht, wie viel gezahlt wird (oder es ist noch nicht festgelegt).
Wie interpretiert man NULL
Jetzt, wo wir schon ein bisschen wissen, was NULL ist, schauen wir uns an, wie SQL damit umgeht. Das Wichtigste zu NULL kann man in einem Satz sagen: NULL ist nichts gleich und nichts ungleich, nicht mal sich selbst.
SELECT NULL = NULL; -- Ergebnis: FALSE
Überraschung! Warum ist das so? Weil NULL eben Unbekanntes ist. Wenn du zwei unbekannte Werte hast, kannst du nicht sagen, dass sie gleich sind – aber auch nicht, dass sie ungleich sind.
Lass uns ein paar Beispiele anschauen:
Beispiele für Operationen mit NULL
SELECT NULL + 1; -- Ergebnis: NULL
SELECT NULL * 100; -- Ergebnis: NULL
SELECT NULL = 0; -- Ergebnis: FALSE
SELECT NULL <> 0; -- Ergebnis: FALSE
NULL gibt bei Addition, Multiplikation oder jeder anderen Berechnung immer NULL zurück. Hier verhält sich NULL nicht wie 0 in der Mathematik. Es ist, als würdest du etwas ins Nichts werfen und das Nichts verschlingt alles.
Praktische Beispiele
Stellen wir uns die Tabelle students mit Infos über Studierende vor:
| id | name | birth_date | grade |
|---|---|---|---|
| 1 | Alice | 2000-01-01 | 85 |
| 2 | Bob | NULL | 90 |
| 3 | Charlie | 1999-05-22 | NULL |
| 4 | Diana | NULL | NULL |
Beispiel 1: Einfluss von NULL in Bedingungen
Wenn wir versuchen, alle Studierenden ohne Geburtsdatum zu finden, indem wir die Bedingung WHERE birth_date = NULL setzen:
SELECT *
FROM students
WHERE birth_date = NULL;
Wir bekommen keine Ergebnisse, weil NULL = NULL FALSE zurückgibt. Um auf NULL zu prüfen, muss man IS NULL verwenden:
SELECT * FROM students WHERE birth_date IS NULL;
Ergebnis:
| id | name | birth_date | grade |
|---|---|---|---|
| 2 | Bob | NULL | 90 |
| 4 | Diana | NULL | NULL |
Beispiel 2: Einfluss von NULL bei Berechnungen
| id | name | birth_date | grade |
|---|---|---|---|
| 1 | Alice | 2000-01-01 | 85 |
| 2 | Bob | NULL | 90 |
| 3 | Charlie | 1999-05-22 | NULL |
| 4 | Diana | NULL | NULL |
Wenn wir versuchen, den Durchschnitt aller Noten zu berechnen:
SELECT AVG(grade) FROM students;
Das Ergebnis ist: 87.5. Warum? Weil NULL bei Aggregatfunktionen wie AVG, SUM, MIN, MAX ignoriert wird. Aber Vorsicht! Wenn du Zeilen mit NULL berücksichtigen willst, brauchst du zusätzliche Tricks.
Wie man mit NULL noch genauer arbeitet, schauen wir uns in den nächsten Vorlesungen an.
GO TO FULL VERSION