Cet article explique avec vous comment utiliser la fonction d'exploitation de json dans mysql5.7 et des exemples associés. C'est très pratique. Les amis dans le besoin peuvent s'y référer
Avant-propos
JSON. est un format d'échange de données léger qui utilise un format de texte indépendant du langage, similaire à XML, mais plus simple, plus facile à lire et à écrire que XML. Il est facile à analyser et à générer pour les machines, et réduira la transmission de la bande passante du réseau.
Le format de JSON est très simple : nom/valeur clé. Dans les versions précédentes de MySQL, pour implémenter un tel stockage, du texte de grande taille VARCHAR ou TEXT était utilisé. Après la sortie de MySQL 5.7, le type de données JSON ainsi que la récupération et d'autres fonctions d'analyse de ce type ont été spécialement conçus.
Faisons-le en pratique.
Créez un tableau avec des champs JSON
Par exemple, un tableau 'article', les champs incluent
id, titre, tags
un article Il y aura plusieurs balises, les balises peuvent être définies sur le type JSON
L'instruction de création de table est la suivante :
CREATE TABLE article` ( id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, title` varchar (200) NOT NULL , tags` json DEFAULT NULL , PRIMARY KEY (`id`) ) ENGINE=InnoDB;
Insérer des données
Insérez une donnée avec du contenu JSON et exécutez l'instruction insert :
INSERT INTO article` (`title`, `tags`) VALUES ( '体验 Mysql JSON' , '["Mysql", "Database"]' );
Ce qui est inséré ici est un tableau JOSN ["Mysql", "Database "]
Interrogez tout le contenu de la table de l'article, vous pouvez voir les données nouvellement insérées
Requête
Utilisez la fonction JSON pour effectuer deux requêtes simples
1. Rechercher tous les articles avec le tag "Mysql"
SELECT * FROM article` WHERE JSON_CONTAINS(tags, '["Mysql"]' );
2. Rechercher les articles commençant par "Data" dans le tag
SELECT * FROM article` WHERE JSON_SEARCH(tags, 'one' , 'Data%' ) IS NOT NULL ;
La signification des trois paramètres dans la fonction JSON_SEARCH :
1 Le document à trouver
2. deux options, 'une' recherche Le premier qui remplit les conditions, 'tous' trouve tous ceux qui remplissent les conditions
3 Conditions de recherche
Chemin JSON
JSON. Le chemin est utilisé pour localiser le champ cible dans le document, par exemple
SELECT JSON_EXTRACT( '{"id": 1, "name": "mysql"}' , '$.name' );
Le résultat est : mysql
JSON_EXTRACT() est l'extraction JSON fonction, $.name est un chemin JSON, indiquant l'emplacement du document Le champ de nom
Le chemin JSON commence par $, voici quelques exemples supplémentaires
{ "num" : 123, "arr" : [1, 2], "obj" : { "a" : 3, "b" : 4 } } $.num //结果:123 $.arr //结果:[1, 2] $.arr[1] //结果:1 $.obj.a //结果:3 $**.b //结果:4
Exemples de requête utilisant le chemin JSON
SELECT tags-> "$[0]" as 'tag' FROM article`;
Mettre à jour les données
Par exemple, si vous souhaitez ajouter une balise "dev" à un article, la condition de mise à jour est que la balise "Mysql" est déjà incluse, et il n'y a pas de "dev" "Les données de la balise
l'instruction de mise à jour sont les suivantes :
UPDATE article` SET tags = JSON_MERGE(tags, '["dev"]' ) WHERE JSON_SEARCH(tags, 'one' , 'dev' ) IS NULL AND JSON_SEARCH(tags, 'one' , 'Mysql' ) IS NOT NULL ;
Vous pouvez voir que la balise "dev"
a été ajoutée avec succès. Un autre exemple Si vous souhaitez mettre à jour la balise "Mysql" vers "Mysql 5.7.13", la mise à jour. La déclaration est la suivante :
UPDATE article` set tags = JSON_SET(tags, '$[0] ', 'Mysql 5.7. 13' ) ;<code>UPDATE article` set tags = JSON_SET(tags, ‘$[0] ', ‘Mysql 5.7.13' ) ;<br>
J'ai expérimenté JSON_MERGE et JSON_SET ci-dessus, et il existe de nombreuses fonctions pour modifier JSON, par exemple :
JSON_INSERT(doc, path, val[, path, val]…)
Insérer des données
JSON_REPLACE(doc, path, val[, path, val]…)
Remplacer les données
JSON_ARRAY_APPEND(doc, path, val[, path, val]…)
Ajouter les données à la fin du tableau
JSON_REMOVE(doc , path[, path]…)<code>JSON_REMOVE(doc, path[, path]…)<br>
Supprimer les données de l'emplacement spécifié
Grâce à l'expérience de fonctionnement initiale, j'ai l'impression que le fonctionnement JSON de Mysql est relativement fluide. est vraiment pratique pour utiliser la structure des documents dans Mysql à l'avenir
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!