前言

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. 大公司的前端开发地址
  3. (01)JVM-内存三大核心区域以及分析
  4. day10 Python 形参顺序
  5. 精通RPM之--制作篇(rpmbuild)
  6. Android性能优化-App启动优化
  7. Finite State Transducers 详解
  8. react实现异步插件_初识react(四) react中异步解决方案之 redux-saga
  9. python3安装pymysql_ubuntu16.04 python3安装pymysql错误
  10. Android gpuimage美颜滤镜,GPUImage图片美颜
  11. oracle语句整理,Oracle 维护常用SQL语句整理
  12. 非标自动化设备设计制造的13个步骤 || 技巧总结
  13. 理解modle下的gradle
  14. Win32_Processor CPU 参数说明
  15. Git 工具(写的很乱)
  16. 英语进阶系列-A05-英语升级练习三
  17. ARM、X86/Atom、MIPS、PowerPC
  18. lamp setup (centos)
  19. Cesium第一次搭建环境出不来地球的问题
  20. word文件损坏打不开怎么修复?

热门文章

  1. 【kafka】kafka 时间轮 TimingWheel
  2. 【Flink】Flink Flink 1.14 新特性预览
  3. 【Spark】Spark ListenerBus 和 MetricsSystem 体系分析
  4. 【Antlr】Antlr API 简介
  5. 【Mac】Mac下SSH免密登录localhost
  6. RocKetMQ : MQClientException: The producer service state not OK, CREATE_JUST
  7. 18-elasticsearch集群健康为黄色
  8. 01-centos安装界面,远程连接
  9. 惊呆了!被公司辞退拿了22万补偿金,原东家称每月涨薪7000,只要退还22万
  10. 从源码角度解析ArrayList.subList的几个坑