除此之外,我们也可以将 JSON 数据转换为关系型数据 。例如:
select emp_id, jt.*from employee_json, json_table(emp_info, '$' columns (emp_name varchar(50) path '$.emp_name', sex varchar(10) path '$.sex', dept_id integer path '$.dept_id', manager integer path '$.manager', hire_date date path '$.hire_date', job_id integer path '$.job_id', salary integer path '$.income[0].salary', bonus integer path '$.income[1].bonus', email varchar(100) path '$.email') ) jtlimit 3;emp_id|emp_name |sex|dept_id|manager|hire_date |job_id|salary|bonus|email |------|----------|---|-------|-------|----------|------|------|-----|-------------------| 1|刘备 |男 | 1| |2000-01-01| 1| 33000|10000|liubei@shuguo.com | 2|关羽 |男 | 1| 1|2000-01-01| 2| 26000|10000|guanyu@shuguo.com | 3|张飞 |男 | 1| 1|2000-01-01| 2| 24000|10000|zhangfei@shuguo.com|
其中,$ 表示将整个 emp_info 作为数据行的来源;COLUMNS 定义了字段类型及其数据的来源,PATH 同样使用 SQL/JSON 路径表达式 。
反之,我们也可以通过 SQL 函数将关系型数据转换为 JSON 数据 。例如:
select json_object('emp_name', emp_name, 'sex', sex, 'income', json_array(json_object('salary', salary), json_object('bonus', bonus)) ) AS jofrom employeelimit 3;jo |-------------------------------------------------------------------------------------|{"sex": "男", "income": [{"salary": 30000.00}, {"bonus": 10000.00}], "emp_name": "刘备"}{"sex": "男", "income": [{"salary": 26000.00}, {"bonus": 10000.00}], "emp_name": "关羽"}{"sex": "男", "income": [{"salary": 24000.00}, {"bonus": 10000.00}], "emp_name": "张飞"}|
其中,JSON_OBJECT 和 JSON_ARRAY 函数可以将表中的数据构造成 JSON 对象和数组 。
不仅如此,使用 SQL 语句也可以对 JSON 节点数据进行 DML 操作,不再介绍具体案例 。关于 MySQL 文档存储的详细介绍可以参考这篇文章 。
推荐阅读
- iOS|iOS 16前的最后一个版本!iOS 15.5登场:一文了解详情
- 打通前后端,这款效能提升开源“神器”你一定要了解
- 一文读懂Redis的dict字典数据结构
- 新疆维吾尔自治区|一文带你了解和田玉“前世今生”
- ARM|AMD|X86/i386|AARCH64 #了解一下#操作系统:CPU架构
- 深入了解定制 Bash
- 使用Java带你打造一款简单的外卖系统
- 满族姓氏文化你了解多少
- 痛风饮食治疗注意事项
- 上海市|现在不要去上海这边打工,为什么呢?相信大家都了解