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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM