MySQL
JSON
Suche…
Einführung
Bemerkungen
Ab MySQL 5.7.8 wird MySQL mit einem JSON-Typ ausgeliefert. Viele Devs haben JSON-Daten für eine Protokollzeit in Textspalten gespeichert. Der JSON-Typ unterscheidet sich jedoch. Die Daten werden nach der Überprüfung im Binärformat gespeichert. Dadurch wird der Aufwand für die Analyse des Textes bei jedem Lesevorgang vermieden.
Erstellen Sie eine einfache Tabelle mit einem Primärschlüssel und einem JSON-Feld
CREATE TABLE table_name (
id INT NOT NULL AUTO_INCREMENT,
json_col JSON,
PRIMARY KEY(id)
);
Fügen Sie eine einfache JSON ein
INSERT INTO
table_name (json_col)
VALUES
('{"City": "Galle", "Description": "Best damn city in the world"}');
Das ist so einfach, wie es sein kann, aber beachten Sie, dass, weil JSON-Wörterbuchschlüssel in doppelte Anführungszeichen gesetzt werden müssen, das Ganze in einfache Anführungszeichen gesetzt werden sollte. Wenn die Abfrage erfolgreich ist, werden die Daten in einem binären Format gespeichert.
Fügen Sie gemischte Daten in ein JSON-Feld ein.
Dadurch wird ein Json-Wörterbuch eingefügt, bei dem eines der Member ein Array von Strings in der Tabelle ist, die in einem anderen Beispiel erstellt wurde.
INSERT INTO myjson(dict)
VALUES('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}');
Beachten Sie, dass Sie bei der Verwendung von einfachen und doppelten Anführungszeichen vorsichtig sein müssen. Das Ganze muss in einfache Anführungszeichen gesetzt werden.
JSON-Feld aktualisieren
Im vorherigen Beispiel haben wir gesehen, wie gemischte Datentypen in ein JSON-Feld eingefügt werden können. Was ist, wenn wir dieses Feld aktualisieren möchten? Wir werden scheveningen zu den Array- variations
im vorherigen Beispiel hinzufügen.
UPDATE
myjson
SET
dict=JSON_ARRAY_APPEND(dict,'$.variations','scheveningen')
WHERE
id = 2;
Anmerkungen:
- Das
$.variations
Array in unserem Json-Wörterbuch. Das $ -Symbol steht für die Json-Dokumentation. Eine vollständige Erklärung der von mysql erkannten json-Pfade finden Sie unter https://dev.mysql.com/doc/refman/5.7/de/json-path-syntax.html - Da wir noch kein Beispiel für die Abfrage mit json-Feldern haben, wird in diesem Beispiel der Primärschlüssel verwendet.
Wenn wir SELECT * FROM myjson
wir sehen
+----+-----------------------------------------------------------------------------------------+
| id | dict |
+---+-----------------------------------------------------------------------------------------+
| 2 | {"opening": "Sicilian", "variations": ["pelikan", "dragon", "najdorf", "scheveningen"]} |
+----+-----------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
CAST-Daten an JSON-Typ
Dies konvertiert gültige Json-Strings in den MySQL-JSON-Typ:
SELECT CAST('[1,2,3]' as JSON) ;
SELECT CAST('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}' as JSON);
Erstellen Sie ein Json-Objekt und ein Array
JSON_OBJECT
erstellt JSON-Objekte:
SELECT JSON_OBJECT('key1',col1 , 'key2',col2 , 'key3','col3') as myobj;
JSON_ARRAY
erstellt auch ein JSON-Array:
SELECT JSON_ARRAY(col1,col2,'col3') as myarray;
Hinweis: myobj.key3 und myarray [2] sind als feste Zeichenfolge "col3".
Auch gemischte JSON-Daten:
SELECT JSON_OBJECT("opening","Sicilian", "variations",JSON_ARRAY("pelikan","dragon","najdorf") ) as mymixed ;