Direkt zum Hauptinhalt springen
eLearner.app
Modul 15 · Lektion 1 von 256/57 im Kurs~15 min
Lektionen des Moduls (1/2)

JSON- und JSONB-Integration

JSON- und JSONB-Integration

PostgreSQL hat die Regeln von Datenbanken neu geschrieben, indem es die beruhigend kolossale ACID-Natur von SQL mit der dynamischen und schwankenden Flexibilität von NoSQL kombiniert. Dies geschah durch die Bereitstellung von Spalten, die nativ für die Speicherung von JSON-Daten vorgesehen sind.

Warnung: In Postgres wird fast immer die Verwendung von JSONB empfohlen. „B“ steht für Binary: Die in diese Spalten eingefügten JSON-Dokumente verlieren ihre rein textuelle Formatierung, gewinnen aber an der Möglichkeit, validiert, mit sehr hoher Leistung abgefragt, manipuliert und sogar mit dem klassischen INDEX B-Tree oder GIN indiziert zu werden.

Navigieren in JSON: der „Pfeil“-Operator

Leider verfügt die Datenbank `ecommerce` derzeit nicht über vordefinierte reine JSON-Spalten. Wir können jedoch temporäres JSON erstellen und es wörtlich „umwandeln“!

Bei der Arbeit mit JSON sind die Operatoren, die in Objekte und Arrays absteigen, -> (behält die Daten als reine JSONB/JSON-Form bei) oder seine „erweiterte“ Version ->> (konvertiert die gefundenen JSON-Daten wörtlich).

Akademisches Beispiel, wenn es eine JSON-Spalte „Metadaten“ gäbe:

SQL
-- Cerca il valore associato alla chiave info
SELECT metadata->'info' FROM users;

-- Cerca dentro info, e prendi testuale city
SELECT metadata->'info'->>'city' FROM users;
Übung#sql.m15.l1.e1
Versuche: 0Wird geladen…

Wir fragen JSON im laufenden Betrieb ab. Projizieren Sie diesen literalen JSON-Code `'{"user": {"name": "Mario"}}'::json` und verwenden Sie den textlich zugeordneten `->`-Operator (`->>`), um seinen „Namen“ zu extrahieren, indem Sie die extrahierte Spalte „Benutzername“ aufrufen.

Editor wird geladen…
Hinweis anzeigen

Wandeln Sie in ::json oder ::jsonb um und verwenden Sie ->'user'->>'name'.

Lösung nach 3 Versuchen verfügbar

Übung#sql.m15.l1.e2
Versuche: 0Wird geladen…

Was ist, wenn wir ein Array übergeben? Der Zugriff auf ein Array in json_b in Postgres erfolgt über INDEX (Basis 0). Extrahieren Sie das ZWEITE Element wörtlich aus `'["A", "B", "C"]'::json` und nennen Sie es „Buchstabe“.

Editor wird geladen…
Hinweis anzeigen

->>1 (es ist nullbasiert!)

Lösung nach 3 Versuchen verfügbar