Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So speichern Sie JSON-Daten in MySQL

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.