MySQL8 JSON 使用
所属分类 mysql
浏览量 29
MySQL8.0 增强了对 JSON 数据类型的支持,
提供了类似 NoSQL 数据库的功能,同时保持了传统关系型数据库的优势。
处理结构化数据和半结构化数据
主要 JSON 功能
JSON 数据类型:
专门用于存储 JSON 文档
提供自动验证,确保存储的是有效的 JSON
JSON 函数:
创建:JSON_ARRAY(), JSON_OBJECT()
查询:JSON_EXTRACT() 或 -> 操作符
修改:JSON_SET(), JSON_INSERT(), JSON_REPLACE()
删除:JSON_REMOVE()
其他:JSON_CONTAINS(), JSON_KEYS() 等
JSON 路径表达式:
使用类似 $.user.address.city 的路径访问嵌套数据
使用示例
-- 创建带JSON列的表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
profile JSON
);
-- 插入JSON数据
INSERT INTO users (name, profile) VALUES (
'John Doe',
JSON_OBJECT(
'age', 30,
'email', 'john@example.com',
'address', JSON_OBJECT(
'street', '123 Main St',
'city', 'New York'
),
'hobbies', JSON_ARRAY('reading', 'hiking')
)
);
-- 查询JSON字段
SELECT name, profile->'$.address.city' AS city FROM users;
-- 更新JSON字段
UPDATE users
SET profile = JSON_SET(profile, '$.age', 31, '$.address.city', 'Boston')
WHERE id = 1;
-- 使用JSON路径创建索引
ALTER TABLE users ADD INDEX idx_city ((CAST(profile->'$.address.city' AS CHAR(50))));
优势
灵活的数据模型:可以混合关系型和文档型数据
高性能:优化的JSON存储和索引
完整的事务支持
丰富的查询能力:结合SQL和JSON查询
上一篇
下一篇
spring线程池 ThreadPoolTaskExecutor 配置
Apache Bench (ab) 性能测试
《财富与周期:宏观经济第一课》笔记
国际局势常用术语
《财富与周期:宏观经济第一课》 精华
五月花号(Mayflower)与 美国历史的开端