Maison  >  Article  >  base de données  >  Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (Partie 1)

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (Partie 1)

黄舟
黄舟original
2017-02-07 13:08:071315parcourir

Préface à l'introduction de MySQL 5.7 json

MySQL5.7 ajoute deux nouveaux types de champs : Json et Generated La génération du type Generated est indissociable de Json. Sans le type Generated, le type Json l'est. plus puissant et productif. Il ne peut pas être utilisé dans Json car Json ne prend pas en charge les index, mais si vous souhaitez interroger les données dans Json, sans index, il s'agit d'une analyse de table complète. En termes d'efficacité d'exécution, cela ne peut certainement pas être le cas. utilisé dans un environnement de production. Cependant, avec le type Généré, c'est différent. Le type Généré est simplement un champ virtuel. La valeur ne peut pas être mise à jour. La valeur provient d'autres champs ou de calculs ou de conversions entre champs. . En utilisant les caractéristiques de Generated, il peut être indirectement ajouté à Json. La clé dans le type crée un index pour résoudre le problème selon lequel Json ne peut pas créer d'index. Bref, la génération du type Generated apporte un support aux problématiques d'indexation du type Json. Les valeurs JSON incluent plusieurs formats tels que la valeur unique, le tableau, le tuple, le format Json annoté, etc.

Objectivement parlant, l'émergence du type Json offre une commodité pour la recherche et le développement et fournit un support similaire à NoSQL. Cependant, du point de vue de l'exploitation et de la maintenance du DBA, cela peut être un problème lié à. les grands champs tels que le texte. Le problème est le même. json peut devenir une variante du champ de texte dans la production réelle. J'espère que DBA accordera une attention particulière à ce type dans l'utilisation future de 5.7.

Créer une table avec des champs JSON

Créer directement une table de test avec des champs JSON

CREATE TABLE json_test (
  id int(11) NOT NULL AUTO_INCREMENT,
  group_name varchar(20) DEFAULT NULL,
  user_info json DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ou ajouter un champ de type JSON à la table

 ALTER TABLE json_test ADD COLUMN user_info JSON DEFAULT NULL;

Insérer des données

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (Partie 1)

Requête liée au champ JSON

1. Interroger tous les résultats

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (Partie 1)

2 : Requête JSON_EXTRACT

JSON_EXTRACT Cette fonction est principalement utilisée pour la correspondance exacte, comme rechercher des enregistrements avec age=21 dans user_info ou interroger des enregistrements avec name='wangwei', ou un nom comme ' %wangwei% ' Requête floue :

SELECT * FROM json_test WHERE JSON_EXTRACT(user_info,'$.age')=21;

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (Partie 1)

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (Partie 1)

Lorsque la valeur est un tableau, la valeur de position de départ du tableau est 0. À la en même temps, MySQL a ajouté -> dans la version 5.5.9, offrant une autre façon d'écrire un équivalent à JSON_EXTRACT :

SELECT * FROM json_test WHERE user_info->"$.age"=21;

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (Partie 1)

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (Partie 1)

3. Requête JSON_SEARCH

Fonction de recherche de chaîne JSON_SEARCH, trouve les enregistrements dont la valeur clé dans json est la chaîne 'wangwei', qui est une correspondance exacte ; l'ajout de % signifie quelque chose comme :

SELECT * FROM json_test WHERE JSON_SEARCH(user_info,'all','wangwei') IS NOT NULL;
SELECT * FROM json_test WHERE JSON_SEARCH(user_info,'all','wangwei%') IS NOT NULL;
SELECT * FROM json_test WHERE JSON_SEARCH(user_info,'all','%wangwei%') IS NOT NULL;


4. JSON_CONTAINS détermine si la clé contient la valeur spécifiée.

JSON_CONTAINS détermine si la clé contient la valeur spécifiée. La valeur de retour est 0 ou 1 ou nulle. ne sont pas inclus, inclus et la clé spécifiée n'existe pas dans une situation centralisée :

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (Partie 1)

5 JSON_CONTAINS_PATH détermine si la clé existe dans le champ

. JSON_CONTAINS_PATH Détermine si la clé existe dans le champ. La valeur de retour est 0 et 1. Le format est JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path]...). un dans le chemin, ce sera 1. Sinon c'est 0 ; si c'est tout, ça doit tout inclure, et le retour est 1, sinon c'est 0 :

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (Partie 1)

6. Requête de longueur JSON_LENGTH

JSON_LENGTH est utilisé Calculez la longueur du champ JSON :

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (Partie 1)

7 : Requête de niveau JSON_DEPTH

JSON_DEPTH est principalement utilisé pour interroger le niveau du champ Json. La valeur vide est 1, donc dans des circonstances normales, le type de champ Json n'est pas vide. Le résultat de la requête de cette valeur doit être supérieur ou égal à 2 :

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (Partie 1)

8 : JSON_TYPE interroge le type de données de la valeur clé dans le champ Json

JSON_TYPE est principalement utilisé pour interroger le type de données de la valeur clé dans le type de champ Json . Les types affichés sont classés comme suit :

Types purement JSON :

OBJECT : objets JSON;ARRAY : tableaux JSON;BOOLEAN : les littéraux vrai et faux JSON;NULL : le littéral nul JSON. et INT et BIGINT ;DOUBLE : scalaires MySQL DECIMAL et NUMERIC


Types temporels :

DATETIME : scalaires MySQL DATETIME et TIMESTAMP ;DATE : scalaires MySQL DATE ;TIME : scalaires MySQL TIME


Types de chaînes :

STRING : scalaires de type de caractères MySQL utf8 ;CHAR, VARCHAR, TEXT , ENUM et SET


Types binaires :

BLOB : scalaires de type binaire MySQL ;BINARY, VARBINARY, BLOB;BIT : scalaires MySQL BIT


Tous les autres types :

OPAQUE (bits bruts)

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (Partie 1)

9. JSON_UNQUOTE supprime les caractères spéciaux avant et après.

JSON_UNQUOTE est principalement utilisé pour supprimer les caractères spéciaux avant et après, formater la valeur, prend actuellement en charge les caractères suivants :

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (Partie 1)

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (Partie 1)

Ce qui précède sont les nouvelles fonctionnalités de MySQL 5.7 | Le contenu de la colonne Json et de la colonne générée (partie 1), veuillez faire attention au site Web PHP chinois (www.php.cn) pour plus de contenu connexe !


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