数据库中用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;
相关推荐
李兆龙的博客3 分钟前
从一到无穷大 #91:从 Habitat 看存储平台的整合与分工
数据库·人工智能·架构
木井巳10 分钟前
【记忆化搜索】斐波那契数
java·算法·leetcode·深度优先·剪枝·推荐算法
geovindu22 分钟前
java: Task Scheduler
java·开发语言·后端
神奇小梵27 分钟前
java的特殊语法点,与常规语言相异的点
java·开发语言
惜分飞30 分钟前
记录一次0丢失的ORA-00354: 损坏重做日志块标头故障恢复---惜分飞
数据库·oracle
cspttty33 分钟前
2026秋招供应链分析师技能栈:SQL、Excel、BI与业务分析
数据库·sql·excel
无巧不成书021842 分钟前
Tomcat 下载后使用全指南:解压、环境配置、启动验证与常见问题排查
java·tomcat
Wang's Blog1 小时前
Java框架快速入门: Spring Security+OAuth2之多因子认证缓存服务
java·spring·缓存
Omics Pro1 小时前
澳科大:自进化AI虚拟细胞
数据库·人工智能·算法·机器学习·自然语言处理
ShineWinsu1 小时前
对于MySQL:索引的解析
linux·数据库·mysql·面试·笔试·索引·海量数据