• mysql 5.7 支持json格式


    1、JSON格式的支持:
    mysql> create table user ( uid int auto_increment,  
        -> data json,primary key(uid))engine=innodb;  
    Query OK, 0 rows affected (0.01 sec)  
       
    mysql> insert into user values (NULL,  
        -> '{"name":"David","mail":"greenforestquan@163.com","address":"Shangahai"}');  
    Query OK, 1 row affected (0.00 sec)  
       
    mysql> insert into user values (NULL,'{"name":"Amy","mail":"amy@gmail.com"}');  
    Query OK, 1 row affected (0.00 sec) 
    【上面创建了data字段使用了【json】类型,此时data在插入数据时,其格式必须严格遵守json格式 即{"键1":"值1","键2":"值2"}】
    2、查询json格式的字段
    mysql> select jsn_extract(data, '$.name'),jsn_extract(data,'$.address') from user;  
    +-----------------------------+-------------------------------+  
    | jsn_extract(data, '$.name') | jsn_extract(data,'$.address') |  
    +-----------------------------+-------------------------------+  
    | "David" | "Shangahai" |  
    | "Amy" | NULL |  
    +-----------------------------+-------------------------------+  
    2 rows in set (0.00 sec) 
    3、给json格式的某个键字段创建索引。首先创建虚拟列,之后在改虚拟列上创建索引。
    mysql> ALTER TABLE user ADD user_name varchar(128)  
        -> GENERATED ALWAYS AS (jsn_extract(data,'$.name')) VIRTUAL;  
    Query OK, 0 rows affected (0.01 sec)  
    Records: 0 Duplicates: 0 Warnings: 0  
       
    mysql> select user_name from user;  
    +-----------+  
    | user_name |  
    +-----------+  
    | "Amy"     |  
    | "David"   |  
    +-----------+  
    2 rows in set (0.00 sec)  
       
    mysql> alter table user add index idx_username (user_name);  
    Query OK, 2 rows affected (0.01 sec)  
    Records: 2  Duplicates: 0  Warnings: 0  
    4、之后通过虚拟列名对json特定列进行索引查询:
    mysql> explain select * from user where user_name='"Amy"'G
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: user
       partitions: NULL
             type: ref
    possible_keys: idx_username
              key: idx_username
          key_len: 131
              ref: const
             rows: 1
         filtered: 100.00
            Extra: NULL
    1 row in set, 1 warning (0.00 sec)

    您的资助是我最大的动力!
    金额随意,欢迎来赏!

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

    如果,想给予我更多的鼓励,求打

    因为,我的写作热情也离不开您的肯定支持,感谢您的阅读!

  • 相关阅读:
    python之生成器
    flask_sqlalchemy filter 和filter_by的区别
    Linux 更新python至2.7后ImportError: No module named _ssl
    Linux pip 安装模块时,一直黄字错误:Could not find a version that satisfies the requirement
    Linux 创建python虚拟环境
    python 需求文件requirements.txt的创建及使用
    wget http://pypi.python.org/packages/source/s/setuptools/setuptools-2.0.tar.gz 下载时报错 ssl is required 解决办法
    结合daterangepicker实现Datatables表格带参数查询
    datatable 的ajax修改参数,post可以传参处理
    datatables 参数详解(转)
  • 原文地址:https://www.cnblogs.com/GreenForestQuan/p/6044995.html
Copyright © 2020-2023  润新知