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

tech2023-06-22  106

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"}');#后续插入数据时注意虚拟列中不允许插入值
最新回复(0)