PostgreSQL - NULL-Werte

Hallo, angehende Datenbankenthusiasten! Heute tauchen wir in ein faszinierendes Konzept in PostgreSQL ein: NULL-Werte. Als dein freundlicher Nachbarschaftsinformatiklehrer freue ich mich darauf, dich Schritt für Schritt durch dieses Thema zu führen. Mach dir keine Sorgen, wenn du neu im Programmieren bist – wir beginnen mit den Grundlagen und arbeiten uns hoch. Also hole dir eine Tasse Kaffee (oder Tee, wenn das dein Ding ist) und lassen uns gemeinsam diese NULL-Abenteuerreise antreten!

PostgreSQL - NULL Values

Was ist NULL?

Bevor wir uns mit der Syntax und Beispielen beschäftigen, lassen wir uns erstmal klar machen, was NULL im Kontext von Datenbanken eigentlich bedeutet.

Definition von NULL

NULL ist ein spezieller Wert in Datenbanken, der das Fehlen von Daten darstellt. Es ist weder null, noch ein leerer String, noch falsch. Es ist einfach... nichts. Denk daran als einen Platzhalter, der sagt: "Hey, hier sollte etwas sein, aber wir wissen noch nicht was!"

Warum ist NULL wichtig?

NULL ist in Datenbanken entscheidend, weil es uns ermöglicht, zwischen zu unterscheiden:

  1. Einem bekannten Wert (wie 0 oder ein leerer String)
  2. Einem Wert, den wir nicht kennen oder der nicht zutrifft

Zum Beispiel, wenn du eine Mitarbeiterdatenbank mit Telefonnummern hast, könnte ein NULL im Telefonnummerfeld bedeuten "Wir haben die Telefonnummer dieses Mitarbeiters noch nicht", was sich von einem leeren String unterscheidet, der bedeuten könnte "Dieser Mitarbeiter hat explizit gesagt, dass er keine Telefonnummer hat."

Syntax zur Arbeit mit NULL-Werten

Nun, da wir wissen, was NULL ist, schauen wir uns an, wie wir damit in PostgreSQL arbeiten können. Hier sind die Hauptweisen, um mit NULL-Werten zu interagieren:

Operation Syntax Beschreibung
Prüfen, ob ein Wert NULL ist IS NULL Gibt wahr zurück, wenn der Wert NULL ist
Prüfen, ob ein Wert nicht NULL ist IS NOT NULL Gibt wahr zurück, wenn der Wert nicht NULL ist
Standardwert für NULL festlegen COALESCE() Gibt den ersten nicht-NULL-Wert in der Liste zurück
Nullif NULLIF(Wert1, Wert2) Gibt NULL zurück, wenn Wert1 Wert2 entspricht, sonst gibt es Wert1 zurück

Lassen wir uns mit einigen Beispielen näher mit jedem dieser Verfahren beschäftigen!

Beispiele zur Arbeit mit NULL-Werten

Erstellen einer Tabelle mit NULL-Werten

Zunächst erstellen wir eine einfache Tabelle, mit der wir arbeiten können:

CREATE TABLE students (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100),
phone VARCHAR(20)
);

INSERT INTO students (name, email, phone) VALUES
('Alice', '[email protected]', '123-456-7890'),
('Bob', '[email protected]', NULL),
('Charlie', NULL, '987-654-3210'),
('David', NULL, NULL);

In dieser Tabelle haben wir es ermöglicht, dass die E-Mail- und Telefonfelder NULL sein können. Lassen wir uns das genauer ansehen:

  1. Alice hat alle ihre Informationen.
  2. Bob hat keine Telefonnummer (es ist NULL).
  3. Charlie hat keine E-Mail (es ist NULL).
  4. David ist geheimnisvoll und hat weder eine E-Mail noch eine Telefonnummer.

Prüfen auf NULL-Werte

Nun sehen wir, wie wir Studierende mit fehlenden Informationen finden können:

SELECT name
FROM students
WHERE email IS NULL;

Diese Abfrage wird folgendes zurückgeben:

Charlie
David

Was passiert hier? Die Bedingung IS NULL überprüft NULL-Werte in der E-Mail-Spalte. Es ist, als würde man fragen: "Hey PostgreSQL, kannst du alle Studierenden finden, die uns ihre E-Mail-Adresse nicht gegeben haben?"

Versuchen wir das Gegenteil:

SELECT name
FROM students
WHERE phone IS NOT NULL;

Dies wird uns geben:

Alice
Charlie

Diesmal fragen wir nach Studierenden, die ihre Telefonnummern angegeben haben.

Verwenden von COALESCE, um NULL-Werte zu behandeln

COALESCE ist wie ein Schweizer Army Knife für die Behandlung von NULL-Werten. Es gibt den ersten nicht-NULL-Wert in einer Liste zurück. Lassen wir es in Aktion sehen:

SELECT name, COALESCE(email, 'Keine E-Mail angegeben') AS contact_info
FROM students;

Diese Abfrage wird folgendes zurückgeben:

Alice    | [email protected]
Bob      | [email protected]
Charlie  | Keine E-Mail angegeben
David    | Keine E-Mail angegeben

Was passiert hier? COALESCE überprüft die E-Mail-Spalte. Wenn er ein NULL findet, ersetzt er es durch 'Keine E-Mail angegeben'. Es ist, als hätte man einen freundlichen Assistenten, der die Lücken für dich auffüllt!

Verwenden von NULLIF

NULLIF ist ein bisschen wie ein Zauberer – er kann Werte verschwinden lassen (in NULL verwandeln) unter bestimmten Bedingungen. Sehen wir uns ein Beispiel an:

SELECT name, NULLIF(phone, '123-456-7890') AS special_phone
FROM students;

Diese Abfrage wird folgendes zurückgeben:

Alice    | NULL
Bob      | NULL
Charlie  | 987-654-3210
David    | NULL

Was ist hier die Magie? NULLIF vergleicht jede Telefonnummer mit '123-456-7890'. Wenn sie übereinstimmen, wird das Ergebnis in NULL verwandelt. Es ist, als würde man sagen: "Wenn dies unsere Standardbüronummer ist, dann zeigen wir sie nicht an."

Fazit

Und da hast du es, meine lieben Studierenden! Wir sind durch die Welt der NULL-Werte in PostgreSQL gereist. Wir haben gesehen, wie NULL unbekannte oder fehlende Daten darstellt, wie man es überprüft und wie man es mit nützlichen Funktionen wie COALESCE und NULLIF behandelt.

Denke daran, in der Welt der Datenbanken ist es ebenso wichtig, NULL zu kennen wie tatsächliche Werte. Es ist der Unterschied zwischen "Ich weiß es nicht" und "Ich weiß, es ist null" – und in Daten kann dieser Unterschied riesig sein!

Bei deinem weiteren Abenteuer mit PostgreSQL, halte die Augen offen nach diesen NULL-Werten. Sie sind wie die stillen Charaktere in einer Geschichte – nicht immer sichtbar, aber oft entscheidend für den Handlungsverlauf.

Weiter üben, bleibe neugierig und habe keine Angst, Fragen zu stellen. Schließlich gibt es im Lernprozess keine NULL-Werte – nur Chancen zum Wachsen!

Credits: Image by storyset