mysql操作json优点和缺点_详解Mysql中的JSON系列操作函数
前言
JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,易读并且易编写。对机器来说易于解析和生成,并且会减少网络带宽的传输。
JSON的格式非常简单:名称/键值。之前MySQL版本里面要实现这样的存储,要么用VARCHAR要么用TEXT大文本。 MySQL5.7发布后,专门设计了JSON数据类型以及关于这种类型的检索以及其他函数解析。
下面一起来实际操作一下。
创建带有 JSON 字段的表
比如一个‘文章'表,字段包括
id、标题 title、标签 tags
一篇文章会有多个标签,tags 就可以设为 JSON 类型
建表语句如下:
?
插入数据
插入一条带有 JSON 内容的数据,执行 insert 语句:
?
这里插入的是一个 JOSN 数组[“Mysql”, “Database”]
查询 article 表中的所有内容,可以看到新插入的这条数据
查询
使用 JSON 函数做两个简单的查询
1.查找带有标签”Mysql”的所有文章
?
2.查找标签中以”Data”开头的文章
?
JSON_SEARCH 函数中3个参数的含义:
1.要查找的文档
2.查找的范围,有两个选项,'one' 查找第一个符合条件的,'all'查找所有符合条件的
3.查找的条件
JSON Path
JSON Path用来定位文档中的目标字段,例如
?
结果为:mysql
JSON_EXTRACT() 是JSON提取函数,$.name 就是一个 JSON path,表示定位文档的 name 字段
JSON path 是以 $ 开头,下面看几个更多的示例
?
使用 JSON path 的查询示例
?
更新数据
例如想给文章添加一个 “dev” tag,更新的条件是已经包含 “Mysql” 标签,并且还没有 “dev” 标签的数据
更新语句如下:
?
可以看到成功添加了 “dev” 标签
再比如想把 “Mysql” 这个标签更新为 “Mysql 5.7.13″,更新语句如下:
?
上面体验了 JSON_MERGE和 JSON_SET,用于修改JSON的函数还有很多,例如:
?
插入数据
?
替换数据
?
向数组尾部追加数据
?
从指定位置移除数据
通过初步的操作体验,感觉 Mysql 的 JSON 操作还是比较顺畅的,以后可以在mysql中使用文档结构确实很方便
新版的 Mysql 还提供了 Javascript 的控制台,类似 MongoDB 的 shell,也很方便,后面会总结出来。希望本文给大家在学习mysql的时候有所帮助,谢谢对服务器之家的支持。
mysql操作json优点和缺点_详解Mysql中的JSON系列操作函数相关推荐
- python json方法详解_详解python中的json的基本使用方法
在Python中使用json的时候,主要也就是使用json模块,json是以一种良好的格式来进行数据的交互,从而在很多时候,可以使用json数据格式作为程序之间的接口. #!/usr/bin/env ...
- python中延时函数_详解python中实现延时回调普通函数
这篇文章主要给大家介绍了关于python中实现延时回调普通函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧. 前言 ...
- mysql临键锁_详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)
详解 MySql InnoDB 中的三种行锁(记录锁.间隙锁与临键锁) 前言 InnoDB 通过 MVCC 和 NEXT-KEY Locks,解决了在可重复读的事务隔离级别下出现幻读的问题.MVCC ...
- mysql 的dcl语句_详解MySQL第三篇—DCL语句
DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句.这些语句定义了数据库.表.字段.用户的访问权限和安全级别.主要的语句关键字包括 g ...
- mysql通配符escape使用_详解MySQL like如何查询包含'%'的字段(ESCAPE用法)
在SQl like语句中,比如 SELECT * FROM user WHERE username LIKE '%luchi%' SELECT * FROM user WHERE username L ...
- mysql通配符escape使用_详解MySQL like如何查询包含#39;%#39;的字段(ESCAPE用法)-MySQL教程-Web开发者网...
在SQl like语句中,比如 SELECT * FROM user WHERE username LIKE '%luchi%' SELECT * FROM user WHERE username L ...
- mysql mgr 三节点_详解MySQL 5.7 MGR单主确定主节点方法
我们行MGR年底要上线了,每天都要看官方文档学习,做测试,坚持每天写一个小知识点,有想一起学习的么~ MySQL 5.7 MGR单主确定主节点是哪个,我们可以通过成员ID来判断,然后结合read_on ...
- mysql 编辑数据库内容_详解mysql数据库增删改操作
插入数据 insert into 表名(列名1,列名2,列名3) values(值1,值2,值3); insert into user(user_id,name,age) values(1,'nice ...
- 操作 mysql 不生成日志_详解MySQL的日志
MySQL日志 MySQL的日志记录了MySQL的日常操作和错误信息,通过这些日志我们可以知道MySQL内部发生的事情,可以为MySQL的优化和管理提供必要的信息. MySQL的日志主要有:二进制日志 ...
最新文章
- 程序员吐槽:在阿里工作带来光环,在京东却带来负面影响!
- Python + Selenium 练习篇 - 获取页面所有邮箱
- tensorflow函数总结
- SSM+mybatis单元测试
- LLE(局部线性嵌入)matlab代码实现
- 心理学实验必备 | 脑电实验流程及注意事项
- Stroke:利用人类遗传学理解缺血性卒中预后的机制
- delphi 各新版本特性收集
- 山东大学项目实训(三十二)—— 科室管理
- iOS基础:获取资源文件的方法
- 多多情报通:拼多多视频上传多久审核?如何发布新品?
- 利用FlexCell实现的一些报表统计应用
- 好和弦-5-调式和音阶
- java闪光的星星_基于JavaScript实现飘落星星特效
- 第十一章 “万金油”的String,为什么不好用了
- 共享自习室无人自习室源码
- word手敲公式 快速入门Unicode
- jQuery的内部全局变量和构造函数
- 如何去除视频里的声音?
- CPU总线 HT3.0/ QPI 区别
热门文章
- flutter 拖拽布局_使用Flutter模仿SOUL可任意拖动的悬浮按钮
- r语言调用python_python3调用R语言干货
- 【Flink】Could not connect to BlobServer at address
- 【Elasticsearch】 Kibana 里程碑插件的使用
- 【Elasticsearch】ES 7.8 写入 查询 Normalizer 忽略 大小写
- 【Elasticsearch】如何使用 Elasticsearch 6.2 搜索中文、日语和韩语文本 - 第 3 部分:语言检测工具
- 【Es】es deep paging问题
- 95-280-037-源码-资源管理-计算资源管理-TaskSlot-ResourceManage 中 Slot 的管理
- 【MySQL】MySQL删除数据库的时候卡死
- 【java】静态代理 proxy