MySQL 的原生 JSON 操作

MySQL 的原生 JSON 操作

MySQL 从 5.7 版本开始添加了 JSON 的原生操作,字段类型添加了一个 JSON 类型,可对存入的 JSON 数据进行增删改查操作。

创建表

mysql> CREATE TABLE `test_json` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `json` json NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

插入整个 JSON 文档

mysql> INSERT INTO `test_json` (`json`) VALUES ('{"name": "Tom", "age": 18}');

结果:

+----+------------------------------+
| id | json                         |
+----+------------------------------+
|  1 | {"age": 18, "name": "Tom"}   |
+----+------------------------------+

新增 JSON 字段

mysql> UPDATE `test_json` SET `json` = JSON_INSERT(`json`, '$.sex', 'M');

结果:

+----+------------------------------------------+
| id | json                                     |
+----+------------------------------------------+
|  1 | {"age": 18, "sex": "M", "name": "Tom"}   |
+----+------------------------------------------+

删除 JSON 字段

mysql> UPDATE `test_json` SET `json` = JSON_REMOVE(`json`, '$.sex');

结果:

+----+------------------------------+
| id | json                         |
+----+------------------------------+
|  1 | {"age": 18, "name": "Tom"}   |
+----+------------------------------+

修改 JSON 字段

mysql> UPDATE `test_json` SET `json` = JSON_REPLACE(`json`, '$.name', 'Timmy');

结果:

+----+------------------------------+
| id | json                         |
+----+------------------------------+
|  1 | {"age": 18, "name": "Timmy"} |
+----+------------------------------+

根据 JSON 字段查询

mysql> SELECT * FROM `test_json` WHERE `json`->'$.name' = 'Timmy';
+----+------------------------------+
| id | json                         |
+----+------------------------------+
|  1 | {"age": 18, "name": "Timmy"} |
+----+------------------------------+
1 row in set

解析查询出来的 JSON 数据

mysql> SELECT
    JSON_EXTRACT(`json`, '$.name') AS `name`,
    JSON_EXTRACT(`json`, '$.age') AS `age`
FROM `test_json`;
+---------+-----+
| name    | age |
+---------+-----+
| "Timmy" | 18  |
+---------+-----+
1 row in set

查询 JSON 字段的所有键

mysql> SELECT JSON_KEYS(`json`) FROM `test_json`;
+-------------------+
| JSON_KEYS(`json`) |
+-------------------+
| ["age", "name"]   |
+-------------------+
1 row in set

原文链接:http://www.fullstack.pub/doc/25

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值