# So nutzen Sie JSON in MariaDB

Seit Version 10.2 können Sie JSON in MariaDB als Data Type (Datenformat) einsetzen, um flexible, semi-strukturierte Daten direkt in relationalen Tabellen zu speichern und zu verarbeiten. Wir zeigen Ihnen die wichtigsten Funktionen und Schritte.

## MariaDB: JSON-Funktionen im Überblick

[MariaDB](https://www.ionos.de/digitalguide/server/knowhow/was-ist-mariadb/) stellt Ihnen eine Reihe hilfreicher Funktionen zur Verfügung, mit denen Sie direkt in der Datenbank effektiv mit **JSON-Daten** arbeiten können. Sie benötigen keine zusätzliche NoSQL-Datenbank. Mit den folgenden Werkzeugen greifen Sie gezielt auf Informationen zu, verändern Inhalte oder prüfen [strukturierte Daten](https://www.ionos.de/digitalguide/websites/webseiten-erstellen/strukturierte-daten-eine-einfuehrung/):

- **`JSON_VALUE(json_doc, json_path)`:** Diese Funktion erlaubt es Ihnen, einen ganz bestimmten Wert innerhalb eines JSON-Feldes auszulesen. Sie geben das JSON-Dokument und den Pfad zum gewünschten Element an. MariaDB liefert Ihnen genau diesen Wert zurück. So sparen Sie sich die Mühe, das gesamte Dokument zu analysieren oder extern zu parsen.
- **`JSON_SET(json_doc, path, value)`:** Hiermit ändern Sie einen vorhandenen Eintrag oder fügen ein neues Feld direkt in der Datenbank hinzu. Existiert der angegebene Pfad, ersetzt MariaDB den Wert. Fehlt der Pfad, legt MariaDB ihn an.
- **`JSON_REMOVE(json_doc, path)`:** Diese MariaDB JSON Function hilft Ihnen, ein JSON-Dokument aufzuräumen. Wenn Sie beispielsweise ein veraltetes Attribut löschen möchten, geben Sie einfach den Pfad an.
- **`JSON_CONTAINS(json_doc, value, path)`:** Diese Funktion eignet sich für Prüfungen oder Filterabfragen. Sie können feststellen, ob ein bestimmter Wert in JSON vorhanden ist.
- **`JSON_VALID(json_doc)`:** Bevor Sie JSON verarbeiten, sollten Sie sicherstellen, dass es gültig ist. Mit `JSON_VALID` erkennt MariaDB, ob der JSON-Text korrekt aufgebaut ist. Fehlerhafte Eingaben identifizieren Sie damit frühzeitig.

## Schritt-für-Schritt-Anleitung: JSON in MariaDB einsetzen

In diesem Abschnitt zeigen wir Ihnen, wie Sie in MariaDB JSON-Daten speichern, abfragen und manipulieren.

### Schritt 1: Eine Tabelle mit JSON-Feld erstellen

Zunächst legen Sie eine Tabelle mit einer Spalte vom Typ `LONGTEXT` oder `JSON` an. MariaDB speichert JSON intern als Text, prüft jedoch bei Verwendung von **JSON-Funktionen** automatisch die Syntax.

```sql
CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    properties JSON
);
```

In der Spalte `properties` können Sie beliebige **JSON-Objekte** speichern.

### Schritt 2: JSON-Daten einfügen

Sie können nun mit [MariaDB INSERT INTO](https://www.ionos.de/digitalguide/hosting/hosting-technik/mariadb-insert-into/) Datensätze mit gültigem JSON einfügen:

```sql
INSERT INTO products (name, properties) VALUES (
    'desk',
    '{"color": "brown", "material": "timber", "weight": 12.5}'
);
```

Wichtig: Sie müssen den **JSON-String** korrekt formatieren und in Anführungszeichen setzen. Innerhalb des Strings müssen doppelte Anführungszeichen mit einem Backslash escaped werden (`\"`).

### Schritt 3: Daten aus einer JSON-Spalte lesen

Um gezielt Werte aus einem JSON-Objekt zu extrahieren, verwenden Sie `JSON_VALUE()`:

```sql
SELECT name, JSON_VALUE(properties, '$.material') AS material
FROM products;
```

Das Ergebnis zeigt den Namen des Produkts sowie das gespeicherte Material aus dem JSON-Feld.

Hinweis `JSON_VALUE()` steht in MariaDB erst ab Version 10.6.1 zur Verfügung. In älteren Versionen ist stattdessen `JSON_UNQUOTE(JSON_EXTRACT(...))` zu verwenden.

### Schritt 4: MariaDB JSON-Daten aktualisieren

Um einen Wert innerhalb eines JSON-Objekts in MariaDB zu ändern, nutzen Sie `JSON_SET()`:

```sql
UPDATE products
SET properties = JSON_SET(properties, '$.color', 'white')
WHERE name = 'desk';
```

Sie können auch neue Schlüssel-Wert-Paare hinzufügen, die vorher nicht existierten.

### Schritt 5: Ein Element aus JSON entfernen

Mit `JSON_REMOVE()` löschen Sie gezielt Werte aus einem Objekt:

```sql
UPDATE products
SET properties = JSON_REMOVE(properties, '$.weight')
WHERE name = 'desk';
```

### Schritt 6: Nach Werten in JSON suchen

Sie können in MariaDB nach Einträgen mit bestimmten JSON-Inhalten filtern:

```sql
SELECT * FROM products
WHERE JSON_VALUE(properties, '$.material') = 'timber';
```

Das ist besonders nützlich für komplexe Filter, zum Beispiel bei Produktsuchen oder personalisierten Inhalten.

### Schritt 7: Validierung und Debugging

Falls Sie überprüfen wollen, ob eine Spalte gültiges JSON enthält, hilft `JSON_VALID()`:

```sql
SELECT name, JSON_VALID(properties) FROM products;
```

Ein Rückgabewert von „1“ bedeutet gültiges JSON, „0“ weist auf Syntaxfehler hin.

### Schritt 8: JSON-Spalten mit generierten Spalten und Indizes kombinieren

Da MariaDB JSON-Inhalte intern als Text speichert, müssen bei Abfragen die Daten jedes Mal neu geparst werden. Das kann zu Performanceproblemen führen, insbesondere bei großen Tabellen oder häufig wiederholten Zugriffen auf bestimmte JSON-Felder. Eine effektive Lösung dafür sind **generierte Spalten**, die automatisch aus dem JSON-Inhalt bestimmte Werte extrahieren und separat speichern.

So können Sie zum Beispiel aus der JSON-Spalte `properties` den Wert des Schlüssels `material` extrahieren und in einer neuen, indexierbaren Spalte ablegen:

```sql
ALTER TABLE products
ADD COLUMN material VARCHAR(100) AS (JSON_VALUE(properties, '$.material')) STORED,
ADD INDEX idx_material (material);
```

Dieser Befehl erstellt die Spalte `material`, die den JSON-Wert aus `$.material` übernimmt. Das Schlüsselwort `STORED` sorgt dafür, dass der Wert in der Datenbank gespeichert wird und nicht nur zur Laufzeit berechnet wird. Zusätzlich erstellen wir den Index (`idx_material`), um präzise Suchabfragen effizient zu gestalten.

Sie führen danach deutlich schnellere Abfragen wie diese durch:

```sql
SELECT name FROM products WHERE material = 'timber';
```

Vor allem in produktiven Umgebungen mit vielen Lesezugriffen lohnt sich diese Technik. Sie reduziert die Rechenlast bei Abfragen und sorgt auch bei großen Datenmengen für kürzere Antwortzeiten.

## Warum ist die Kombination von JSON und MariaDB sinnvoll?

Die Verwendung von [JSON](https://www.ionos.de/digitalguide/server/knowhow/was-ist-json/) in MariaDB ist besonders dann praktisch, wenn Anwendungen Daten in einer **variablen Struktur** ablegen müssen. Dies können Konfigurationen, API-Antworten, Benutzerprofile oder Logs sein. JSON hält verschachtelte und flexible Inhalte direkt in einer Spalte. Sie legen keine zusätzlichen Spalten für jedes mögliche Feld an. Stattdessen fügen Sie neue Werte direkt in die JSON-Struktur ein. So passen Sie Ihre Daten an, ohne das Datenbankschema zu ändern.

Gerade in Systemen, die sowohl feste Tabellenstrukturen als auch flexible Datenspeicherung benötigen, bietet JSON in MariaDB eine schnelle und einfache Lösung. Sie arbeiten mit dynamischen Inhalten, ohne auf die Vorteile klassischer **SQL-Abfragen** zu verzichten. So kombinieren Sie die Stabilität relationaler Daten mit der Anpassungsfähigkeit von NoSQL.


This is a markdown version of: [https://www.ionos.de/digitalguide/hosting/hosting-technik/mariadb-json/](https://www.ionos.de/digitalguide/hosting/hosting-technik/mariadb-json/) for AI/LLM consumption.