MySQL JSON 数据类型操作
学习在MySQL中存储和查询JSON数据,使用JSON函数。 · 难度:入门 · +15XP
MySQL JSON 类型
MySQL从5.7开始原生支持JSON数据类型,提供自动验证和高效的二进制存储。通过JSON函数可以灵活提取和修改数据。
创建JSON列
CREATE TABLE users (
id INT PRIMARY KEY,
info JSON
);插入JSON数据
INSERT INTO users VALUES (1, '{"name":"Alice","age":30,"tags":["admin","user"]}');常用JSON函数
| 函数 | 说明 |
|---|---|
| JSON_EXTRACT() | 提取JSON字段值 |
| JSON_UNQUOTE() | 去除结果的引号 |
| JSON_CONTAINS() | 检查是否包含指定值 |
| JSON_ARRAY_APPEND() | 向数组追加元素 |
| JSON_SET() | 更新或插入字段 |
查询示例
-- 提取name字段
SELECT id, JSON_UNQUOTE(JSON_EXTRACT(info, '$.name')) AS name FROM users;
-- 使用简写 ->>
SELECT id, info->>'$.name' AS name FROM users;
-- 查询年龄大于25的用户
SELECT * FROM users WHERE CAST(JSON_EXTRACT(info, '$.age') AS UNSIGNED) > 25;
-- 使用JSON_CONTAINS查找tag包含admin的用户
SELECT * FROM users WHERE JSON_CONTAINS(info->'$.tags', '"admin"');
索引JSON列
可以在JSON列的虚拟列上创建索引:
ALTER TABLE users ADD COLUMN age INT GENERATED ALWAYS AS (info->>'$.age') STORED;
CREATE INDEX idx_age ON users(age);练习提示
创建一个包含JSON列的表,插入复杂嵌套数据,练习提取和更新操作。