mysql 5.7.8开始支持json字段类型,并提供了不少内置函数,通过计算列,甚至还可以直接索引json中的数据!
如果还不了解基础的可参看 mysql json快速入门
为何说json原生支持非常关键呢,不是可以自己在客户端处理json然后保存字符串到mysql不就完了?
来看一看,原生支持到底有什么意义
create table t (
id int not null,
js json not null,
PRIMARY KEY (id)
)
1.可以直接过滤记录
select * from t where js->'$.a'=100
避免了要将所有记录都读取出来,在客户端进行过滤。
2.可以直接update,而无须先读取
update t set js=json_set(js,'$.a',js->'$.a'+1) where id=1
单条原子更新
update t,t1 set t.js=json_merage(t.js,t1.js) where t.id=t1.id
跨表更新
3.可以在一条SQL中完成多条纪录的修改!
update t set js=json_set(js,'$.a',123)