文章目录

  • JSON类型
    • JSON入门
    • JSON 函数
    • JSON_OBJECT 将对象转为 json
    • json_insert 插入数据
    • json_merge 合并数据并返回
    • 其他函数:
    • JSON 索引
    • 拓展

前文-mysql数据类型

JSON类型

JSON入门

新建表

create table json_user (
uid int auto_increment,
data json,
primary key(uid)
);

插入数据

insert into json_user values (
null, '{"name":"lison", "age":18,"address":"enjoy" }' ); insert into json_user values ( null, '{"name":"james", "age":28, "mail":"james@163.com"}');

JSON 函数

json_extract 抽取

SELECT JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]');

select json_extract(data, '$.name'), json_extract(data, '$.address')
from json_user;

JSON_OBJECT 将对象转为 json

SELECT JSON_OBJECT("name", "enjoy", "email", "enjoy.com", "age",35);INSERT INTO json_user VALUES ( NULL, JSON_OBJECT("name", "enjoy", "email", "enjoy.com", "age",35) );

json_insert 插入数据

语法:JSON_INSERT(json_doc, path, val[, path, val] …)

set @json = '{ "a": 1, "b": [2, 3]}';select json_insert(@json, '$.a', 10, '$.c', '[true, false]');update json_user set data = json_insert(data, "$.address_2", "xiangxue") where uid = 1;

json_merge 合并数据并返回

SELECT JSON_MERGE('{"name": "enjoy"}', '{"id": 47}');SELECT JSON_MERGE( JSON_EXTRACT(DATA, '$.address'), JSON_EXTRACT(DATA, '$.address_2')) FROM json_user WHERE uid = 1;

其他函数:

https://dev.mysql.com/doc/refman/5.7/en/json-function-reference.html

JSON 索引

JSON 类型数据本身 无法直接 创建索引,需要将需要索引的 JSON 数据 重新 生成虚拟列 (Virtual Columns) 之后,对 该列 进行 索引

create table test_inex_1(
data json,
gen_col varchar(10) generated always as (json_extract(data, '$.name')),
index idx (gen_col) );
insert into test_inex_1(data) values ('{"name":"king", "age":18, "address":"cs"}');
insert into test_inex_1(data) values ('{"name":"peter", "age":28, "address":"zz"}');

select * from test_inex_1;

疑问:这条 sql 查询的结果是?

select json_extract(data,"$.name") as username from test_inex_1 where gen_col="king";

SELECT JSON_EXTRACT(DATA,"$.name") AS username FROM test_inex_1 WHERE gen_col=’“king”’;

explain SELECT JSON_EXTRACT(DATA,"$.name") AS username FROM test_inex_1 WHERE gen_col="king";

拓展

自己查阅官方文档,建立虚拟列,这个列查询的时候不需要加上“”符号

create table test_index_2 (
data json,
gen_col varchar(10) generated always as ( json_unquote( json_extract(data, "$.name") )),key idx(gen_col) );
insert into test_index_2(data) values ('{"name":"king", "age":18, "address":"cs"}');
insert into test_index_2(data) values ('{"name":"peter", "age":28, "address":"zz"}');

select json_extract(data,"$.name") as username from test_index_2 where gen_col=“king”;

五、Mysql中JSON类型相关推荐

  1. MySql中json类型的使用___mybatis存取mysql中的json

    MySql中json类型的使用 MySQL从5.7.8起开始支持JSON字段,这极大的丰富了MySQL的数据类型.也方便了广大开发人员.但MySQL并没有提供对JSON对象中的字段进行索引的功能,至少 ...

  2. java处理 mysql中json类型

    当数据库中存在json类型的数据,如图 json类型的值在数据库中保存的时候,会先字母排序并加空格后保存 场景:业务上需要校验,此json字段是否跟库里的json完全匹配(验重) 原理:利用mysql ...

  3. mysql存json将utf8编码 去掉,MySQL对JSON类型UTF-8编码导致中文乱码探讨

    原文:https://www.cnblogs.com/CreateMyself/p/12587426.html 前言 继上文发表之后,结合评论意见并亲自验证最终发现是编码的问题,但是对于字符编码还是有 ...

  4. MySQL对JSON类型UTF-8编码导致中文乱码探讨

    继上文发表之后,结合评论意见并亲自验证最终发现是编码的问题,但是对于字符编码还是有点不解,于是乎,有了本文,我们来学习字符编码,在学习的过程中,我发现对于MySQL中JSON类型的编码导致数据中文出现 ...

  5. MybatisPlus处理Mysql的json类型

    MybatisPlus处理Mysql的json类型 1.在数据库表定义JSON字段: 2.在实体类加上@TableName(autoResultMap = true).在JSON字段映射的属性加上@T ...

  6. MySQL中 JSON 数据类型应用

    前言 今天接触到mysql中json数据类型,之前不知道有这个类型,今天学习一下. JSON我相信大家都已经很熟悉了,但在 MySQL中,直至 5.7 版本中,才正式引入 JSON数据类型.在次之前, ...

  7. MYSQL中 ENUM 类型

    MYSQL中 ENUM 类型的详细解释 ENUM类型 ENUM 是一个字符串对象,其值通常选自一个允许值列表中,该列表在表创建时的列规格说明中被明确地列举. 在下列某些情况下,值也可以是空串(&quo ...

  8. MYSQL中TIMESTAMP类型的默认值

    MYSQL中TIMESTAMP类型的默认值    MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样. 1.自动UPDATE 和INSERT 到当前的时间: 表: ---------- ...

  9. python mysql写入速度加快_解决python写入mysql中datetime类型遇到的问题

    解决python写入mysql中datetime类型遇到的问题 发布时间:2020-08-31 16:46:47 来源:脚本之家 阅读:89 作者:WilliamDescant 刚开始使用python ...

最新文章

  1. python爬取知乎标题_python爬知乎热榜
  2. 容器技术标准化大统一,首个开放容器标准 OCI 1.0 正式发布
  3. m3u8地址_「波波带你手动提取网页视频」04讲 Network和Elements提取m3u8链接
  4. 计算机视觉︱图像取证技术
  5. 解决【npm ERR! Unexpected end of JSON input while parsing near '...sh_time:141072930277'】方案...
  6. 阿里27个炸天的开源项目,值得收藏!
  7. 【游戏开发创新】Unity狗屁不通文章生成器阐述点赞的意义,可生成文字长图保存到本地(Unity | 附源码 | Text转Texture长图 | 详细教程)
  8. Win10华硕atk驱动怎么安装_win10台式机网卡驱动如何安装
  9. 模板引擎 - Thymeleaf
  10. STM32F205VCT6主控PLC控制器板,已批量生产
  11. Xiao Shenyang's classic lines
  12. 赵小楼《天道》《遥远的救世主》解读(84)救主文化是什么?
  13. Google Sketchup论坛
  14. W3C官网查找资源教程
  15. 再战双十一,阿里这回真的“上天”了!
  16. HASH JOIN ,MERGE JOIN ,NESTED LOOP用法效率比较
  17. phpcms v9 栏目伪静态完全自定义为栏目英文目录名
  18. 干草堆[单调队列优化DP]
  19. 实验:树莓派通过网线连接笔记本实现网络共享
  20. 百度CEO李彦宏:外界对金融风暴过于恐惧

热门文章

  1. 门店定位怎么在地图上显示_怎么在百度地图上面显示自己店面的地址,
  2. Android:使用 Intent 连接多个活动
  3. pygame.error: font not initialized的解决及init()到底干了什么
  4. 201409-1-相邻数对
  5. python字符串split()函数
  6. 5号字对应的数字字号_写好公文的几个数字口诀
  7. 「CSDN年度征文」微软学生大使、VSC中文社区、KDD CUP...2020年,我与技术社区
  8. 一个数组去重的简单实现
  9. 如何开启MySQL的慢查询日志
  10. boost linux 测试程序,Linux平台下安装 boost 库