Mysql支持json格式数据的理解与练习

MySQL5.7 新特性之JSON类型

随着NOSQL数据库的广泛应用,可扩展的存储方式在关系型数据库中也有了很好的支持,MySQL5.7中就新增加了一个数据类型:JSON。

JSON数据类型意义

其实,没有JSON数据类型的支持,我们一样可以通过varchar类型或者text等类型来保存这一格式的数据,但是,为什么还要专门增加这一数据格式的支持呢?其中肯定有较varchar或者text来存储此类型更优越的地方。

  • 保证了JSON数据类型的强校验,JSON数据列会自动校验存入此列的内容是否符合JSON格式,非正常格式则报错,而varchar类型和text等类型本身是不存在这种机制的。
  • MySQL同时提供了一组操作JSON类型数据的内置函数。
  • 更优化的存储格式,存储在JSON列中的JSON数据会被转成内部特定的存储格式,允许快速读取。
  • 可以基于JSON格式的特征支持修改特定的键值。(即不需要把整条内容拿出来放到程序中遍历然后寻找替换再塞回去,MySQL内置的函数允许你通过一条SQL语句就能搞定)。

练习

需要5.7以上版本

SELECT VERSION();#查看mysql版本
CREATE TABLE USER(
	UID INT AUTO_INCREMENT,
	DATA JSON,
	PRIMARY KEY(UID)
)#创建表结构,DATA是JSON类型
INSERT INTO USER VALUES (NULL,'{"name":"wang","address":"shenyang"}');#插入两条数据
INSERT INTO USER VALUES (NULL,'{"name":"zhao","address":"riben"}');
SELECT * FROM `USER`;

在这里插入图片描述

ALTER TABLE USER ADD USER_NAME VARCHAR(20) GENERATED ALWAYS AS (DATA->'$.name');#创建虚拟列user_name,内容是data中的name
ALTER TABLE USER ADD INDEX IDX_NAME(USER_NAME);#创建user_name是索引
SELECT * FROM USER WHERE USER_NAME = '"wang"';

在这里插入图片描述

INSERT INTO USER(UID,DATA) VALUES (NULL,'{"name":"pan","address":"sichuan"}');#后续插入数据时注意虚拟列中不允许插入值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值