MySQL
JSON
Recherche…
Introduction
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:
- 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 - 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 ;