首頁 資料庫 mysql教程 Mysql5.7中關於JSON函數運算的實例詳解

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

Jul 27, 2017 pm 03:33 PM
javascript json

本文給大家分享的是在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 語句:


INSERT INTO article` (`title`, `tags`)
VALUES (
&#39;体验 Mysql JSON&#39; ,
&#39;[&quot;Mysql&quot;, &quot;Database&quot;]&#39;
);
登入後複製

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

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

查詢

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

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


SELECT * FROM article`
WHERE JSON_CONTAINS(tags, &#39;[&quot;Mysql&quot;]&#39; );
登入後複製

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


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用來定位文件中的目標字段,例如


SELECT JSON_EXTRACT(
&#39;{&quot;id&quot;: 1, &quot;name&quot;: &quot;mysql&quot;}&#39; ,
&#39;$.name&#39;
);
登入後複製

結果為:mysql

JSON_EXTRACT() 是JSON擷取函數, $.name 就是一個JSON path ,表示定位文件的name 欄位

JSON path是以$ 開頭,下面看幾個更多的範例


{
&quot;num&quot; : 123,
&quot;arr&quot; : [1, 2],
&quot;obj&quot; : {
&quot;a&quot; : 3,
&quot;b&quot; : 4
}
}
$.num //结果:123
$.arr //结果:[1, 2]
$.arr[1] //结果:1
$.obj.a //结果:3
$**.b //结果:4
登入後複製

使用JSON path 的查詢範例


##

SELECT
tags-&gt; &quot;$[0]&quot; as &#39;tag&#39;
FROM article`;
登入後複製

更新資料

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

更新語句如下:


UPDATE article`
SET tags = JSON_MERGE(tags, &#39;[&quot;dev&quot;]&#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

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MySQL5.7和MySQL8.0的差別是什麼? MySQL5.7和MySQL8.0的差別是什麼? Feb 19, 2024 am 11:21 AM

MySQL5.7和MySQL8.0的差別是什麼?

PHP 數組轉 JSON 的效能最佳化技巧 PHP 數組轉 JSON 的效能最佳化技巧 May 04, 2024 pm 06:15 PM

PHP 數組轉 JSON 的效能最佳化技巧

Jackson庫中註解如何控制JSON序列化和反序列化? Jackson庫中註解如何控制JSON序列化和反序列化? May 06, 2024 pm 10:09 PM

Jackson庫中註解如何控制JSON序列化和反序列化?

Pandas使用教學:讀取JSON檔案的快速入門 Pandas使用教學:讀取JSON檔案的快速入門 Jan 13, 2024 am 10:15 AM

Pandas使用教學:讀取JSON檔案的快速入門

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

簡易JavaScript教學:取得HTTP狀態碼的方法

深入了解PHP:JSON Unicode轉中文的實作方法 深入了解PHP:JSON Unicode轉中文的實作方法 Mar 05, 2024 pm 02:48 PM

深入了解PHP:JSON Unicode轉中文的實作方法

如何在JavaScript中取得HTTP狀態碼的簡單方法 如何在JavaScript中取得HTTP狀態碼的簡單方法 Jan 05, 2024 pm 01:37 PM

如何在JavaScript中取得HTTP狀態碼的簡單方法

PHP 數組轉 JSON 的快捷技巧 PHP 數組轉 JSON 的快捷技巧 May 03, 2024 pm 06:33 PM

PHP 數組轉 JSON 的快捷技巧

See all articles