1. json数据类型介绍
在MySQL中,json是一种新的数据类型,它可以用来存储文本格式的JSON(JavaScript Object Notation)数据,json是一种轻量级的数据交换格式,同时也易于阅读和编写。
json数据类型的引入可以使得在MySQL中存储半结构化数据变得更加容易。
-- 创建一张带有JSON字段的表
CREATE TABLE user_info (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
age INT,
info JSON
);
2. json数据类型的操作
2.1 插入json数据类型
当要插入一条包含JSON数据类型的数据时,可以直接在INSERT INTO语句中使用JSON对象(或JSON数组)来插入数据。我们可以看下面的例子:
-- 插入ID、名称、年龄、信息四个字段,其中信息对应JSON类型,使用单引号来表示JSON对象
INSERT INTO user_info (name, age, info) VALUES ('zhangsan', 20, '{"tel": "123456789", "email": "zhangsan@123.com"}');
2.2 查询json数据类型
要查询JSON字段的值,可以使用箭头(->)或双箭头(->>)来提取JSON键的值。
->是用于提取JSON对象的值,->>是用于提取JSON数组的值。通过一些简单的示例来深入了解这两者的使用方法。
在下面的示例中,将使用以下JSON数据:
INSERT INTO user_info (name, age, info) VALUES ('zhangsan', 20, '{"tel": "123456789", "email": "zhangsan@123.com"}');
例如,我们可以使用 -> 操作符来提取电话:
-- 获取电话号码
SELECT info->'$.tel' FROM user_info WHERE id=1;
结果将返回(引号内的内容):
"123456789"
或者,我们使用 ->> 操作符来提取邮件地址:
-- 获取邮箱地址
SELECT info->>'$.email' FROM user_info WHERE id=1;
结果将返回(引号内的内容):
"zhangsan@123.com"
2.3 更新json数据类型
要更新JSON字段或数组的内容,可以使用 REPLACE 或 JSON_SET函数。
使用 REPLACE:
-- 将新的版本号存储在已有的JSON值中
UPDATE user_info SET info = JSON_REPLACE(info, '$.ver', '2.0') WHERE id=1;
使用 JSON_SET:
-- 设置新的版本号
UPDATE user_info SET info = JSON_SET(info, '$.ver', 'v2.0') WHERE id=1;
在上述示例中,我们使用JSON_REPLACE函数更新了信息JSON对象中的版本号,使用JSON_SET函数对版本号进行设置。
2.4 删除json数据类型
使用 JSON_REMOVE 函数可以删除 JSON 对象或数组的某些键值。
例如:
-- 删除电话号码
UPDATE user_info SET info = JSON_REMOVE(info, '$.tel') WHERE id=1;
在此示例中,我们使用JSON_REMOVE函数来删除信息对象中的"tel"键和它的值。
3. 总结
本文介绍了MySQL中json的使用方式,展示了使用JSON数据类型在MySQL中存储和管理半结构化数据的一些情况。
我们学习了如何插入、查询、更新和删除JSON数据,这些操作都在 MySQL 中是非常直观和方便的。