mysql Json 字段操作

MySQL 从 5.7 版本开始支持 JSON 数据类型。JSON 数据类型可以存储 JSON 格式的数据,包括字符串、数值、数组、对象等。

创建 JSON 字段

要创建 JSON 字段,您可以使用 CREATE TABLE 语句。例如,要创建一个名为 users 的表,其中有一个名为 profile 的 JSON 字段,您可以使用以下语句:

1
2
3
4
5
6
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
profile JSON NOT NULL,
PRIMARY KEY (id)
);

插入 JSON 数据

要插入 JSON 数据,您可以使用 INSERT INTO 语句。例如,要插入以下 JSON 数据:

1
2
3
4
5
6
7
8
9
{
"name": "John Doe",
"age": 30,
"address": {
"street": "Main Street",
"city": "San Francisco",
"state": "CA"
}
}

您可以使用以下语句:

1
INSERT INTO users (name, profile) VALUES ("John Doe", '{"name": "John Doe", "age": 30, "address": {"street": "Main Street", "city": "San Francisco", "state": "CA"}}');

查询 JSON 数据

要查询 JSON 数据,您可以使用 SELECT 语句。例如,要查询 users 表中所有用户的姓名和年龄,您可以使用以下语句:

1
SELECT name, JSON_EXTRACT(profile, '$.age') AS age FROM users;

这将返回以下结果:

1
2
3
name | age
------- | --------
John Doe | 30

您还可以使用 JSON_QUERY 函数来查询 JSON 数据中的特定属性。例如,要查询 users 表中所有用户的地址,您可以使用以下语句:

1
SELECT name, JSON_QUERY(profile, '$.address') AS address FROM users;

这将返回以下结果:

1
2
3
name | address
------- | --------
John Doe | {"street": "Main Street", "city": "San Francisco", "state": "CA"}

更新 JSON 数据

要更新 JSON 数据,您可以使用 UPDATE 语句。例如,要更新 users 表中 John Doe 的地址,您可以使用以下语句:

1
UPDATE users SET profile = JSON_SET(profile, '$.address.city', 'Los Angeles') WHERE name = 'John Doe';

这将更新 John Doe 的地址为 {street": "Main Street", "city": "Los Angeles", "state": "CA"}

删除 JSON 数据

要删除 JSON 数据,您可以使用 DELETE 语句。例如,要删除 users 表中 John Doe 的地址,您可以使用以下语句:

1
DELETE FROM users WHERE name = 'John Doe';

这将从 users 表中删除 John Doe 的记录。

JSON 字段的其他操作

MySQL 还支持以下 JSON 字段的操作:

  • JSON_TYPE():返回 JSON 数据的类型。
  • JSON_LENGTH():返回 JSON 数据的长度。
  • JSON_CONTAINS():检查 JSON 数据是否包含指定的子字符串。
  • JSON_MERGE():合并两个 JSON 数据。
  • JSON_OBJECT():创建一个空 JSON 对象。
  • JSON_ARRAY():创建一个空 JSON 数组。