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

关于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存储的表

2.插入数据

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

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

(3)建立索引


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

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

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

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

(2)插入一行数据

Rollback一下

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

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

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

时间: 2024-11-08 19:54:00

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

ES6中非常实用的新特性介绍_javascript技巧

ECMAScript 6离我们越来越近了,作为它最重要的方言,Javascript也即将迎来语法上的重大变革,InfoQ特开设"深入浅出ES6"专栏,来看一下ES6将给我们带来哪些新内容. 写在前面 ES6 已经提交给 Ecma 大会审查了,也就是说,我们将迎来一大波 javascript 的最新标准,还有一些语法糖.ES6 中有很多值得我们关注的东西,下面是我发现的一些我们最常用的一些新特性,进行记录一下. 1. for-of循环 这个东西用来循环数组很爽,原因呢,是因为它弥补了目前

Oracle10g安装升级以及新特性介绍

oracle 这部分内容是以前培训时写的课件,现在共享出来给大家参考.  Oracle10g安装与升级之一 这是以前培训时做的一个关于Oracle10g安装升级及新特性介绍的主题,现在拿出来给大家参考... Oracle10g安装与升级之二 关于Oracle10g安装升级及新特性介绍第二部分... Oracle10g安装与升级之三 关于Oracle10g安装升级及新特性介绍第三部分... Oracle10g安装与升级之四 关于Oracle10g安装升级及新特性介绍第四部分...

久经考验的全栈云平台:Apsara Stack Enterprise 新特性介绍

摘要:本文的整理自2017云栖大会-南京峰会上阿里云专有云高级专家谢宁的分享讲义,讲义首先介绍了企业级云架构的发展趋势.政务云平台的特征.并介绍了阿里云专有云平台的产品全景图,并对于政务云的设计架构以及Apsara Stack Enterprise 的新特性进行了介绍. 在2017云栖大会-南京峰会上,阿里云专有云高级专家谢宁做了题为<Apsara Stack Enterprise 新特性介绍>的分享.在分享中谢宁分享了目前企业级云架构的发展趋势,目前新应用互联网化,传统核心应用开始逐渐改造,

Informix 11.5新特性介绍:第1部分

Informix数据库目前最新的版本是11.5,从Informix 9.Informix 10到Informix 11.5,在数据库性能.数据库管理及应用开发等方面都有了很大的提高,而且推出了很多非常有用的新特性.通过对这些特性的使用,可以大大提高数据库性能.增强数据库可管理性及应用开发的灵活性.我们这里,给大家介绍其中的一些特性,希望对大家能有所帮助. 数据库管理方面的一些实用特性 使用可配置的页面大小 我们知道,在Informix 中,数据存储的最基本的单位是页,在Informix 10 版

JSR 286 Portlet的新特性,第1部分: Portlet 2.0新特性介绍

关于本系列 本系列文章专门针对具有 JSR 168 Portlet 开发基础,并且想了解 JSR 286 Portlet 新特性和开发流程的开发人 员.在学习完本系列后,您将了解相对于 JSR 168 Portlet,JSR 286 Portlet 究竟提供了哪些增强功能, 以及这些新增特性在实际开发 中的应用. 第 1 部分将简单回顾 JSR 168 Portlet, 并列出了 JSR 286 Portlet 的新增内容. 第 2 部分和第 3 部分将 通过在 Apache Pluto 2.0

Ruby on Rails 2.0的新特性介绍

万众瞩目的Ruby on Rails 2.0已经发布了,Rails框架在2004年诞生以来,一直保持着相当快的版本 升级速度:2005年发布了Rails1.0版本,2006年初发布Rails1.1版本,2007年初发布Rails1.2版本,而还 没有等到2008年,在2007年圣诞前夕的12月6日,Rails2.0已经发布. Rails框架每个大的版本升级都给我们带来了相当多的新功能,新惊喜.Rails1.0带给我们完善的单元 测试和集成测试:Rails1.1带给我们DataBase Migra

Vue.js 2.5新特性介绍

TypeScript TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程.2012年十月份,微软发布了首个公开版本的TypeScript,在2013年6月19日,微软发布了TypeScript 0.9的正式版本,到目前为止,TypeScript已发展到2.x版本,相关资料可以查看W3C TypeScript入门 安装TypeScript 安装TypeScript主要有两种方式: 通过npm

【ASM 翻译系列第二弹:ASM 12C 版本新特性】

随着Oracle 12c的发布,也就意味着全新版本的ASM面世了.已知的重大新特性有Flex ASM,数据预校验和更加便捷的磁盘管理操作.下面针对这几个方面进行详细介绍. Flex ASM Flex ASM特性可以允许ASM实例只运行在集群中某些节点上.默认安装将会创建3个ASM实例,而不管集群中节点的数量.一个ASM实例可以为本地和远端数据库提供服务.如果一个ASM实例crash,数据库实例会fail over到另一个ASM实例,而不会crash. 随着Flex ASM的引入,又出现了一个新的

JFFS2 文件系统及新特性介绍

简介: JFFS2 是一个开放源码的项目(www.infradead.org). 它是在闪存上使用非常广泛的读/写文件系统,在嵌入式系统中被普遍的应用.这篇文章首先分析了在闪存上使用 JFFS2 的必要性,然后详细的阐述了 JFFS2 实现的内部机制,包括日志结构的文件系统,关键的数据结构,挂载过程和垃圾收集机制.同时也指出了 JFFS2 的局限性,并介绍了最新的针对 JFFS2 的不足进行改进的补丁程序.最后对 JFFS3 的设计思想和现在的开发状况给予了简单的介绍 1. 为什么需要 JFFS