五、Mysql中JSON类型
文章目录
- 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类型相关推荐
- MySql中json类型的使用___mybatis存取mysql中的json
MySql中json类型的使用 MySQL从5.7.8起开始支持JSON字段,这极大的丰富了MySQL的数据类型.也方便了广大开发人员.但MySQL并没有提供对JSON对象中的字段进行索引的功能,至少 ...
- java处理 mysql中json类型
当数据库中存在json类型的数据,如图 json类型的值在数据库中保存的时候,会先字母排序并加空格后保存 场景:业务上需要校验,此json字段是否跟库里的json完全匹配(验重) 原理:利用mysql ...
- mysql存json将utf8编码 去掉,MySQL对JSON类型UTF-8编码导致中文乱码探讨
原文:https://www.cnblogs.com/CreateMyself/p/12587426.html 前言 继上文发表之后,结合评论意见并亲自验证最终发现是编码的问题,但是对于字符编码还是有 ...
- MySQL对JSON类型UTF-8编码导致中文乱码探讨
继上文发表之后,结合评论意见并亲自验证最终发现是编码的问题,但是对于字符编码还是有点不解,于是乎,有了本文,我们来学习字符编码,在学习的过程中,我发现对于MySQL中JSON类型的编码导致数据中文出现 ...
- MybatisPlus处理Mysql的json类型
MybatisPlus处理Mysql的json类型 1.在数据库表定义JSON字段: 2.在实体类加上@TableName(autoResultMap = true).在JSON字段映射的属性加上@T ...
- MySQL中 JSON 数据类型应用
前言 今天接触到mysql中json数据类型,之前不知道有这个类型,今天学习一下. JSON我相信大家都已经很熟悉了,但在 MySQL中,直至 5.7 版本中,才正式引入 JSON数据类型.在次之前, ...
- MYSQL中 ENUM 类型
MYSQL中 ENUM 类型的详细解释 ENUM类型 ENUM 是一个字符串对象,其值通常选自一个允许值列表中,该列表在表创建时的列规格说明中被明确地列举. 在下列某些情况下,值也可以是空串(&quo ...
- MYSQL中TIMESTAMP类型的默认值
MYSQL中TIMESTAMP类型的默认值 MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样. 1.自动UPDATE 和INSERT 到当前的时间: 表: ---------- ...
- python mysql写入速度加快_解决python写入mysql中datetime类型遇到的问题
解决python写入mysql中datetime类型遇到的问题 发布时间:2020-08-31 16:46:47 来源:脚本之家 阅读:89 作者:WilliamDescant 刚开始使用python ...
最新文章
- python爬取知乎标题_python爬知乎热榜
- 容器技术标准化大统一,首个开放容器标准 OCI 1.0 正式发布
- m3u8地址_「波波带你手动提取网页视频」04讲 Network和Elements提取m3u8链接
- 计算机视觉︱图像取证技术
- 解决【npm ERR! Unexpected end of JSON input while parsing near '...sh_time:141072930277'】方案...
- 阿里27个炸天的开源项目,值得收藏!
- 【游戏开发创新】Unity狗屁不通文章生成器阐述点赞的意义,可生成文字长图保存到本地(Unity | 附源码 | Text转Texture长图 | 详细教程)
- Win10华硕atk驱动怎么安装_win10台式机网卡驱动如何安装
- 模板引擎 - Thymeleaf
- STM32F205VCT6主控PLC控制器板,已批量生产
- Xiao Shenyang's classic lines
- 赵小楼《天道》《遥远的救世主》解读(84)救主文化是什么?
- Google Sketchup论坛
- W3C官网查找资源教程
- 再战双十一,阿里这回真的“上天”了!
- HASH JOIN ,MERGE JOIN ,NESTED LOOP用法效率比较
- phpcms v9 栏目伪静态完全自定义为栏目英文目录名
- 干草堆[单调队列优化DP]
- 实验:树莓派通过网线连接笔记本实现网络共享
- 百度CEO李彦宏:外界对金融风暴过于恐惧
热门文章
- 门店定位怎么在地图上显示_怎么在百度地图上面显示自己店面的地址,
- Android:使用 Intent 连接多个活动
- pygame.error: font not initialized的解决及init()到底干了什么
- 201409-1-相邻数对
- python字符串split()函数
- 5号字对应的数字字号_写好公文的几个数字口诀
- 「CSDN年度征文」微软学生大使、VSC中文社区、KDD CUP...2020年,我与技术社区
- 一个数组去重的简单实现
- 如何开启MySQL的慢查询日志
- boost linux 测试程序,Linux平台下安装 boost 库