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.