0Pricing
SQL Academy · Lektion

Was NULL wirklich bedeutet

Unbekannt, nicht null und nicht leer

Was NULL wirklich bedeutet ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

NULL kennenlernen

NULL ist die SQL-Angabe für „Ich weiß es nicht“. Es ist weder null noch eine leere Zeichenkette noch false — es steht für das Fehlen eines Werts.

Wenn für eine Spalte kein Wert bekannt ist, speichert die Datenbank dort NULL. Zu verstehen, wie NULL funktioniert, ist einer der wichtigsten Schritte beim Schreiben korrekter Abfragen.

-- A customers table where some phone numbers are unknown
SELECT id, name, phone
FROM customers;

-- id | name    | phone
-- ---+---------+------------
--  1 | Alice   | 555-0101
--  2 | Bob     | NULL        <- phone unknown
--  3 | Carol   | NULL

NULL ist nicht null

Ein häufiger Fehler besteht darin, NULL wie die Zahl 0 zu behandeln. Beides ist völlig verschieden.

  • 0 ist ein bekannter Wert: null.
  • NULL bedeutet, dass der Wert fehlt oder unbekannt ist.

Wenn ein Kontostand 0 ist, hat der Kunde kein Geld. Bei NULL ist der Kontostand einfach noch nicht bekannt.

SELECT id, balance
FROM accounts;

-- id | balance
-- ---+--------
--  1 | 0        <- known: empty wallet
--  2 | NULL     <- unknown: not recorded yet

NULL ist keine leere Zeichenkette

Bei Textspalten unterscheiden sich NULL und die leere Zeichenkette '' ebenfalls.

  • '' ist eine Zeichenkette der Länge null — ein bekannter, vorhandener Wert.
  • NULL bedeutet, dass überhaupt keine Zeichenkette angegeben wurde.

Sie können absichtlich eine leere Notiz speichern oder die Notiz vollständig weglassen. SQL unterscheidet diese beiden Fälle.

SELECT id, note, length(note) AS note_len
FROM tickets;

-- id | note | note_len
-- ---+------+----------
--  1 | ''   |        0   <- empty but present
--  2 | NULL |     NULL   <- absent; length is also unknown

Dreiwertige Logik

Die normale Logik kennt zwei Ergebnisse: true und false. SQL fügt ein drittes hinzu: unbekannt.

Jeder Vergleich, an dem NULL beteiligt ist, ergibt unknown, weil Sie keinen Wert vergleichen können, den Sie nicht haben. Dies wird als dreiwertige Logik bezeichnet.

-- Each comparison with NULL returns UNKNOWN, not true/false
SELECT
  NULL = 5      AS eq,      -- unknown
  NULL <> 5     AS neq,     -- unknown
  NULL = NULL   AS self_eq, -- unknown (!)
  NULL > 0      AS gt;      -- unknown

NULL = NULL ist nicht true

Die überraschendste Regel lautet: NULL = NULL ist nicht true. Der Ausdruck ergibt unknown.

Warum? Wenn beide Werte unbekannt sind, können Sie nicht sagen, dass sie gleich sind — sie könnten beliebige Werte haben. Um zu prüfen, ob etwas NULL ist, müssen Sie statt = den Operator IS NULL verwenden.

-- Wrong: never returns rows, because NULL = NULL is unknown
SELECT * FROM customers WHERE phone = NULL;

-- Right: use IS NULL
SELECT * FROM customers WHERE phone IS NULL;

WHERE behält nur TRUE-Zeilen

Eine WHERE-Klausel behält eine Zeile nur dann, wenn ihre Bedingung wahr ist. Zeilen, bei denen die Bedingung false oder unknown ergibt, werden verworfen.

Deshalb entfernt das Filtern einer NULL-Spalte mit = stillschweigend Zeilen, die Sie möglicherweise erwarten würden.

-- Bob and Carol have NULL phones, so phone = '555-0101'
-- is UNKNOWN for them and they are excluded.
SELECT name
FROM customers
WHERE phone = '555-0101';

-- Returns only Alice

NULL setzt sich in arithmetischen Ausdrücken fort

NULL ist in Ausdrücken ansteckend. Fast jede arithmetische Operation oder Zeichenkettenoperation mit NULL ergibt NULL.

Wenn Sie eine der Eingaben nicht kennen, können Sie auch das Ergebnis nicht kennen.

SELECT
  10 + NULL    AS sum,    -- NULL
  100 * NULL   AS prod,   -- NULL
  NULL / 2     AS div,    -- NULL
  'Hi ' || NULL AS greet; -- NULL (string concat)

Woher NULL-Werte kommen

NULL-Werte treten in mehreren häufigen Situationen auf:

  • Bei einem INSERT, der eine nullable Spalte auslässt.
  • Bei einem Outer Join ohne passende Zeile auf einer Seite.
  • Bei einer Aggregation über null Zeilen, etwa wenn SUM einer leeren Menge NULL zurückgibt.

Wenn Sie die Ursache kennen, können Sie besser entscheiden, wie Sie mit den Werten umgehen.

-- Omitting phone inserts NULL automatically
INSERT INTO customers (id, name) VALUES (4, 'Dan');

SELECT id, name, phone FROM customers WHERE id = 4;
-- 4 | Dan | NULL

NULL verhindern: NOT NULL

Wenn eine Spalte immer einen Wert enthalten soll, deklarieren Sie sie als NOT NULL. Die Datenbank weist dann jede Zeile zurück, die versucht, keinen Wert dafür zu setzen.

So halten Sie Ihre Daten zuverlässig sauber und vermeiden später Überraschungen durch NULL.

CREATE TABLE users (
  id    integer PRIMARY KEY,
  email text NOT NULL,   -- must always be provided
  bio   text             -- nullable: optional
);

-- This fails: email cannot be NULL
INSERT INTO users (id, bio) VALUES (1, 'hi');

NULL und DISTINCT / GROUP BY

Es gibt eine Stelle, an der SQL NULL-Werte als gleich behandelt: bei der Gruppierung und beim Entfernen von Duplikaten.

In DISTINCT und GROUP BY werden alle NULL-Werte zu einer einzigen Gruppe zusammengefasst, obwohl NULL = NULL an anderen Stellen unknown ergibt. Dieser Sonderfall sorgt dafür, dass Gruppierungen sinnvoll bleiben.

SELECT phone, count(*)
FROM customers
GROUP BY phone;

-- phone    | count
-- ---------+------
-- 555-0101 |     1
-- NULL     |     2   <- all NULLs grouped together

Zusammenfassung des mentalen Modells

Behalten Sie diese Regeln im Kopf, wann immer Sie NULL sehen:

  • NULL bedeutet unbekannt, nicht 0 oder leer.
  • Vergleiche mit NULL ergeben unbekannt — verwenden Sie IS NULL / IS NOT NULL.
  • WHERE behält nur wahre Zeilen.
  • Arithmetik mit NULL ergibt NULL.
  • Bei der Gruppierung werden NULL-Werte als eine Gruppe behandelt.
-- The two correct NULL tests
SELECT name FROM customers WHERE phone IS NULL;
SELECT name FROM customers WHERE phone IS NOT NULL;

Schnellüberprüfung

Welches Ergebnis liefert der Ausdruck NULL = NULL im SQL-Standard?

Zusammenfassung

Sie verstehen jetzt, was NULL wirklich ist: ein Kennzeichen für einen fehlenden oder unbekannten Wert, der sich von 0 und '' unterscheidet.

Sie haben SQLs dreiwertige Logik kennengelernt, erfahren, warum = NULL niemals funktioniert, wie sich NULL in der Arithmetik fortpflanzt und wie WHERE unbekannte Zeilen verwirft. Als Nächstes lernen Sie, wie Sie NULL-Werte mit IS NULL und IS NOT NULL korrekt prüfen.

-- Remember the golden rule
SELECT * FROM customers WHERE phone IS NULL;     -- correct
-- SELECT * FROM customers WHERE phone = NULL;   -- always empty!

Häufig gestellte Fragen

Ist die Lektion „Was NULL wirklich bedeutet“ kostenlos?

Ja — der vollständige Text von „Was NULL wirklich bedeutet“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Was NULL wirklich bedeutet“?

Unbekannt, nicht null und nicht leer Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Was NULL wirklich bedeutet“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Was NULL wirklich bedeutet
  2. IS NULL und IS NOT NULL
  3. COALESCE und NULLIF
  4. NULL in Aggregationen und Joins
← Zurück zu SQL Academy