MySQL 从 5.7.8 版本开始原生支持 JSON 数据类型,提供了丰富的 JSON 处理功能。
JSON 数据类型:
JSON
数据类型,用于存储 JSON 格式的数据JSON 函数:
JSON_ARRAY()
, JSON_OBJECT()
JSON_EXTRACT()
或 ->
操作符JSON_SET()
, JSON_INSERT()
, JSON_REPLACE()
, JSON_REMOVE()
JSON_CONTAINS()
, JSON_KEYS()
, JSON_LENGTH()
等JSON 路径表达式:
$.store.book[0].title
的路径语法索引支持:
-- 创建包含 JSON 列的表
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
attributes JSON
);
-- 插入 JSON 数据
INSERT INTO products (name, attributes)
VALUES ('Laptop', '{"brand": "Dell", "specs": {"cpu": "i7", "ram": "16GB"}}');
-- 查询 JSON 字段
SELECT name, attributes->'$.brand' AS brand FROM products;
-- 更新 JSON 字段
UPDATE products
SET attributes = JSON_SET(attributes, '$.specs.ram', '32GB')
WHERE id = 1;
-- 在 JSON 字段上创建索引 (MySQL 8.0+)
ALTER TABLE products ADD COLUMN brand VARCHAR(50)
GENERATED ALWAYS AS (attributes->>'$.brand') STORED;
CREATE INDEX idx_brand ON products(brand);
JSON_MERGE_PATCH
, JSON_MERGE_PRESERVE
)JSON_ARRAYAGG
, JSON_OBJECTAGG
)MySQL 的 JSON 支持使得它能够很好地处理半结构化数据,适合需要灵活数据模型的场景。