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;