首頁  >  文章  >  資料庫  >  Mysql5.7中關於JSON函數運算的實例詳解

Mysql5.7中關於JSON函數運算的實例詳解

黄舟
黄舟原創
2017-07-27 15:33:281447瀏覽

本文給大家分享的是在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 (
&#39;体验 Mysql JSON&#39; ,
&#39;["Mysql", "Database"]&#39;
);

這裡插入的是一個JOSN 數組[“Mysql”, “Database”]

查詢article 表中的所有內容,可以看到新插入的這條資料

查詢

使用JSON 函數做兩個簡單的查詢

1.尋找帶有標籤”Mysql”的所有文章

<br>

SELECT * FROM article`
WHERE JSON_CONTAINS(tags, &#39;["Mysql"]&#39; );

2.查找標籤中以”Data”開頭的文章

<br>

SELECT * FROM article`
WHERE JSON_SEARCH(tags, &#39;one&#39; , &#39;Data%&#39; ) IS NOT NULL ;

JSON_SEARCH 函數中3個參數的意義:

1.要尋找的文件

2.尋找的範圍,有兩個選項,'one' 尋找第一個符合條件的,' all'尋找所有符合條件的

3.尋找的條件

JSON Path

JSON Path用來定位文件中的目標字段,例如

<br>

SELECT JSON_EXTRACT(
&#39;{"id": 1, "name": "mysql"}&#39; ,
&#39;$.name&#39;
);

結果為: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 &#39;tag&#39;
FROM article`;

更新資料

例如想為文章新增一個「dev」 tag,更新的條件是已經包含「Mysql」 標籤,而且還沒有「dev」 標籤的資料

更新語句如下:

<br>

UPDATE article`
SET tags = JSON_MERGE(tags, &#39;["dev"]&#39; )
WHERE
JSON_SEARCH(tags, &#39;one&#39; , &#39;dev&#39; ) IS NULL
AND
JSON_SEARCH(tags, &#39;one&#39; , &#39;Mysql&#39; ) IS NOT NULL ;

可以看到成功加入了「dev」標籤

再例如想把「Mysql」 這個標籤更新為「Mysql 5.7.13″,更新語句如下:

UPDATE article` set tags = JSON_SET(tags, '$[0] ', 'Mysql 5.7.13' ) ;<br>

上面體驗了JSON_MERGE 和JSON_SET ,用來修改JSON的函數還有很多,例如:

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>向數組尾追加資料

#JSON_REMOVE(doc, path [, path]…)

<br>從指定位置移除資料

透過初步的操作體驗,感覺Mysql 的JSON 操作還是比較順暢的,以後可以在mysql中使用文檔結構確實很方便

以上是Mysql5.7中關於JSON函數運算的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn