外观
MySQL使用json
mysql 5.7 及以上 支持 json 类型
mysql json 内置函数
JSON_OBJECT("key","value","key1","value1"):构建json对象 JSON_ARRAY("value","value1","value2"):构建数组
JSON_EXTRACT(列名,$.key):从json对象中拿到指定key的值 JSON_CONTAINS(列名,'{"k":"v"}'):查询json对象中是否存在指定kv
JSON_INSERT():在json对象中插入新的值,如果已存在,不会覆盖 JSON_SET():设置json对象中指定对象的值,如果已存在,覆盖 JSON_REPLACE():替换指定对象的值
JSON_REMOVE(列名,$.key):移除对象
实例
1.创建表
CREATE TABLE tablejson( id int NOTE NULL AUTO_INCREMENT PRIMARY key , jjson json )2.新增数据(JSON_OBJECT()、JSON_ARRAY())
INSERT INTO tablejson(`jjson`) VALUES(JSON_OBJECT("A", 1, "B", 2, "CCC", JSON_ARRAY(1,2,3))); INSERT INTO tablejson(`jjson`) VALUES('{"A": "aa", "B": "bb", "CCC": ["a", "b", "c"]}');
3.更新数据(JSON_INSERT()、JSON_SET())
`UPDATE tablejson set jjson = JSON_INSERT(jjson, '.A′,11111,′.D',33333) where id =1; -- 未替换已存在的

UPDATE tablejson set jjson = JSON_SET(jjson, '$.A', 11111,'$.E',233333) where id =1; -- 替换存在的,可多个参数![[Pasted image 20231122110112.png]]
UPDATE tablejson set jjson = JSON_REMOVE(jjson, '$.E','$.CCC') where id =1; -- JSON_REMOVE() -- 移除指定的key,可多个

4 查询、删除数据
select JSON_EXTRACT(jjson,'$.A') as A from `tablejson` select jjson->>'$.A' as A from `tablejson` -- 结果一样 JSON_EXTRACT()

`select jjson->>'$.A' from `tablejson` where JSON_CONTAINS(jjson,'{"E": 233333}') -- JSON_CONTAINS()`

