JsON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,易读并且易编写。对机器来说易于解析和生成,并且会减少网络带宽的传输。
JsON的格式非常简单: 名称/键值 。之前MysqL版本里面要实现这样的存储,要么用VARCHAR要么用TEXT大文本。 MysqL5.7发布后,专门设计了JsON数据类型以及关于这种类型的检索以及其他函数解析。
下面一起来实际 *** 作一下。
创建带有 JsON 字段的表比如一个‘文章'表,字段包括
ID、标题 Title、标签 Tags
一篇文章会有多个标签,Tags 就可以设为 JsON 类型
建表语句如下:
@H_301_19@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 语句:
@H_301_19@-- 内存溢出 jb51.ccINSERT INTO article` (`Title`,`Tags`)VALUES ('体验 MysqL JsON','["MysqL","Database"]');
这里插入的是一个 JOSN 数组 [“MysqL”,“Database”]
查询 article 表中的所有内容,可以看到新插入的这条数据
查询
使用 JsON 函数做两个简单的查询
1.查找带有标签”MysqL”的所有文章
@H_301_19@-- 内存溢出 jb51.ccSELECT * FROM article`WHERE JsON_CONTAINS(Tags,'["MysqL"]' );
2.查找标签中以”Data”开头的文章
@H_301_19@-- 内存溢出 jb51.ccSELECT * FROM article`WHERE JsON_SEARCH(Tags,'one','Data%' ) IS NOT NulL ;
JsON_SEARCH 函数中3个参数的含义:
1.要查找的文档
2.查找的范围,有两个选项,'one' 查找第一个符合条件的,'all'查找所有符合条件的
3.查找的条件
JsON Path
JsON Path用来定位文档中的目标字段,例如
@H_301_19@-- 内存溢出 jb51.ccSELECT JsON_EXTRACT('{"ID": 1,"name": "MysqL"}','$.name');
结果为:MysqL
JsON_EXTRACT() 是JsON提取函数, $.name 就是一个 JsON path ,表示定位文档的 name 字段
JsON path 是以 $ 开头,下面看几个更多的示例
@H_301_19@-- 内存溢出 jb51.cc{"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 的查询示例
@H_301_19@-- 内存溢出 jb51.ccSELECTTags-> "$[0]" as 'tag'FROM article`;
更新数据
例如想给文章添加一个 “dev” tag,更新的条件是已经包含 “MysqL” 标签,并且还没有 “dev” 标签的数据
更新语句如下:
@H_301_19@-- 内存溢出 jb51.ccUPDATE article`SET Tags = JsON_MERGE(Tags,'["dev"]' )WHEREJsON_SEARCH(Tags,'dev' ) IS NulLANDJsON_SEARCH(Tags,'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[,val]…)
插入数据
JsON_REPLACE(doc,val]…)
替换数据
JsON_ARRAY_APPEND(doc,val]…)
向数组尾部追加数据
JsON_REMOVE(doc,path[,path]…)
从指定位置移除数据
通过初步的 *** 作体验,感觉 MysqL 的 JsON *** 作还是比较顺畅的,以后可以在MysqL中使用文档结构确实很方便
总结以上是内存溢出为你收集整理的Mysql5.7 浅析JSON *** 作函数使用示例全部内容,希望文章能够帮你解决Mysql5.7 浅析JSON *** 作函数使用示例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)