Recherche…


Introduction

Depuis MySQL 5.7.8, MySQL supporte un type de données JSON natif qui permet un accès efficace aux données dans les documents JSON (JavaScript Object Notation). https://dev.mysql.com/doc/refman/5.7/fr/json.html

Remarques

Depuis MySQL 5.7.8, MySQL est livré avec un type JSON. Beaucoup de développeurs ont enregistré des données JSON dans des colonnes de texte pour une heure de journalisation mais le type JSON est différent, les données sont enregistrées au format binaire après validation. Cela évite d'avoir à analyser le texte à chaque lecture.

Créer un tableau simple avec une clé primaire et un champ JSON

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

Insérer un simple JSON

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

C'est simple car il peut être obtenu, mais notez que les clés de dictionnaire JSON doivent être entourées de guillemets doubles. Si la requête réussit, les données seront stockées dans un format binaire.

Insérer des données mixtes dans un champ JSON.

Cela insère un dictionnaire json où l'un des membres est un tableau de chaînes dans la table créée dans un autre exemple.

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

Notez, encore une fois, que vous devez faire attention à l’utilisation de guillemets simples et doubles. Le tout doit être emballé dans des guillemets simples.

Mise à jour d'un champ JSON

Dans l'exemple précédent, nous avons vu comment des types de données mixtes peuvent être insérés dans un champ JSON. Que faire si nous voulons mettre à jour ce champ? Nous allons ajouter scheveningen au tableau nommé variations dans l'exemple précédent.

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

Remarques:

  1. Le tableau $.variations dans notre dictionnaire json. Le symbole $ représente la documentation json. Pour une explication complète des chemins json reconnus par mysql, reportez-vous à https://dev.mysql.com/doc/refman/5.7/en/json-path-syntax.html
  2. Comme nous n'avons pas encore d'exemple sur l'interrogation de champs json, cet exemple utilise la clé primaire.

Maintenant, si nous faisons SELECT * FROM myjson nous verrons

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

Données CAST au type JSON

Cela convertit les chaînes json valides en type JSON MySQL:

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

Créer un objet et un tableau Json

JSON_OBJECT crée des objets JSON:

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

JSON_ARRAY crée également JSON Array:

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

Note: myobj.key3 et myarray [2] sont "col3" en tant que chaîne fixe.

Données mixtes JSON également:

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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow