一、简介
因为项目需要,存储字段存储成了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。
Original: https://www.cnblogs.com/mayi0312/p/13649698.html
Author: 骑着螞蟻流浪
Title: MySQL5.7中使用JSON
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/602058/
转载文章受原作者版权保护。转载请注明原作者出处!