Maison  >  Article  >  base de données  >  Explication détaillée d'exemples d'opérations de fonction JSON dans Mysql5.7

Explication détaillée d'exemples d'opérations de fonction JSON dans Mysql5.7

黄舟
黄舟original
2017-07-27 15:33:281449parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn