MySQL虚拟列技术
参考文章:https://blog.csdn.net/weixin_42531779/article/details/113592374
1、查看mysql版本,需要大于5.7版本以上
select VERSION();
2、创建表
CREATE TABLE user_info (
uid INT(11) NOT NULL AUTO_INCREMENT,
uname VARCHAR(20) NOT NULL DEFAULT '',
other_info json,
PRIMARY KEY(uid)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
3、插入json数据两种方式
INSERT INTO user_info (uname,other_info) VALUES ('first user',JSON_OBJECT("age",22,"real_name","Wayne","sex","男"));
INSERT INTO user_info (uname,other_info) VALUES ('second user','{"age":21, "real_name":"Jone", "sex":"女", "height":170, "weight":48}');
JSON_OBJECT函数
4、查询数据的方式两种方式
select * from user_info where other_info->'$.age'=22 and other_info->'$.real_name'='Wayne'
select * from user_info where json_extract(other_info,'$.age')=21 and other_info->'$.weight'=48;
5、新增虚拟列,自动映射对应值
ALTER TABLE user_info ADD COLUMN v_age TINYINT(3) UNSIGNED GENERATED ALWAYS AS (other_info->'$.age');
ALTER TABLE user_info ADD INDEX v_age(v_age);
UPDATE user_info SET other_info=json_set(other_info,'$.age','24') WHERE uid=1;
explain select * from user_info where v_age=24;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix