MySQL5.7中使用JSON
一、简介
因为项目需要,存储字段存储成了JSON格式,MySQL5.7开始就原生支持JSON了。
二、创建表
CREATE TABLE `user` ( `uid` int(11) NOT NULL AUTO_INCREMENT, `info` json DEFAULT NULL, #注意desc字段类型为json PRIMARY KEY (`uid`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
在MySQL5.7后,多了一个字段类型:json
原生的JSON优势如下:
1.存储上类似text,可以丰非常大的数据。
2.JSON有效性检查:插入的数据必须是JSON类型的字符串才行。
3.相比于传统形式,不需要遍历所有字符串才能找到数据。
4.支持索引:通过虚拟列的功能可以对JSON中部分的数据进行索引。
三、使用
1.插入SQL语句,注意info字段必须要是json类型,否则插入失败
INSERT INTO `user`(`uid`,`info`) VALUES (1,'{\"mail\": \"jiangchengyao@gmail.com\", \"name\": \"David\", \"address\": \"Shangahai\"}'),(2,'{\"mail\": \"amy@gmail.com\", \"name\": \"Amy\"}');
2.简单查询
SELECT uid,json_extract(info,'$.mail') AS 'mail',json_extract(info,'$.name') AS 'name' FROM USER;
结果是:
四、说明
对于某一列是json而言,需要使用内置的函数json_extract(列名, '$.key')这个函数有2个参数,第一个参数是json列的列名,第二个参数$.key其中key为json字符串中某一个key。