新版 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 表中的所有内容,可以看到新插入的这条数据
查询
使用 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个参数的含义:
1 要查找的文档
2 查找的范围,有两个选项,’one’ 查找第一个符合条件的,’all’查找所有符合条件的
3 查找的条件
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;
可以看到成功添加了 “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异常问题,如下: // this is true SELECT JSON_OBJECT(key person value account,key personName value account_name) obj FROM tb_review_...
如下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字段类型来存储JSON对象,同时提供了一系列的JSON操作函数,以满足查询、修改JSON数据的需求。 首先,创建含有JSON字段的表。以`article`表为例,包含`id`、`title`和`tags`字段,其中`tags...
本篇将详细探讨在ThinkPHP6.0及以上版本中,如何有效地利用MySQL的`JSON_CONTAINS`函数处理JSON类型的数据。 一、MySQL的JSON类型与JSON_CONTAINS函数 MySQL自5.7版本开始引入了对JSON数据类型的原生支持,这使得...
MySQL 5.7开始引入了对JSON数据类型的原生支持,包括一系列用于查询、索引和操作JSON字段的内置函数。然而,如果用户有更高级或特定的需求,例如自定义的JSON处理函数,那么这个插件可能提供了一种解决方案。 描述...
MySQL提供了丰富的JSON函数,如`JSON_EXTRACT`用于获取JSON对象的值,`JSON_INSERT`和`JSON_REPLACE`用于修改JSON文档,`JSON_ARRAY`和`JSON_OBJECT`用于创建JSON数组和对象等。这些函数使你在SQL查询中直接操作JSON...
在MySQL 5.7中,你可以直接在数据库中存储和操作JSON对象,无需额外的复杂转换。 首先,让我们了解如何创建一个支持JSON字段的表。在MySQL中,你可以这样定义一个表: ```sql CREATE TABLE example_table ( id ...
以下是一些关于 MySQL 5.7 中 JSON 操作函数的详细说明: 1. **JSON 数据类型** JSON 数据类型允许你在表中存储 JSON 文档。例如,在创建 `article` 表时,`tags` 字段被定义为 JSON 类型,可以存储如 `["Mysql", ...
此外,还提供了丰富的JSON函数,如`JSON_EXTRACT`用于获取JSON对象中的值,`JSON_INSERT`、`JSON_REPLACE`和`JSON_REMOVE`用于修改JSON文档,以及`JSON_SEARCH`用于在JSON文档中查找特定值。 Navicat Premium的JSON...
3. **JSON 查询**:MySQL 提供了一系列的 JSON 函数,如 `JSON_EXTRACT` 用于获取 JSON 对象中的值,`JSON_CONTAINS` 检查 JSON 文档是否包含特定路径或值,`JSON_LENGTH` 计算 JSON 数组的元素数量等。这些函数使得...
在MySQL中,JSON列可以存储任何有效的JSON文档,提供了对JSON数据的索引支持,以及一系列内置函数进行查询和更新操作。例如,`->`操作符用于访问JSON对象的属性,`JSON_EXTRACT`函数用于提取JSON对象的值,而`JSON_...
自宝义函数json_searchvalue,从给定的JSON值中,根据给定的Key,检索出需要Value,
3. MySQL中的JSON函数,如`JSON_ARRAY()`、`JSON_OBJECT()`和`JSON_ARRAYAGG()`,用于创建和操作JSON数据。 4. 将查询结果转换为JSON格式,并可能涉及将数据输出到文件或屏幕。 在实际应用中,这个过程可能需要结合...
`lib_mysqludf_json`是开源社区开发的一个扩展,它允许MySQL服务器处理JSON数据类型,提供了一系列函数来创建、解析、修改和查询JSON文档。这个库特别适用于那些需要在MySQL中进行复杂JSON操作的场景,比如Web服务、...
2. **JSON操作函数**:讲解如何使用MySQL提供的JSON函数,如`JSON_EXTRACT`用于获取JSON对象的值,`JSON_INSERT`用于插入新值,`JSON_REPLACE`用于替换值,以及`JSON_ARRAY`和`JSON_OBJECT`用于创建数组和对象等。...
JSON 格式字段是 Mysql 5.7 新加的属性,不够它本质上以字符串性质保存在库中的,刚接触时我只了解 $.xx 查询字段的方法,因为大部分时间,有这个就够了,其他交给程序就行了,但是最近一些操作需要更复杂的查询操作...
本实验主要涵盖了MySQL中的几个核心功能领域,包括字符串函数、数值函数、日期函数、流程控制函数以及JSON函数的使用。 1. **字符串函数**:MySQL提供了多种对文本数据进行操作的函数,如`CONCAT()`用于连接字符串...
在MySQL 5.6及以下版本中,JSON数据类型的处理相对较弱,没有提供像5.7...随着MySQL版本的更新,对于JSON数据的支持也在不断增强,如JSON数据类型、JSON函数等,使得在数据库层面对JSON数据的操作变得更加高效和便捷。