MySQL ermöglicht es Ihnen, JSON-Daten seit Version 5.7.8 im nativen JSON-Datentyp zu speichern. Dadurch können Sie JSON-Dokumente einfach speichern und JSON-Datenelemente ohne Datenkonvertierung extrahieren. In diesem Artikel sehen wir uns an, wie JSON-Daten in MySQL gespeichert werden.
Der MySQL-JSON-Datentyp ermöglicht es Ihnen, JSON-Daten so zu speichern, dass Sie Werte darin einfach mit Schlüssel- oder Array-Index lesen oder suchen können, was es sehr schnell macht. Es ist nicht erforderlich, Text in JSON oder umgekehrt zu konvertieren, um Daten abzufragen.
So speichern Sie JSON-Daten in MySQL
Wir werden uns ansehen, wie JSON-Daten in MySQL gespeichert werden und wie Spalten mit dem JSON-Datentyp abgefragt werden.
Hier ist die Syntax zum Definieren einer JSON-Spalte
column_name JSON
Bitte beachten Sie, dass eine Spalte des JSON-Datentyps weder einen Standardwert noch einen Index haben kann.
Lesen Sie auch:So vergleichen Sie Nullwerte in MySQL
Beispiel für MySQL-JSON-Datentyp
Hier ist ein Beispiel für eine Tabelle users(id, details) wo id ist eine Ganzzahl und ein Primärschlüssel, während Details ist eine Spalte vom JSON-Datentyp.
create table users(
id int auto_increment primary key,
details json
);
Einfügen von JSON in MySQL
Hier ist die SQL-Abfrage zum Speichern des JSON-Dokuments in MySQL.
insert into users(details)
values(
'{ "page": "/" ,
"name": "Safari",
"os": "Mac",
"spend": 100,
"resolution": { "x": 1920, "y": 1080 } }'
),
(
'{ "page": "/products",
"name": "Chrome",
"os": "Windows",
"spend": 150,
"resolution": { "x": 1680, "y": 1050 } }'
),
(
'{ "page": "/shoes",
"name": "Firefox",
"os": "Windows",
"spend": 200,
"resolution": { "x": 1280, "y": 800 } }'
); Wir extrahieren Daten aus JSON-Spalten mit dem Spaltenpfadoperator (->)
Hier ist ein Beispiel zum Abrufen von Browsernamen für jeden Benutzer.
mysql> select id, details->'$.name' details from users; +----+-----------+ | id | details | +----+-----------+ | 1 | "Safari" | | 2 | "Chrome" | | 3 | "Firefox" | +----+-----------+ 3 rows in set (0.00 sec)
Sie werden sehen, dass die Detailspalten doppelte Anführungszeichen haben. Wenn Sie doppelte Anführungszeichen entfernen möchten, verwenden Sie stattdessen den Operator ->>
mysql> select id, details->>'$.name' details from users; +----+-----------+ | id | details | +----+-----------+ | 1 | Safari | | 2 | Chrome | | 3 | Firefox | +----+-----------+ 3 rows in set (0.00 sec)
Sie können auch JSON-Daten mit der GROUP BY-Klausel und Aggregationsfunktionen aggregieren. Hier ist ein Beispiel, um die Anzahl der Browser in unseren Daten zu zählen.
mysql> SELECT details->>'$.name' detail, count(detail) FROM users GROUP BY details->>'$.name';
Sie sehen die folgende Ausgabe
+---------+----------------+ | details | count(details) | +---------+----------------+ | Safari | 1 | | Firefox | 1 | | Chrome | 1 | +---------+----------------+ 3 rows in set (0.02 sec)
In ähnlicher Weise können Sie auch JSON-Daten in der WHERE-Klausel verwenden. Hier ist ein Beispiel für die Auswahl von Daten mit spend> 100
mysql> SELECT id, SUM(details->>'$.spend') spend
FROM users
WHERE details->>'$.spend' > 100
GROUP BY id;
Hoffentlich hilft Ihnen dieser Artikel bei der Arbeit mit JSON-Daten in MySQL. Ubiq macht es einfach, Daten zu visualisieren und sie in Echtzeit-Dashboards zu überwachen. Testen Sie Ubiq kostenlos.