本文給大家分享的是在mysql5.7中操作json的函數的使用方法以及相關示例,非常的實用,有需要的小伙伴可以參考下
前言
JSON是一種輕量級的資料交換格式,採用了獨立於語言的文字格式,類似XML,但是比XML簡單,易讀且易編寫。對機器來說易於解析和生成,並且會減少網路頻寬的傳輸。
JSON的格式非常簡單: 名稱/鍵值 。之前MySQL版本裡面要實現這樣的存儲,要嘛用VARCHAR要嘛用TEXT大文本。 MySQL5.7發布後,專門設計了JSON資料類型以及關於這種類型的檢索以及其他函數解析。
下面一起來實際操作一下。
建立帶有JSON 欄位的表格
例如一個'文章'表,欄位包括
id、標題title、標籤tags
一篇文章會有多個標籤,tags 就可以設為JSON 類型
建表語句如下:
<br>
CREATE TABLE article` ( id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, title` varchar (200) NOT NULL , tags` json DEFAULT NULL , PRIMARY KEY (`id`) ) ENGINE=InnoDB;
插入資料
插入一條帶有JSON 內容的數據,執行insert 語句:
<br>
INSERT INTO article` (`title`, `tags`) VALUES ( '体验 Mysql JSON' , '["Mysql", "Database"]' );
這裡插入的是一個JOSN 數組[“Mysql”, “Database”]
查詢article 表中的所有內容,可以看到新插入的這條資料
查詢
使用JSON 函數做兩個簡單的查詢
1.尋找帶有標籤”Mysql”的所有文章
<br>
SELECT * FROM article` WHERE JSON_CONTAINS(tags, '["Mysql"]' );
2.查找標籤中以”Data”開頭的文章
<br>
SELECT * FROM article` WHERE JSON_SEARCH(tags, 'one' , 'Data%' ) IS NOT NULL ;
JSON_SEARCH 函數中3個參數的意義:
1.要尋找的文件
2.尋找的範圍,有兩個選項,'one' 尋找第一個符合條件的,' all'尋找所有符合條件的
3.尋找的條件
JSON Path
JSON Path用來定位文件中的目標字段,例如
<br>
SELECT JSON_EXTRACT( '{"id": 1, "name": "mysql"}' , '$.name' );
結果為:mysql
JSON_EXTRACT() 是JSON擷取函數, $.name 就是一個JSON path ,表示定位文件的name 欄位
JSON path是以$ 開頭,下面看幾個更多的範例
<br>
{ "num" : 123, "arr" : [1, 2], "obj" : { "a" : 3, "b" : 4 } } $.num //结果:123 $.arr //结果:[1, 2] $.arr[1] //结果:1 $.obj.a //结果:3 $**.b //结果:4
使用JSON path 的查詢範例
<br>##
SELECT tags-> "$[0]" as 'tag' FROM article`;更新資料例如想為文章新增一個「dev」 tag,更新的條件是已經包含「Mysql」 標籤,而且還沒有「dev」 標籤的資料更新語句如下:
<br>
UPDATE article` SET tags = JSON_MERGE(tags, '["dev"]' ) WHERE JSON_SEARCH(tags, 'one' , 'dev' ) IS NULL AND JSON_SEARCH(tags, 'one' , 'Mysql' ) IS NOT NULL ;可以看到成功加入了「dev」標籤再例如想把「Mysql」 這個標籤更新為「Mysql 5.7.13″,更新語句如下:
UPDATE article` set tags = JSON_SET(tags, '$[0] ', 'Mysql 5.7.13' ) ;<br>
JSON_INSERT(doc, path, val[, path, val]…)<br>
JSON_REPLACE(doc, path, val[, path, val]…)<br>##取代資料
#JSON_ARRAY_APPEND(doc, path, val[, path, val]…)
<br>向數組尾追加資料
<br>
從指定位置移除資料
透過初步的操作體驗,感覺Mysql 的JSON 操作還是比較順暢的,以後可以在mysql中使用文檔結構確實很方便
以上是Mysql5.7中關於JSON函數運算的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!