数据库中用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;
相关推荐
MepSUxjvy几秒前
拆解 OpenHands(11)--- Runtime主要组件
java·windows·microsoft
shuair12 分钟前
redis红锁Redlock
数据库·redis·bootstrap
小新同学^O^13 分钟前
简单学习 --> 限流和熔断
数据库·python·学习
专注API从业者13 分钟前
用 Open Claw + 淘宝商品接口,快速实现电商商品监控与智能选品(附完整代码)
大数据·前端·数据结构·数据库
ch.ju14 分钟前
Java Programming Chapter 4——Member method
java·开发语言
笨蛋不要掉眼泪17 分钟前
Java并发编程:ReentrantLock与AQS原理剖析
java·开发语言·并发
兰令水21 分钟前
topcode【随机算法题】【2026.5.22打卡-java版本】
java·算法·leetcode
Dicky-_-zhang21 分钟前
敏感数据加密存储实战
java·jvm
TDengine (老段)23 分钟前
TDengine 虚拟表实现原理
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
吃好睡好便好27 分钟前
用if…elseif…end语句输出成绩等级
开发语言·前端·javascript·数据库·学习·matlab·信息可视化