Du hast schon Datentypen kennengelernt, die Zahlen und Text speichern. Jetzt ist es Zeit, über den logischen Datentyp – BOOLEAN – zu sprechen. Das ist wahrscheinlich der "ehrlichste" Datentyp, denn er beantwortet nur zwei Fragen: "Ja" oder "Nein". Und manchmal – "Vielleicht" (lies: NULL).
Der logische Datentyp BOOLEAN speichert Werte, die nur sein können:
TRUE(wahr);FALSE(falsch);NULL(kein Wert vorhanden).
Stell dir einen Lichtschalter vor: Er kann eingeschaltet sein TRUE, ausgeschaltet FALSE oder im Zustand "unbekannt" NULL, falls die Glühbirne plötzlich verschwindet.
Man kann sagen, dass der logische Datentyp die Grundlage für Entscheidungen und bedingte Logik in SQL ist. Ohne ihn wäre es unmöglich, einen vernünftigen Filter in einer Abfrage zu bauen oder einen Status für irgendwas zu markieren.
Anwendungsbeispiele
Der logische Datentyp wird in Datenbanken oft verwendet. Hier ein paar echte Use Cases:
Flags und Status.
Zum Beispiel kann das Feld is_active anzeigen, ob ein User aktiv ist (TRUE) oder nicht (FALSE).
SELECT username, is_active
FROM users
WHERE is_active = TRUE;
Kontrolle der Ausführung.
Zum Beispiel kann das Feld is_complete speichern, ob eine Aufgabe erledigt ist.
SELECT task_name
FROM tasks
WHERE is_complete = FALSE;
Verfügbarkeitsprüfung.
Das Feld is_available kann anzeigen, ob ein Produkt auf Lager ist.
Wie benutzt man BOOLEAN in PostgreSQL?
Der logische Datentyp in PostgreSQL heißt einfach BOOLEAN. Lass uns eine Tabelle erstellen und ein paar Spalten hinzufügen:
- Eindeutige Aufgaben-ID
- Aufgabenname
- Logischer Status, ob die Aufgabe erledigt ist
Danach fügen wir ein paar Einträge in die Tabelle ein:
| task_id | task_name - VARCHAR(255) | is_complete - BOOLEAN |
|---|---|---|
| 1 | Bericht schreiben | false |
| 2 | Zum Laden gehen | true |
| 3 | Buch lesen | null |
Daten abfragen
Jetzt schauen wir, wie man Daten basierend auf dem logischen Wert abruft. Zum Beispiel, um nur unerledigte Aufgaben zu bekommen, schreibst du:
SELECT task_name
FROM tasks
WHERE is_complete = FALSE;
Diese Abfrage gibt nur die Aufgaben zurück, bei denen is_complete gleich FALSE ist.
Ergebnis:
| task_name |
|---|
| Bericht schreiben |
Besonderheiten bei BOOLEAN
Werte filtern
Um mit dem logischen Typ zu arbeiten, kannst du folgenden Syntax benutzen:
= TRUE— wenn du explizit angeben willst, dass der Wert wahr ist.= FALSE— wenn du falsche Werte auswählen willst.IS NULL— wenn du Einträge ohne Wert auswählen willst.
Beispiel:
SELECT task_name
FROM tasks
WHERE is_complete IS NULL;
Bedingungen vereinfachen
PostgreSQL ist so "smart", dass du oft nicht mal = TRUE explizit schreiben musst. Zum Beispiel:
SELECT task_name
FROM tasks
WHERE is_complete;
Diese Abfrage ist gleichbedeutend mit WHERE is_complete = TRUE.
Typische Fehler beim Umgang mit BOOLEAN
Wenn du mit einem neuen Datentyp anfängst, sind Fehler unvermeidlich. Hier ein paar typische Probleme, die auftreten können:
Vergleich mit NULL. Anfänger schreiben oft is_active = NULL. Aber NULL kann man nicht mit = vergleichen. Um zu prüfen, ob ein Wert NULL ist, benutze IS NULL oder IS NOT NULL.
Explizites = TRUE angeben. Manchmal bauen Entwickler unnötige Konstrukte wie WHERE is_active = TRUE ein. Das ist kein Fehler, aber du kannst es kürzer schreiben, einfach WHERE is_active.
Falsche Verwendung von Strings. Der logische Typ ist streng typisiert. Du kannst nicht is_active = 'TRUE' oder is_active = 'FALSE' schreiben. Benutze direkt die Werte TRUE, FALSE oder NULL.
Wozu das Ganze?
Du fragst dich vielleicht: Warum das Leben so kompliziert machen und diesen BOOLEAN einführen? Warum nicht einfach Zahlen nehmen, wo 1 für wahr und 0 für falsch steht?
Die Antwort ist einfach: BOOLEAN macht deinen Code und deine Daten viel aussagekräftiger. Wenn jemand eine Tabelle mit dem Feld is_active sieht, ist sofort klar, dass dieses Feld eine logische Entität (ja/nein) speichert. Das verbessert die Lesbarkeit des Datenbankschemas und macht dein Datenmodell für andere Entwickler verständlicher.
GO TO FULL VERSION