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的日志主要有:二进制日志 ...
最新文章
- 正则表达式一些关键字使用
- 大公司的前端开发地址
- (01)JVM-内存三大核心区域以及分析
- day10 Python 形参顺序
- 精通RPM之--制作篇(rpmbuild)
- Android性能优化-App启动优化
- Finite State Transducers 详解
- react实现异步插件_初识react(四) react中异步解决方案之 redux-saga
- python3安装pymysql_ubuntu16.04 python3安装pymysql错误
- Android gpuimage美颜滤镜,GPUImage图片美颜
- oracle语句整理,Oracle 维护常用SQL语句整理
- 非标自动化设备设计制造的13个步骤 || 技巧总结
- 理解modle下的gradle
- Win32_Processor CPU 参数说明
- Git 工具(写的很乱)
- 英语进阶系列-A05-英语升级练习三
- ARM、X86/Atom、MIPS、PowerPC
- lamp setup (centos)
- Cesium第一次搭建环境出不来地球的问题
- word文件损坏打不开怎么修复?
热门文章
- 【kafka】kafka 时间轮 TimingWheel
- 【Flink】Flink Flink 1.14 新特性预览
- 【Spark】Spark ListenerBus 和 MetricsSystem 体系分析
- 【Antlr】Antlr API 简介
- 【Mac】Mac下SSH免密登录localhost
- RocKetMQ : MQClientException: The producer service state not OK, CREATE_JUST
- 18-elasticsearch集群健康为黄色
- 01-centos安装界面,远程连接
- 惊呆了!被公司辞退拿了22万补偿金,原东家称每月涨薪7000,只要退还22万
- 从源码角度解析ArrayList.subList的几个坑