Suche…


Einführung

Ab MySQL 5.7.8 unterstützt MySQL einen nativen JSON-Datentyp, der einen effizienten Zugriff auf Daten in JSON-Dokumenten (JavaScript Object Notation) ermöglicht. https://dev.mysql.com/doc/refman/5.7/de/json.html

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:

  1. 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
  2. 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 ;


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow