MySQL JSON的支持

本文介绍了MySQL从5.7.8版本开始支持JSON数据存储和查询的特性,详细讲解了如何创建JSON表、搜索和修改JSON数据,以及如何创建索引。通过示例展示了JSON_CONTAINS、JSON_EXTRACT、JSON_ARRAY_APPEND等函数的使用,并解释了`->`、`->>`、`json_unquote`和`JSON_QUOTE`等操作符和函数的功能。
摘要由CSDN通过智能技术生成

前言

mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习nosql数据库。
JSON的定义:
中文官网

创建表

CREATE TABLE table_name (
    id INT NOT NULL AUTO_INCREMENT, 
    json_col JSON,
    PRIMARY KEY(id)
);

创建JSON

  • JSON_ARRAY([val[, val] …])
  • JSON_OBJECT([key, val[, key, val] …])
INSERT INTO
    table_name (json_col) 
VALUES
    ('{"City": "Galle", "Description": "Best damn city in the world"}');

上面这个SQL语句,主要注意VALUES后面的部分,由于json格式的数据里,需要有双引号来标识字符串,所以,VALUES后面的内容需要用单引号包裹。

搜索JSON

  • JSON_CONTAINS(target, candidate[, path]) 判断指定JSON文档是否存在与目标文档中 – 返回 0、1
  • JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] …) 判断指定文档的指定路径下是否有值,相比JSON_CONTAINS,本函数适用于判断JSON的多个路径下是否包含一个(“one”)或者全部(“all”)包含。
  • JSON_EXTRACT(json_doc, path[, path] …) 提取JSON文档中指定属性的值
mysql> SET @j = '{"a": 1, "b": 2, "c": {"d": 4}}';
mysql> SET @j2 = '1';
mysql> SELECT JSON_CONTAINS(@j, @j2, '$.a');
+-------------------------------+
| JSON_CONTAINS(@j, @j2, '$.a') |
+-------------------------------+
|                             1 |
+-------------------------------+

mysql> SET @j = '{"a": 1, "b": 2, "c": {"d": 4}}';
mysql> SELECT JSON_CONTAINS_PATH(@j, 'one', '$.a', '$.e');
+---------------------------------------------+
| JSON_CONTAINS_PATH(@j, 'one', '$.a', '$.e') |
+---------------------------------------------+
|                                           1 |
+---------------------------------------------+

mysql> SELECT JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]');
+--------------------------------------------+
| JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]') |
+--------------------------------------------+
| 20                                         |
+--------------------------------------------+

修改JSON

  • JSON_ARRAY_APPEND(json_doc, path, val[, path, val] …) 在指定JSON数组指定位置的后面新增对象,返回结果
  • JSON_ARRAY_INSERT(json_doc, path, val[, path, val] …) 在指定JSON数组指定位置新增对象,返回结果
  • JSON_INSERT(json_doc, path, val[, path, val] …) 在指定JSON对象新增属性,返回结果
  • JSON_REMOVE(json_doc, path[, path] …) 在指定JSON对象移除属性,返回结果
  • JSON_REPLACE(json_doc, path, val[, path, val] …)
  • JSON_SET(json_doc, path, val[, path, val] …)
mysql> SET @j = '["a", ["b", "c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值