`

Mysql里的JSON系列操作函数

阅读更多

新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作,下面就实际体验一下

创建带有 JSON 字段的表

比如一个‘文章’表,字段包括

id、标题 title、标签 tags

一篇文章会有多个标签,tags 就可以设为 JSON 类型

建表语句如下:

CREATE TABLE `article` (

 `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,

`title` varchar(200) NOT NULL,

 `tags` json DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB;

插入数据

插入一条带有 JSON 内容的数据,执行 insert 语句:

INSERT INTO `article` (`title`, `tags`)

VALUES (

'体验 Mysql JSON',

'["Mysql", "Database"]'

);

这里插入的是一个 JOSN 数组 [“Mysql”, “Database”]

查询 article 表中的所有内容,可以看到新插入的这条数据

Mysql里的JSON系列操作函数

查询

使用 JSON 函数做两个简单的查询

1. 查找带有标签”Mysql”的所有文章

SELECT * FROM `article`

WHERE JSON_CONTAINS(tags, '["Mysql"]');

2. 查找标签中以”Data”开头的文章

SELECT * FROM `article`

WHERE JSON_SEARCH(tags, 'one', 'Data%') IS NOT NULL;

JSON_SEARCH 函数中3个参数的含义:

要查找的文档

查找的范围,有两个选项,’one’ 查找第一个符合条件的,’all’查找所有符合条件的

查找的条件

JSON Path

JSON Path 用来定位文档中的目标字段,例如

SELECT JSON_EXTRACT(

'{"id": 1, "name": "mysql"}',

'$.name'

);

结果为:mysql

JSON_EXTRACT() 是JSON提取函数,$.name 就是一个 JSON path,表示定位文档的 name 字段

JSON path 是以 $ 开头,下面看几个更多的示例

{

"num": 123,

"arr": [1, 2],

"obj": {

"a": 3,

"b": 4

}

}

$.num //结果:123

$.arr //结果:[1, 2]

$.arr[1] //结果:1

$.obj.a //结果:3

$**.b //结果:4

使用 JSON path 的查询示例

SELECT

tags->"$[0]" as 'tag'

FROM `article`;

更新数据

例如想给文章添加一个 “dev” tag,更新的条件是已经包含 “Mysql” 标签,并且还没有 “dev” 标签的数据

更新语句如下:

UPDATE `article`

SET tags = JSON_MERGE(tags, '["dev"]')

WHERE

JSON_SEARCH(tags, 'one', 'dev') IS NULL

AND

JSON_SEARCH(tags, 'one', 'Mysql') IS NOT NULL;

Mysql里的JSON系列操作函数 - 1

可以看到成功添加了 “dev” 标签

再比如想把 “Mysql” 这个标签更新为 “Mysql 5.7.13″,更新语句如下:

UPDATE `article` set tags = JSON_SET(tags, ‘$[0]’, ‘Mysql 5.7.13’) ;

上面体验了 JSON_MERGE 和 JSON_SET,用于修改JSON的函数还有很多,例如:

JSON_INSERT (doc, path, val[, path, val]…)

插入数据

JSON_REPLACE (doc, path, val[, path, val]…)

替换数据

JSON_ARRAY_APPEND (doc, path, val[, path, val]…)

向数组尾部追加数据

JSON_REMOVE (doc, path[, path]…)

从指定位置移除数据

通过初步的操作体验,感觉 Mysql 的 JSON 操作还是比较顺畅的,以后可以在mysql中使用文档结构确实很方便

新版的 Mysql 还提供了 Javascript 的控制台,类似 MongoDB 的 shell,也很方便,后面会总结出来

 

http://www.techug.com/mysql-json-function

分享到:
评论

相关推荐

    JSqlParser4.3版本作者补丁版用于解析mysql中JSON_OBJECT函数抛出ParseException异常

    用于JSqlParser4.3版本解析mysql中JSON_OBJECT函数抛出ParseException异常问题,如下: // this is true SELECT JSON_OBJECT(key person value account,key personName value account_name) obj FROM tb_review_...

    JSqlparser4.4版作者提供的应急版,解决无法解析mysql中JSON_OBJECT函数存在其它函数问题

    如下sql,JSON_OBJECT函数中存在CAST函数,随后报出ParseException问题! SELECT JSON_ARRAYAGG(obj) FROM (SELECT trt.relevance_id,JSON_OBJECT('id',CAST(trt.id AS CHAR),'taskName',trt.task_name,'openStatus'...

    详解Mysql中的JSON系列操作函数

    在MySQL中,可以通过JSON字段类型来存储JSON对象,同时提供了一系列的JSON操作函数,以满足查询、修改JSON数据的需求。 首先,创建含有JSON字段的表。以`article`表为例,包含`id`、`title`和`tags`字段,其中`tags...

    ThinkPHP6.0以上兼容mysql下JSON_CONTAINS使用

    本篇将详细探讨在ThinkPHP6.0及以上版本中,如何有效地利用MySQL的`JSON_CONTAINS`函数处理JSON类型的数据。 一、MySQL的JSON类型与JSON_CONTAINS函数 MySQL自5.7版本开始引入了对JSON数据类型的原生支持,这使得...

    mysql一个插件json

    MySQL 5.7开始引入了对JSON数据类型的原生支持,包括一系列用于查询、索引和操作JSON字段的内置函数。然而,如果用户有更高级或特定的需求,例如自定义的JSON处理函数,那么这个插件可能提供了一种解决方案。 描述...

    mysql_json_JPAmysqljson_mysqljsonjpa_MYSQL_mysql支持json_

    MySQL提供了丰富的JSON函数,如`JSON_EXTRACT`用于获取JSON对象的值,`JSON_INSERT`和`JSON_REPLACE`用于修改JSON文档,`JSON_ARRAY`和`JSON_OBJECT`用于创建JSON数组和对象等。这些函数使你在SQL查询中直接操作JSON...

    mysql5.7支持json数据的增删改查的例子

    在MySQL 5.7中,你可以直接在数据库中存储和操作JSON对象,无需额外的复杂转换。 首先,让我们了解如何创建一个支持JSON字段的表。在MySQL中,你可以这样定义一个表: ```sql CREATE TABLE example_table ( id ...

    Mysql5.7中JSON操作函数使用说明

    以下是一些关于 MySQL 5.7 中 JSON 操作函数的详细说明: 1. **JSON 数据类型** JSON 数据类型允许你在表中存储 JSON 文档。例如,在创建 `article` 表时,`tags` 字段被定义为 JSON 类型,可以存储如 `["Mysql", ...

    mysql navicat premium,最新版本,支持mysql5.7 json格式数据,解压即可直接使用

    此外,还提供了丰富的JSON函数,如`JSON_EXTRACT`用于获取JSON对象中的值,`JSON_INSERT`、`JSON_REPLACE`和`JSON_REMOVE`用于修改JSON文档,以及`JSON_SEARCH`用于在JSON文档中查找特定值。 Navicat Premium的JSON...

    MySQL.and.JSON

    3. **JSON 查询**:MySQL 提供了一系列的 JSON 函数,如 `JSON_EXTRACT` 用于获取 JSON 对象中的值,`JSON_CONTAINS` 检查 JSON 文档是否包含特定路径或值,`JSON_LENGTH` 计算 JSON 数组的元素数量等。这些函数使得...

    spring-mybatis-mysql-json

    在MySQL中,JSON列可以存储任何有效的JSON文档,提供了对JSON数据的索引支持,以及一系列内置函数进行查询和更新操作。例如,`->`操作符用于访问JSON对象的属性,`JSON_EXTRACT`函数用于提取JSON对象的值,而`JSON_...

    Mysql Json 检索函数 原代码

    自宝义函数json_searchvalue,从给定的JSON值中,根据给定的Key,检索出需要Value,

    MySQL数据生成JSON数据

    3. MySQL中的JSON函数,如`JSON_ARRAY()`、`JSON_OBJECT()`和`JSON_ARRAYAGG()`,用于创建和操作JSON数据。 4. 将查询结果转换为JSON格式,并可能涉及将数据输出到文件或屏幕。 在实际应用中,这个过程可能需要结合...

    lib_mysqludf_json-master.zip

    `lib_mysqludf_json`是开源社区开发的一个扩展,它允许MySQL服务器处理JSON数据类型,提供了一系列函数来创建、解析、修改和查询JSON文档。这个库特别适用于那些需要在MySQL中进行复杂JSON操作的场景,比如Web服务、...

    MySql+JsonNet开发工具包.zip

    2. **JSON操作函数**:讲解如何使用MySQL提供的JSON函数,如`JSON_EXTRACT`用于获取JSON对象的值,`JSON_INSERT`用于插入新值,`JSON_REPLACE`用于替换值,以及`JSON_ARRAY`和`JSON_OBJECT`用于创建数组和对象等。...

    Mysql 查询JSON结果的相关函数汇总

    JSON 格式字段是 Mysql 5.7 新加的属性,不够它本质上以字符串性质保存在库中的,刚接触时我只了解 $.xx 查询字段的方法,因为大部分时间,有这个就够了,其他交给程序就行了,但是最近一些操作需要更复杂的查询操作...

    mysql-数据库基本操作-实验二.doc

    本实验主要涵盖了MySQL中的几个核心功能领域,包括字符串函数、数值函数、日期函数、流程控制函数以及JSON函数的使用。 1. **字符串函数**:MySQL提供了多种对文本数据进行操作的函数,如`CONCAT()`用于连接字符串...

    mysql(5.6及以下)解析json的方法实例详解

    在MySQL 5.6及以下版本中,JSON数据类型的处理相对较弱,没有提供像5.7...随着MySQL版本的更新,对于JSON数据的支持也在不断增强,如JSON数据类型、JSON函数等,使得在数据库层面对JSON数据的操作变得更加高效和便捷。

Global site tag (gtag.js) - Google Analytics