mysql - json类型的应用
在制作动态报表的时候,如果需要字段灵活配置,用 json 存储数据,可以让设计变得非常简单。
业务场景:
绩效系统中,需要从 10 个系统中抓取不同数据,每次只会使用其中 n 个,具体哪几个看领导心情,设计一张表存储抓取到的数据。
- 傻瓜式做法,设计一张表,从字段 1 列到字段 10,数据保存在固定的列。
这种设计可行,但是不利于扩展,回头多一个,有 11 个数据源,大概率要改表了。 - 存储数据方面,json 方案几乎是完美的,因为兼容一切格式的数据。
缺点:
- 计算:比如说对 10 个值求和,就会发现代码不好写,很多东西需要放到业务代码里处理。
- 表格的每一列,数据都是基本固定的,而复杂的 json 未经过解析,很难直观看出包含哪些内容。
CREATE TABLE `test_json` (
`id` varchar(32) NOT NULL,
`content` json DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 设置内容
UPDATE test_json SET content='{"age":20, "name":"xiaoming"}' WHERE id = 'test';
-- 查询 json 中的一个字段
SELECT content->'$.name' FROM test_json where id = 'test';
-- 查询
SELECT content FROM test_json where id = 'test';
-- 更新字段
UPDATE test_json SET content = JSON_SET(content, '$.name', 'xiaodong') where id = 'test';
UPDATE test_json SET content = JSON_SET(JSON_SET(content, '$.age', 18), '$.name', 'xiaodong') where id = 'test';
-- 移除字段值
UPDATE test_json SET content = JSON_REMOVE(content, '$.name') where id = 'test';
-- 替换,原先无值,不会更新
UPDATE test_json SET content = JSON_REPLACE(content, '$.name', 'xiaoming') where id = 'test';
疯狂的妞妞 :每一天,做什么都好,不要什么都不做!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY