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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 MongoDB,通用型 2核4GB
简介: 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,或者其他变体。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5天前
|
存储 关系型数据库 MySQL
MySQL数据类型详解及实例应用
MySQL数据类型详解及实例应用
|
2天前
|
SQL 存储 关系型数据库
RDS for MySQL的SQL分类与数据类型
小明需在MySQL中管理商品信息,使用SQL完成业务操作。SQL分为DQL(查询)、DML(增删改)、DDL(定义)、DCL(权限控制)和TCL(事务)五大类。DDL用于创建、修改和删除数据库结构,DML处理数据,DCL控制权限,TCL管理事务,DQL则用于查询数据。MySQL有多种数据类型,如数值型(整数、小数)、日期型和字符串型等,选择合适的数据类型是高效开发的关键。
12 0
|
3天前
|
SQL 关系型数据库 MySQL
查询mysql版本sql - 蓝易云
执行这个命令后,MySQL将返回当前正在运行的版本信息。
41 0
|
5天前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版产品使用合集之2.2.1版本同步mysql数据写入doris2.0 ,同步完了之后增量的数据延迟能达到20分钟甚至一直不写入如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
15 1
|
5天前
|
关系型数据库 MySQL 数据库连接
实时计算 Flink版产品使用合集之是否支持MySQL 5.7以下的版本
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
11 0
|
5天前
|
SQL JSON 关系型数据库
MYSQL--JSON_OBJECT 和 JSON_ARRAYAGG
MYSQL--JSON_OBJECT 和 JSON_ARRAYAGG
11 0
|
7天前
|
存储 关系型数据库 MySQL
XtraBackup支持哪些MySQL数据库版本?
【5月更文挑战第13天】XtraBackup支持哪些MySQL数据库版本?
20 0
|
7天前
|
关系型数据库 MySQL 分布式数据库
PolarDB MySQL版集群版本支持库表恢复功能的版本要求是什么?
【5月更文挑战第13天】PolarDB MySQL版集群版本支持库表恢复功能的版本要求是什么?
10 0
|
7天前
|
关系型数据库 MySQL 数据库
mysqlTools 一分钟部署安装本mysql多个版本,解锁繁琐部署过程
mysqlTools 一分钟部署安装本mysql多个版本,解锁繁琐部署过程
283 2
|
7天前
|
SQL 关系型数据库 MySQL
unsigned int 虽然mysql支持,但是不建议使用,因为可能在未来某个版本删除
unsigned int 虽然mysql支持,但是不建议使用,因为可能在未来某个版本删除
13 2