MySQL 5.7 新特性 JSON 的创建,插入,查询,更新

首先回顾一下JSON的语法规则:

数据在键值对中,
数据由逗号分隔,
花括号保存对象,
方括号保存数组。

MySQL5.7.8 还提供了一些基于Json的函数,包括:

创建JSON 查询JSON 修改JSON META信息

创建JSON

类似 varchar,设置 JSON 主要将字段的 type 是 json, 不能设置长度,可以是 NULL 但不能有默认值。

函数说明:

函数名 说明
JSON_ARRAY() 创建json数组
JSON_OBJECT() 创建json对象
JSON_MERGE() 合并json数组或对象

查询JSON

示例数据:

id category tags
1 {"id": 1, "name": "lnmp.cn"} [1, 3, 4]
2 {"id": 2, "name": "php.net"} [1, 3, 5]

函数说明:

函数名 示例 说明
JSON_CONTAINS() JSON_CONTAINS(category,'1','$.id') 查询category字段下id值为1的json串,判断是否包含某个json值
JSON_CONTAINS_PATH() 判断某个路径下是否包json值
JSON_EXTRACT() 提取json值
JSON_KEYS() 提取json中的键值为json数组
JSON_SEARCH() 按给定字符串关键字搜索json,返回匹配的路径
JSON_UNQUOTE() 等价于"->>"

修改JSON

更新 JSON 下的元素,MySQL 并不支持 column->path 的形式

函数名 说明
JSON_APPEND() 在指定的数组末尾以JSON文本形式追加指定的值并返回。
JSON_ARRAY_APPEND()
JSON_INSERT() 插入新值,但已经存在的值不会被覆盖
JSON_ARRAY_INSERT() 插入数组元素
JSON_SET() 插入新值,并覆盖已经存在的值
JSON_QUOTE()
JSON_REPLACE() 只替换存在的值
JSON_REMOVE() 删除 JSON 元素

META信息

函数名 说明
JSON_DEPTH() 返回json文档的最大深度
JSON_LENGTH() 返回json文档的长度
JSON_TYPE() 返回json值得类型
JSON_VALID() 判断是否为合法json文档

在5.7.9及之后的版本,可以使用column->path作为JSON_EXTRACT(column, path)的快捷方式。这个函数可以作为列数据的别名出现在SQL语句中的任意位置,包括WHERE,ORDER BY,和GROUP BY语句。同样包含SELECT, UPDATE, DELETE,CREATE TABLE和其他SQL语句。
->左边的参数为JSON数据的列名而不是一个表达式,其右边参数JSON数据中的某个路径表达式。

参考文档:
MySQL 5.7 新特性 JSON 的创建,插入,查询,更新
MySQL5.7中对JSON的支持
官方说明文档

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容