MySQL——json类型的应用

发布时间 2023-05-31 11:38:16作者: 疯狂的妞妞

在制作动态报表的时候,如果需要字段灵活配置,用 json 存储数据,可以让查询变得非常简单。

 

业务场景:

绩效系统中,需要从10个系统中抓取不同数据,并且性能不会太高,但是用于计算的只有其中 3 个,用哪 3 个看领导心情,设计一张表存储抓取到的数据。

1、傻瓜式做法,设计一张表,从字段 1 列到字段 3,用于存储抓到的数据(更过分地,直接预留10个字段);
2、想要优化好,数据用到啥取啥,取到的数据用 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';