MySQL JSON 数据类型实战:文档存储与查询优化
MySQL 5.7+ 支持原生 JSON,可存储半结构化数据并高效查询。
1. 创建表与插入数据
CREATE TABLE user_ext (
id INT PRIMARY KEY,
info JSON
);
INSERT INTO user_ext VALUES (1, '{"name": "张三", "age": 30, "tags": ["vip", "developer"]}');2. 查询 JSON 字段
-- 提取值
SELECT id, info->'$.name' AS name, info->'$.age' AS age FROM user_ext;
-- 条件查询(使用虚拟列或函数索引)
SELECT * FROM user_ext WHERE JSON_EXTRACT(info, '$.age') > 25;3. 索引优化(MySQL 8.0 函数索引)
CREATE INDEX idx_age ON user_ext ((CAST(info->'$.age' AS UNSIGNED)));4. 更新 JSON
-- 新增/修改字段
UPDATE user_ext SET info = JSON_SET(info, '$.city', '北京') WHERE id = 1;
-- 删除字段
UPDATE user_ext SET info = JSON_REMOVE(info, '$.age') WHERE id = 1;
-- 数组操作
UPDATE user_ext SET info = JSON_ARRAY_APPEND(info, '$.tags', 'leader') WHERE id = 1;JSON 类型灵活应用,适合存储配置、用户属性等非固定结构数据。
