**关于mysql5.7版本新特性介绍 ------数据类型 JSON**

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。

关于mysql5.7版本新特性介绍 ------数据类型 JSON

测试环境:

Win10、mysql 5.7.14

内容简介:
随着mysql5.7版本的到来,大家对其的热情也越来越高涨,身为mysql圈子里的一员,我本身也对mysql5.7的一些新特性有所了解,通过学习了解到了很多新的特性,今天给大家介绍一下它在灵活性方面的一个新的功能:提供对JSON的支持

JSON介绍

首先介绍一下什么是JSON:
> JSON(JavaScript Object Notation, JS 对象标记) 是一种轻> 量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一> 个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简> 洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人> 阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。>   

通俗的讲就是,JSON数据类型 可以存储一些复杂的数据类型,例如字符串、数字、对象、数组等。将一些平时比较复杂的数据存储,简单化,便于人们存储与阅读。

JSON存储方式:

对于普通数据类型来说:
> ["abc", 10, null, true, false]

对于时间类型的存储

> ["12:18:29.000000", "2015-07-29", "2015-07-29 12:18:29.000000"]

对于对象来说:一般使用键值对的方式存储
一般JSON的存储对象的格式是这样的:

{"firstName": "John"}

这很容易理解,等价于这条 JavaScript 语句:

{firstName : "John"}

Mysql支持JSON的原因:
随着非结构化数据存储需求的持续增长,各种非结构化数据存储的数据库应运而生(如MongoDB)。从最新的数据库使用 排行榜 来看,MongoDB已经超过了PostgreSQL,其火热程度可见一斑。

各大关系型数据库也不甘示弱,纷纷提供对JSON的支持,以应对非结构化数据库的挑战。MySQL数据库从5.7.8版本开始,也提供了对JSON的支持。
MySQL对支持JSON的做法是,在server层提供了一堆便于操作JSON的函数,至于存储,就是简单地将JSON编码成BLOB,然后交由存储引擎层进行处理,也就是说,MySQL 5.7的JSON支持与存储引擎没有关系,MyISAM 存储引擎也支持JSON 格式。
MySQL支持JSON以后,总是避免不了拿来与MongoDB进行一些比较。但是,MySQL对JSON的支持,至少有两点能够完胜MongoDB:
1.可以混合存储结构化数据和非结构化数据,同时拥有关系型数据库和非关系型数据库的优点
2.能够提供完整的事务支持

下面我在mysql中做一下对于JOSN的一些测验,来实验一下它的功能。

1.首先我创建了一个用JSON存储的表
01

2.插入数据
02
03

3.对json中数据进行测验检验功能:
(1)先插入一条数据 做一下 group by的 实验
04
05

(2)插入一条部分内容为空的数据,看一下JSON的兼容性问题
06

(3)建立索引

07
08

然后在确定一下是否走了索引

09

确定了一下确实走了索引,

4.对于支持失事物的检验:
我想这就是为什么mysql支持JSON后的优势所在,它可以支持事物!

(1) 开启事物查看一下原表

10

(2)插入一行数据

11

Rollback一下

12

经过以上的各个检验与验证,测试了一些关于JSON的功能,个人觉得它支持的功能很强大,非常值得使用。

由此可见对于mysql来说,用JSON的方式存储数据类似于‘表中表’,当业务数据变化非常快时,可以利用JSON来存储,以此来提高数据库的灵活性,当业务稳定下来时,通过之前写入的tirgger , 每个json都运算json_extract(data,'$.name') ,然后写到一个新的不可修改的列里。因此MySQL添加的JSON数据类型让关系数据库用起来更简单,并且模糊了SQL和NoSQL数据库的界限。

缺点
JSON同样也存在很多缺点:
JSON是一种非正式储存数据的好方式。但是关系数据库在标准化数据上很有强大,所有的数据都被标准化到小组成部分中来提高访问速度。并且,有的数据可能缺乏应用的严格性,比如当记录一个电子邮件地址的时候,key值可能是email,eMail,e-mail,或者其他变体。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1天前
|
安全 JavaScript
如何在`package.json`中正确设置依赖版本范围?
正确设置 `package.json` 中的依赖版本范围需要综合考虑项目的需求、依赖库的稳定性和兼容性,以及开发和维护的便利性等因素。通过合理选择版本范围符号,并结合定期的审查和测试,可以有效地管理项目依赖,确保项目的稳定运行。
7 1
|
2月前
|
JSON 关系型数据库 MySQL
MySQL 8.0 新特性
MySQL 8.0 新特性
138 10
MySQL 8.0 新特性
|
2月前
|
存储 Oracle 关系型数据库
Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL
从基本特性、技术选型、字段类型、事务提交方式、SQL语句、分页方法等方面对比Oracle和MySQL的区别。
436 18
Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL
|
1月前
|
关系型数据库 MySQL 数据库
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
33 5
|
1月前
|
SQL 安全 关系型数据库
MySQL8.2有哪些新特性?
【10月更文挑战第3天】MySQL8.2有哪些新特性?
34 2
|
1月前
|
存储 关系型数据库 MySQL
MySQL支持多种数据类型
MySQL支持多种数据类型
90 3
|
1月前
|
存储 关系型数据库 MySQL
什么是mysql的数据类型?
什么是mysql的数据类型?
45 2
|
1月前
|
存储 关系型数据库 MySQL
MySQL数据类型
MySQL数据类型
50 2
|
3月前
|
存储 关系型数据库 MySQL
MySQL 中的 BLOB 数据类型深入解析
【8月更文挑战第31天】
380 0
|
2天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
13 4
下一篇
无影云桌面