🧚 Hör mal! Beekeeper Studio ist eine schnelle, moderne und Open-Source-Datenbank-GUI Download
24. August 2025 Von Matthew Rathbone

Der JSONB-Datentyp von PostgreSQL erleichtert den Umgang mit JSON-Daten in deiner Datenbank. Seine Möglichkeiten gehen weit über das reine Speichern hinaus: Er bietet ausgefeilte Funktionen, mit denen du JSON-Daten detailliert bearbeiten und abfragen kannst. In diesem Leitfaden schauen wir uns diese JSONB-Funktionen anhand praktischer Beispiele an, damit du die Stärken von PostgreSQL bei der Verwaltung von JSON-Daten voll ausschöpfen kannst.

Einen umfassenderen Überblick über die Arbeit mit JSON in PostgreSQL, inklusive der Typen json und jsonb, findest du in unserem ausführlichen Leitfaden zu PostgreSQL-JSON-Funktionen.

Einführung in JSONB

Der Datentyp jsonb in PostgreSQL ist ein Binärformat zum Speichern von JSON-Daten. Er ist sehr effizient und bietet Indexierungsmöglichkeiten, die json nicht hat. Dank seiner Flexibilität und Performance-Vorteile ist JSONB in der Regel die bessere Wahl.

Eine Tabelle mit JSONB erstellen

Erstellen wir zunächst eine Tabelle, die den Datentyp jsonb verwendet:

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    data JSONB
);

JSONB-Daten einfügen

Füge JSONB-Daten mit der üblichen JSON-Syntax ein. PostgreSQL validiert das JSON automatisch und wandelt es ins Binärformat um:

INSERT INTO users (data) VALUES 
('{"name": "John Doe", "email": "john@example.com", "age": 30}'),
('{"name": "Jane Doe", "email": "jane@example.com", "age": 25}'),
('{"name": "Alice Smith", "email": "alice@example.com", "age": 28, "address": {"city": "New York", "state": "NY"}}');

Auf JSONB-Werte zugreifen

PostgreSQL bietet verschiedene Operatoren, um in JSONB-Werte einzutauchen.

Ein JSONB-Objekt extrahieren

Um auf verschachtelte JSONB-Werte zuzugreifen, nutzt du die Operatoren -> und ->>. Der Operator -> liefert Daten im JSON-Format, während ->> Text zurückgibt.

SELECT data->'name' AS name, data->>'email' AS email FROM users;

Erwartete Ausgabe:

  name   |       email        
---------+--------------------
 "John Doe" | john@example.com
 "Jane Doe" | jane@example.com

Verschachtelte JSONB-Werte extrahieren

Bei tieferen JSON-Strukturen verkettest du die Operatoren. Der Operator ? prüft zuerst, ob ein Schlüssel existiert:

SELECT 
    data->>'name' AS name,
    data->'address'->>'city' AS city 
FROM users 
WHERE data ? 'address';

Erwartete Ausgabe:

    name     |   city   
-------------|----------
 Alice Smith | New York

JSONB-Funktionen

PostgreSQL bringt eine ganze Reihe von JSONB-Funktionen mit, die über das einfache Extrahieren von Werten hinausgehen.

Prüfen, ob ein Schlüssel existiert

Der Operator ? prüft, ob ein Schlüssel existiert:

SELECT data ? 'age' AS has_age FROM users;

Erwartete Ausgabe:

 has_age 
---------
 t
 t
 t

Enthaltensein prüfen

Mit dem Operator @> prüfst du, ob ein JSON-Objekt ein anderes enthält:

SELECT * FROM users WHERE data @> '{"age": 30}';

Erwartete Ausgabe:

 id |                    data                     
----+---------------------------------------------
  1 | {"name": "John Doe", "email": "john@example.com", "age": 30}

JSONB verketten

Kombiniere JSONB-Spalten oder -Werte mit dem Operator ||:

SELECT data || '{"verified": false}' AS updated_data FROM users;

Erwartete Ausgabe:

                            updated_data                            
-------------------------------------------------------------------
 {"age": 30, "name": "John Doe", "email": "john@example.com", "verified": false}
 {"age": 25, "name": "Jane Doe", "email": "jane@example.com", "verified": false}
 {"age": 28, "name": "Alice Smith", "email": "alice@example.com", "address": {"city": "New York", "state": "NY"}, "verified": false}

Einen Schlüssel aus JSONB löschen

Entferne einen Schlüssel mit dem Operator -:

SELECT data - 'age' AS partial_data FROM users;

Erwartete Ausgabe:

                            partial_data                             
--------------------------------------------------------------------
 {"name": "John Doe", "email": "john@example.com"}
 {"name": "Jane Doe", "email": "jane@example.com"}
 {"name": "Alice Smith", "email": "alice@example.com", "address": {"city": "New York", "state": "NY"}}

JSONB-Indexierung

Um die Performance von Abfragen auf JSONB-Daten zu verbessern, nutzt du Indizes.

Einen JSONB-Index erstellen

Ein GIN-Index ist ideal für JSONB-Typen:

CREATE INDEX idx_users_data ON users USING GIN (data);

Dieser Index beschleunigt Operationen wie die Suche nach vorhandenen JSON-Schlüsseln oder Schlüssel-Wert-Paaren.

Fortgeschrittene JSONB-Funktionen

PostgreSQL bietet weitere Funktionen für komplexere Operationen:

-- Convert JSONB to key-value pairs
SELECT jsonb_each_text(data) FROM users LIMIT 1;

-- Get all keys from a JSONB object
SELECT jsonb_object_keys(data) FROM users LIMIT 1;

-- Update a nested value using jsonb_set
UPDATE users 
SET data = jsonb_set(data, '{address,zip}', '"10001"')
WHERE data ? 'address';

Fazit

Die JSONB-Funktionen von PostgreSQL bieten leistungsstarke, flexible Möglichkeiten für die Arbeit mit JSON-Daten in deiner Datenbank. Die wichtigsten Vorteile:

  • Performance: Binäres Speicherformat mit effizienter Indexierung
  • Vielseitige Operatoren: Einfaches Extrahieren und Bearbeiten mit ->, ->>, @>, ?
  • Fortgeschrittene Funktionen: Komplexe Operationen wie jsonb_set, jsonb_each_text und jsonb_array_elements
  • Indexierung: GIN-Indizes für schnelle Abfragen

Dank dieser Möglichkeiten ist PostgreSQL eine hervorragende Wahl für Anwendungen, die semistrukturierte JSON-Daten neben klassischen relationalen Daten speichern und abfragen müssen. Wenn du diese JSONB-Funktionen beherrschst, kannst du flexiblere und effizientere Datenbankanwendungen bauen.

Beekeeper Studio ist eine kostenlose & quelloffene Datenbank-GUI

Das beste SQL-Abfrage- & Editor-Tool, das ich je benutzt habe. Es bietet alles, was ich zum Verwalten meiner Datenbank brauche. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio ist schnell, intuitiv und einfach zu bedienen. Beekeeper unterstützt jede Menge Datenbanken und läuft hervorragend auf Windows, Mac und Linux.

Die Linux-Version von Beekeeper hat 100% des Funktionsumfangs, ohne Abstriche und ohne Kompromisse.

Was Nutzer über Beekeeper Studio sagen

★★★★★
„Beekeeper Studio hat meinen alten SQL-Workflow komplett ersetzt. Es ist schnell, intuitiv und macht die Arbeit mit Datenbanken wieder zum Vergnügen.“
— Alex K., Datenbankentwickler
★★★★★
„Ich habe viele Datenbank-GUIs ausprobiert, aber Beekeeper trifft die perfekte Balance zwischen Features und Einfachheit. Es funktioniert einfach.“
— Sarah M., Full Stack Engineer

Bereit, deinen SQL-Workflow zu verbessern?

download Kostenlos herunterladen