Zoeken…


Invoering

Vanaf MySQL 5.7.8 ondersteunt MySQL een native JSON-gegevenstype dat efficiënte toegang tot gegevens in JSON-documenten (JavaScript Object Notation) mogelijk maakt. https://dev.mysql.com/doc/refman/5.7/en/json.html

Opmerkingen

Vanaf MySQL 5.7.8 wordt MySQL geleverd met een JSON-type. Veel ontwikkelaars hebben JSON-gegevens opgeslagen in tekstkolommen voor een logtijd, maar het JSON-type is anders, de gegevens worden na validatie in binair formaat opgeslagen. Dat vermijdt de overhead van het ontleden van de tekst bij elke gelezen.

Maak een eenvoudige tabel met een primaire sleutel en een JSON-veld

CREATE TABLE table_name (
    id INT NOT NULL AUTO_INCREMENT, 
    json_col JSON,
    PRIMARY KEY(id)
);

Voeg een eenvoudige JSON in

INSERT INTO
    table_name (json_col) 
VALUES
    ('{"City": "Galle", "Description": "Best damn city in the world"}');

Dat is eenvoudig, maar merk op dat omdat JSON-woordenboeksleutels omgeven moeten zijn door dubbele aanhalingstekens, het hele ding in enkele aanhalingstekens moet worden ingepakt. Als de zoekopdracht slaagt, worden de gegevens binair opgeslagen.

Voeg gemengde gegevens in een JSON-veld in.

Hiermee wordt een json-woordenboek ingevoegd waarbij een van de leden een reeks tekenreeksen in de tabel bevat die in een ander voorbeeld is gemaakt.

INSERT INTO myjson(dict) 
VALUES('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}');

Merk nogmaals op dat u voorzichtig moet zijn met het gebruik van enkele en dubbele aanhalingstekens. Het hele ding moet in enkele aanhalingstekens worden verpakt.

Een JSON-veld bijwerken

In het vorige voorbeeld zagen we hoe gemengde gegevenstypen in een JSON-veld kunnen worden ingevoegd. Wat als we dat veld willen bijwerken? We gaan scheveningen toevoegen aan de array met de naam variations in het vorige voorbeeld.

UPDATE 
    myjson 
SET 
    dict=JSON_ARRAY_APPEND(dict,'$.variations','scheveningen') 
WHERE 
    id = 2;

Opmerkingen:

  1. De $.variations array in ons json-woordenboek. Het $ symbool vertegenwoordigt de json-documentatie. Raadpleeg https://dev.mysql.com/doc/refman/5.7/en/json-path-syntax.html voor een volledige uitleg van json-paden die door mysql worden herkend
  2. Aangezien we nog geen voorbeeld hebben voor het opvragen van json-velden, gebruikt dit voorbeeld de primaire sleutel.

Als we nu SELECT * FROM myjson , zullen we het zien

+----+-----------------------------------------------------------------------------------------+
| id | dict                                                                                    |
+---+-----------------------------------------------------------------------------------------+
| 2  | {"opening": "Sicilian", "variations": ["pelikan", "dragon", "najdorf", "scheveningen"]} |
+----+-----------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

CAST-gegevens naar JSON-type

Dit converteert geldige json-strings naar MySQL JSON-type:

 SELECT CAST('[1,2,3]' as JSON) ;
 SELECT CAST('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}' as JSON);

Maak Json Object and Array

JSON_OBJECT maakt JSON-objecten:

 SELECT JSON_OBJECT('key1',col1 , 'key2',col2 , 'key3','col3') as myobj;

JSON_ARRAY maakt ook JSON Array:

 SELECT JSON_ARRAY(col1,col2,'col3') as myarray;

Opmerking: myobj.key3 en myarray [2] zijn "col3" als vaste tekenreeks.

Ook gemengde JSON-gegevens:

 SELECT JSON_OBJECT("opening","Sicilian", "variations",JSON_ARRAY("pelikan","dragon","najdorf") ) as mymixed ;


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow