L'utilisation du type de données JSON dans MySQL (2) - définir les colonnes de données de type JSON

L'utilisation du type de données JSON dans MySQL (2) - définir les colonnes de données de type JSON

Depuis la version 5.7.8 de MySQL, MySQL prend en charge le type de données JSON. MySQL stocke les documents JSON dans un format interne, permettant un accès en lecture rapide aux éléments du document.

MySQL définit la syntaxe du type de données JSON comme suit:

CREATE TABLE table_name (
    ...
    json_column_name JSON,
    ... 
);

1. Créez une table contenant des colonnes de type JSON

Créez une table d'étudiants, la commande est la suivante:

create table student(
    id int primary key,
    name char(20),
    birth datetime,
    contact json
);

2. Insérez des données

insert into student values(20190201,'ZhangTao','1999-1-20','{"phone":"15937320588","QQ":"2589781425","wechart":"15937320588"}');
insert into student values(20190202,'LiPengfei','1998-10-25','{"phone":"13903730582","QQ":"2589781466","wechart":"13903730582"}');
insert into student values(20190203,'LiuFei','1999-11-2','{"phone":"13072615888","QQ":"1789781433","wechart":"wa159373"}');
insert into student values(20190204,'ZhangTao','2000-8-6','{"phone":"15037334666","QQ":"1889781467","wechart":"pa2568988"}');
insert into student values(20190205,'ZhouPeng','2000-6-19','{"phone":"15346382599","QQ":"6689781444","wechart":"ww26779821"}');

3. Afficher toutes les données

mysql> select * from student;
+----------+-----------+---------------------+------------------------------------------------------------------------+
| id       | name      | birth               | contact                                                                |
+----------+-----------+---------------------+------------------------------------------------------------------------+
| 20190201 | ZhangTao  | 1999-01-20 00:00:00 | {
   
   "QQ": "2589781425", "phone": "15937320588", "wechart": "15937320588"} |
| 20190202 | LiPengfei | 1998-10-25 00:00:00 | {
   
   "QQ": "2589781466", "phone": "13903730582", "wechart": "13903730582"} |
| 20190203 | LiuFei    | 1999-11-02 00:00:00 | {
   
   "QQ": "1789781433", "phone": "13072615888", "wechart": "wa159373"}    |
| 20190204 | ZhangTao  | 2000-08-06 00:00:00 | {
   
   "QQ": "1889781467", "phone": "15037334666", "wechart": "pa2568988"}   |
| 20190205 | ZhouPeng  | 2000-06-19 00:00:00 | {
   
   "QQ": "6689781444", "phone": "15346382599", "wechart": "ww26779821"}  |
+----------+-----------+---------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)

4. Vérifiez le téléphone

Pour récupérer les valeurs d'une colonne JSON, vous pouvez utiliser l'opérateur de chemin JSON (->) ou (- >>).

mysql> select id,name,birth,contact -> '$.phone' phone from student;
+----------+-----------+---------------------+---------------+
| id       | name      | birth               | phone         |
+----------+-----------+---------------------+---------------+
| 20190201 | ZhangTao  | 1999-01-20 00:00:00 | "15937320588" |
| 20190202 | LiPengfei | 1998-10-25 00:00:00 | "13903730582" |
| 20190203 | LiuFei    | 1999-11-02 00:00:00 | "13072615888" |
| 20190204 | ZhangTao  | 2000-08-06 00:00:00 | "15037334666" |
| 20190205 | ZhouPeng  | 2000-06-19 00:00:00 | "15346382599" |
+----------+-----------+---------------------+---------------+
5 rows in set (0.00 sec)

Si vous souhaitez annuler les guillemets autour du téléphone, vous pouvez utiliser la commande suivante:

mysql> select id,name,birth,contact ->> '$.phone' phone from student;
+----------+-----------+---------------------+-------------+
| id       | name      | birth               | phone       |
+----------+-----------+---------------------+-------------+
| 20190201 | ZhangTao  | 1999-01-20 00:00:00 | 15937320588 |
| 20190202 | LiPengfei | 1998-10-25 00:00:00 | 13903730582 |
| 20190203 | LiuFei    | 1999-11-02 00:00:00 | 13072615888 |
| 20190204 | ZhangTao  | 2000-08-06 00:00:00 | 15037334666 |
| 20190205 | ZhouPeng  | 2000-06-19 00:00:00 | 15346382599 |
+----------+-----------+---------------------+-------------+
5 rows in set (0.00 sec)

5. Vérifiez les élèves dont le numéro QQ commence par "25"

mysql> select id,name,contact from student where contact ->> '$.QQ' like '25%';
+----------+-----------+------------------------------------------------------------------------+
| id       | name      | contact                                                                |
+----------+-----------+------------------------------------------------------------------------+
| 20190201 | ZhangTao  | {
   
   "QQ": "2589781425", "phone": "15937320588", "wechart": "15937320588"} |
| 20190202 | LiPengfei | {
   
   "QQ": "2589781466", "phone": "13903730582", "wechart": "13903730582"} |
+----------+-----------+------------------------------------------------------------------------+
2 rows in set (0.00 sec)

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44377973/article/details/107825029
conseillé
Classement