Mysql使用json数据类型

Json类型使用

基础使用

  1. 创建表
create table json_user (
uid int auto_increment, data json, primary key(uid)
);
  1. 插入数据
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(data, '$.name'),JSON_EXTRACT(data, '$.address') from json_user

在这里插入图片描述

JSON_OBJECT 将对象转为 json

insert into json_user values(null,json_object("name", "zls", "email", "xxx@qq.com", "age",3))

在这里插入图片描述

json_insert 插入数据

update json_user set data = json_insert(data, "$.address_2", "beijing") where uid = 1;

在这里插入图片描述

json_merge 合并数据并返回

select json_merge(json_extract(data,'$.address_2'),json_extract(data,'$.name')) from json_user where uid = 

在这里插入图片描述

json_replace替换数据

update json_user set data = json_replace(data,'$.address_2',"上海") where uid = 1;

在这里插入图片描述

其他函数

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

JSON 索引

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

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"}');

explain select json_extract(data,"$.name") as username from test_index_2 where gen_col='king'

在这里插入图片描述

JSON_UNQUOTE函数就是去掉引号的功能,将原json串的引号去掉转成string类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值