mysql5.7 新增的json字段类型用法实例分析
MySQL 5.7 以后版本新增了 JSON 数据类型,可以将 JSON 对象存储为一个单独的类型。在处理数据时,提供方便快捷的方式处理 JSON 数据,使得查询和读取 JSON 数据比以前更加容易。下面将从语法、创建、插入、查询等方面介绍 MySQL 5.7 中新增的 JSON 数据类型。
1. 语法
JSON 数据类型的语法如下:
JSON [BINARY] [(length)]
其中,BINARY 表示二进制,length 表示长度,默认为 65,535。
2. 创建JSON字段类型
创建一张包含 JSON 字段类型的表,语法如下:
CREATE TABLE table_name (
column_name JSON [BINARY] [(length)]
);
3. 插入JSON数据
插入 JSON 数据方法如下(注意 JSON 数据需要使用双引号括起来):
INSERT INTO table_name (column_name) VALUES('{"key1": value1, "key2": value2}');
4. 查询JSON数据
在查询 JSON 数据时,可以使用 JSON 函数来提取数据,如下:
SELECT JSON_EXTRACT(column_name, '$.key1') FROM table_name;
5. 更新JSON数据
在更新 JSON 数据时,可以使用 UPDATE 语句,如下:
UPDATE table_name SET column_name = JSON_SET(column_name, '$.key1', new_value) WHERE condition;
6. 删除JSON数据
在删除 JSON 数据时,可以使用 DELETE 语句,如下:
UPDATE table_name SET column_name = JSON_REMOVE(column_name, '$.key1') WHERE condition;
以学生表为例,假如我们需要存储每个学生所选课程及成绩,每个学生的信息如下:
{"name": "张三", "age": 20, "gender": "female", "course": [{"courseName": "数学", "score": 80}, {"courseName": "语文", "score": 90}]}
具体操作如下:
1. 创建表
CREATE TABLE student (
stu_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
info JSON
);
2. 插入数据
INSERT INTO student(info) VALUES('{"name": "张三", "age": 20, "gender": "female", "course": [{"courseName": "数学", "score": 80}, {"courseName": "语文", "score": 90}]}');
3. 查询数据
查找学生总成绩,用到了 JSON 函数 JSON_TABLE 函数,具体语法如下:
SELECT sum(score) FROM student, JSON_TABLE(info, '$.course[*]' COLUMNS (score INT PATH '$.score')) AS courses;
4. 更新数据
假如要将张三的数学成绩更新为 90 分,具体操作如下:
UPDATE student SET info = JSON_SET(info, '$.course[0].score', 90) WHERE stu_id = 1;
5. 删除数据
假如要删除张三的语文成绩,具体操作如下:
UPDATE student SET info = JSON_REMOVE(info, '$.course[1]') WHERE stu_id = 1;
上述表格的内容和操作只是一个简单的示例,实际应用中JSON数据类型也可以应用于较为复杂的数据模型,如部分 NoSQL 中常见的嵌套、重复或复杂的数据结构,具体应用需要根据场景需求进行相应的实践和调整。
总的来说,MySQL 5.7 引入 JSON 数据类型,可以方便地管理 JSON 数据,提供了更加简便的数据存储和查询方式。同时,因为 JSON 数据类型的使用取决于对数据的结构和性质的理解,所以在使用中要结合实际的数据处理场景,灵活应用。
