数据库中用JSON数据存储

1 创建数据库

复制代码
CREATE TABLE test (
    data JSON
);

1 插入JSON数据的方法

(1)

复制代码
INSERT INTO test (data) VALUES ('{"name":"李明","age":12}');

(2)

复制代码
INSERT INTO test (data) VALUES (JSON_OBJECT('name','lisi','age',54));

(3) 插入数组

复制代码
INSERT INTO test (data) VALUES (JSON_OBJECT('name','lisi','age',54, 'hobby', JSON_ARRAY('旅行', '散步')));

2 查询JSON数据的方法

(1) 查询数据

复制代码
select JSON_EXTRACT(data,'$.age') from test

(2) 查询数组

<1> 查询单个

复制代码
select data->'$.hobby' from test

select JSON_EXTRACT(data,'$.hobby[1]') from test

如果查询出来的数据不想要双引号 可以用下面的形式

复制代码
select data->>'$.name' from test

<2> 查询多个

复制代码
select JSON_EXTRACT(data,'$.hobby[0 to 1]') from test

(3)查询是否存在

复制代码
select * from test where JSON_CONTAINS(data,JSON_OBJECT('name','lisi'))

(4) 只含有一个键就返回数据/全部含有就返回数据

复制代码
select * from test where JSON_CONTAINS_path(data,'one','$.hobby','$.name')

select * from test where JSON_CONTAINS_path(data,'all','$.hobby','$.name')

(5) 只要含有一个相关数据 返回它的key

复制代码
select JSON_SEARCH(data,'one','旅行') from test

3 修改JSON数据的方法

(1) 更新

复制代码
UPDATE test
SET data = JSON_SET(data, '$.hobby[0]', '吃饭')
WHERE id = 4;

(2) 增加(在原有JSON数据中)

复制代码
UPDATE test
SET data = JSON_INSERT(data, '$.hobby[2]', '看电影','$.gender','男')
WHERE id = 4;

(3) 替换

复制代码
UPDATE test
SET data = JSON_REPLACE(data, '$.hobby[2]', '休息')
WHERE id = 4;

(4) 移除

复制代码
UPDATE test
SET data = JSON_REMOVE(data, '$.name')
WHERE id = 4;
相关推荐
Zzzzmo_1 分钟前
Maven+SpringBoot
java·spring boot
oradh7 分钟前
Oracle CTAS+rename 表重建方法操作总结
数据库·oracle·ctas·oracle表重建方法
Dovis(誓平步青云)10 分钟前
同一条路线在手机和平板上怎样换一种排版
android·开发语言·数据库·智能手机·音视频
thefool11226612 分钟前
无重复字符的最长子串
java
czhc114007566314 分钟前
EF Core 数据访问三件套:池化 · 仓储 · 不跟踪
数据库
whcyhhh16 分钟前
头歌实践教学平台:大数据存储2023(十三1)
大数据·数据库·python
2601_9621896020 分钟前
【SpringCloud】Gateway
java·spring cloud·gateway
TDengine (老段)21 分钟前
TDengine 应用案例 — IT 运维与可观测性
大数据·运维·数据库·制造·时序数据库·tdengine·涛思数据
疯狂打码的少年22 分钟前
【数据库技术】关系代数连接运算(等值连接/自然连接/外连接)
jvm·数据库·笔记·oracle
夜郎king22 分钟前
基于Java的高德地图公交路线检索服务集成实践
java·智慧城市·高德地图api·县域交通智能化