一、簡介
因為項目需要,存儲字段存儲成了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。