前言

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系列操作函数相关推荐

  1. python json方法详解_详解python中的json的基本使用方法

    在Python中使用json的时候,主要也就是使用json模块,json是以一种良好的格式来进行数据的交互,从而在很多时候,可以使用json数据格式作为程序之间的接口. #!/usr/bin/env ...

  2. python中延时函数_详解python中实现延时回调普通函数

    这篇文章主要给大家介绍了关于python中实现延时回调普通函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧. 前言 ...

  3. mysql临键锁_详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)

    详解 MySql InnoDB 中的三种行锁(记录锁.间隙锁与临键锁) 前言 InnoDB 通过 MVCC 和 NEXT-KEY Locks,解决了在可重复读的事务隔离级别下出现幻读的问题.MVCC  ...

  4. mysql 的dcl语句_详解MySQL第三篇—DCL语句

    DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句.这些语句定义了数据库.表.字段.用户的访问权限和安全级别.主要的语句关键字包括 g ...

  5. mysql通配符escape使用_详解MySQL like如何查询包含'%'的字段(ESCAPE用法)

    在SQl like语句中,比如 SELECT * FROM user WHERE username LIKE '%luchi%' SELECT * FROM user WHERE username L ...

  6. mysql通配符escape使用_详解MySQL like如何查询包含#39;%#39;的字段(ESCAPE用法)-MySQL教程-Web开发者网...

    在SQl like语句中,比如 SELECT * FROM user WHERE username LIKE '%luchi%' SELECT * FROM user WHERE username L ...

  7. mysql mgr 三节点_详解MySQL 5.7 MGR单主确定主节点方法

    我们行MGR年底要上线了,每天都要看官方文档学习,做测试,坚持每天写一个小知识点,有想一起学习的么~ MySQL 5.7 MGR单主确定主节点是哪个,我们可以通过成员ID来判断,然后结合read_on ...

  8. mysql 编辑数据库内容_详解mysql数据库增删改操作

    插入数据 insert into 表名(列名1,列名2,列名3) values(值1,值2,值3); insert into user(user_id,name,age) values(1,'nice ...

  9. 操作 mysql 不生成日志_详解MySQL的日志

    MySQL日志 MySQL的日志记录了MySQL的日常操作和错误信息,通过这些日志我们可以知道MySQL内部发生的事情,可以为MySQL的优化和管理提供必要的信息. MySQL的日志主要有:二进制日志 ...

最新文章

  1. 程序员吐槽:在阿里工作带来光环,在京东却带来负面影响!
  2. Python + Selenium 练习篇 - 获取页面所有邮箱
  3. tensorflow函数总结
  4. SSM+mybatis单元测试
  5. LLE(局部线性嵌入)matlab代码实现
  6. 心理学实验必备 | 脑电实验流程及注意事项
  7. Stroke:利用人类遗传学理解缺血性卒中预后的机制
  8. delphi 各新版本特性收集
  9. 山东大学项目实训(三十二)—— 科室管理
  10. iOS基础:获取资源文件的方法
  11. 多多情报通:拼多多视频上传多久审核?如何发布新品?
  12. 利用FlexCell实现的一些报表统计应用
  13. 好和弦-5-调式和音阶
  14. java闪光的星星_基于JavaScript实现飘落星星特效
  15. 第十一章 “万金油”的String,为什么不好用了
  16. 共享自习室无人自习室源码
  17. word手敲公式 快速入门Unicode
  18. jQuery的内部全局变量和构造函数
  19. 如何去除视频里的声音?
  20. CPU总线 HT3.0/ QPI 区别

热门文章

  1. flutter 拖拽布局_使用Flutter模仿SOUL可任意拖动的悬浮按钮
  2. r语言调用python_python3调用R语言干货
  3. 【Flink】Could not connect to BlobServer at address
  4. 【Elasticsearch】 Kibana 里程碑插件的使用
  5. 【Elasticsearch】ES 7.8 写入 查询 Normalizer 忽略 大小写
  6. 【Elasticsearch】如何使用 Elasticsearch 6.2 搜索中文、日语和韩语文本 - 第 3 部分:语言检测工具
  7. 【Es】es deep paging问题
  8. 95-280-037-源码-资源管理-计算资源管理-TaskSlot-ResourceManage 中 Slot 的管理
  9. 【MySQL】MySQL删除数据库的时候卡死
  10. 【java】静态代理 proxy