MySQL JSON測試


1. 建立資料表
如同一般資料表般,只需要將資料類型指定為"json"即可
CREATE TABLE `j_t` (
`no` int(11) NOT NULL AUTO_INCREMENT,
`document` json DEFAULT NULL,
 PRIMARY KEY (`no`)
) ENGINE=InnoDB;

2. 新增資料
insert into j_t values(0,'{"id":221, "name":"Joe Yu"}');
insert into j_t values(0,'{"id":8891, "name":"Janne", "mobile":"00-1110-2222", "Address": "Taiwan, Taipei"}');
3. 其他操作
.一般查詢

.jsn_extract():可以針對json中的特定欄位查詢

.jsn_insert():針對條件新增資料

.jsn_remove():移除某個欄位

.jsn_set():類似於jsn_insert,如果欄位不存在將會新增,若欄位存在則更新內容,如果不想影響其他筆資料則可以下where條件來指定資料

.jsn_replace():只會對符合條件的資料進行更新

.jsn_append():將資料附加到array的後面

.jsn_merge():可以把幾個陣列資料透過jsn_array()合在一起後放入一個陣列中

.透過json中的欄位建index

.jsn_length():json欄位的長度

.jsn_depth():json欄位的深度,單純key-value深度即是2,若還有陣列在value裡深度就會是3

.jsn_keys():意即該json欄位中有多個key

 .jsn_contains_path():查詢元素存在於哪些資料路徑當中,在下圖的範例中我查詢"mobile" 這個key僅存在於第1、4筆當中
其中"all"這個代表"and",jsn_contains_path()可以同時查詢多個元素,如果要查詢'$.Address','$.name'這2個元素只要有一個存在就成立的話,前面的"all"就要改成"one"(當or使用),請看下圖範例

.jsn_contains():用來找尋JSON內容的函數,雖然也可以透過jsn_extract來找尋,但jsn_extract無法針對array或內嵌文件來進行搜尋,反之jsn_contains則可以,參考以下範例

.jsn_search():用來查詢該值存在於陣例中的哪個位置,但缺點是,若是內嵌文件的陣列,它似乎無法搜尋均回復[0],另外它也可以像一般SQL語法一樣使用%,例如select jsn_search(document,'one','%ing')from j_t;

.jsn_type():用以確認該欄位的類型



資料參考:
http://mysqlserverteam.com/json-labs-release-native-json-data-type-and-binary-format/
http://mysqlserverteam.com/json-labs-release-json-functions-part-1-manipulation-json-data/

留言

這個網誌中的熱門文章

【工作筆記】SQL Timeout追蹤

MySQL監控軟體MEM及PMM介紹

MySQL Router 設定檔說明