欢迎访问宙启技术站
智能推送

mysql5.7 新增的json字段类型用法实例分析

发布时间:2023-05-17 03:16:23

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 数据类型的使用取决于对数据的结构和性质的理解,所以在使用中要结合实际的数据处理场景,灵活应用。