最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MYSQL中的json數(shù)據(jù)操作代碼

 更新時(shí)間:2022年09月28日 16:05:44   作者:代碼可以改變世界你我  
這篇文章主要介紹了MYSQL中的json數(shù)據(jù)操作,主要包括基礎(chǔ)查詢操作,JSON函數(shù)操作,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

MYSQL中的json數(shù)據(jù)操作

1.2 基礎(chǔ)查詢操作

用法提示:

  • 如果json字符串不是數(shù)組,則直接使用$.字段名
  • 如果json字符串是數(shù)組[Array],則直接使用$[對(duì)應(yīng)元素的索引id]

1.2.1 一般json查詢

使用json字段名->’$.json屬性’進(jìn)行查詢條件,注意:如果 ‘->’ 不能用也可用 ‘->>’ 查詢
舉個(gè)例子:如果想查詢deptLeader=張五的數(shù)據(jù),那么sql語(yǔ)句如下:

SELECT * from dept WHERE json_value->'$.deptLeaderId'='5';

1.2.2 多個(gè)條件查詢

比如想查dept為“部門3”和deptLeaderId=5的數(shù)據(jù),sql如下:

SELECT * from dept WHERE json_value->'$.deptLeaderId'='5' and json_value->'$.deptId'='5';

1.2.3 json中多個(gè)字段關(guān)系查詢

比如想查詢json格式中deptLeader=張五和deptId=5的數(shù)據(jù)

SELECT * from dept WHERE json_value->'$.deptLeaderId'='5' and json_value->'$.deptId'='5';

1.2.4 關(guān)聯(lián)表查詢

這里我們要連表查詢?cè)赿ept 表中部門leader在dept_leader 中的詳情

SELECT * from dept,dept_leader 
WHERE dept.json_value->'$.deptLeaderId'=dept_leader.json_value->'$.id' ;

1.3 JSON函數(shù)操作

寫到這里大家都發(fā)現(xiàn)了,我們查詢的json都是整條json數(shù)據(jù),這樣看起來(lái)不是很方便,那么如果我們只想看json中的某個(gè)字段怎么辦?

1.3.1 官方j(luò)son函數(shù)

NameDescription解釋
->Return value from JSON column after evaluating path; equivalent to JSON_EXTRACT()計(jì)算路徑后返回JSON列的值;相當(dāng)于JSON_EXTRACT ()
->>Return value from JSON column after evaluating path and unquoting the result; equivalent to JSON_UNQUOTE(JSON_EXTRACT()).從JSON列返回值后,就算路徑和取消引號(hào)的結(jié)果;相當(dāng)于JSON_UNQUOTE (JSON_EXTRACT ())
JSON_ARRAY()Create JSON array創(chuàng)建JSON數(shù)組
JSON_ARRAY_APPEND()Append data to JSON document向JSON文檔追加數(shù)據(jù)
JSON_ARRAY_INSERT()Insert into JSON array插入JSON數(shù)組
JSON_CONTAINS()Whether JSON document contains specific object at pathJSON文檔是否包含路徑上的特定對(duì)象
JSON_CONTAINS_PATH()Whether JSON document contains any data at pathJSON文檔是否在路徑上包含任何數(shù)據(jù)
JSON_DEPTH()Maximum depth of JSON documentJSON文檔的最大深度
JSON_EXTRACT()Return data from JSON document從JSON文檔返回?cái)?shù)據(jù)
JSON_INSERT()Insert data into JSON document將數(shù)據(jù)插入JSON文檔
JSON_KEYS()Array of keys from JSON document來(lái)自JSON文檔的鍵數(shù)組
JSON_LENGTH()Number of elements in JSON documentJSON文檔中的元素?cái)?shù)量
JSON_MERGE_PATCH()Merge JSON documents, replacing values of duplicate keys合并JSON文檔,替換重復(fù)鍵的值
JSON_MERGE_PRESERVE()Merge JSON documents, preserving duplicate keys合并JSON文檔,保留重復(fù)的密鑰
JSON_OBJECT()Create JSON object創(chuàng)建JSON對(duì)象
JSON_OVERLAPS()Compares two JSON documents, returns TRUE (1) if these have any key-value pairs or array elements in common, otherwise FALSE (0)比較兩個(gè)JSON文檔,如果它們有共同的鍵值對(duì)或數(shù)組元素,則返回TRUE(1),否則返回FALSE (0)
JSON_PRETTY()Print a JSON document in human-readable format以人類可讀的格式打印JSON文檔
JSON_QUOTE()Quote JSON document引用JSON文檔
JSON_REMOVE()Remove data from JSON document從JSON文檔中刪除數(shù)據(jù)
JSON_REPLACE()Replace values in JSON document替換JSON文檔中的值
JSON_SCHEMA_VALID()Validate JSON document against JSON schema; returns TRUE/1 if document validates against schema, or FALSE/0 if it does not針對(duì)JSON模式驗(yàn)證JSON文檔;如果文檔針對(duì)模式進(jìn)行驗(yàn)證,則返回TRUE/1,否則返回FALSE/0
JSON_SCHEMA_VALIDATION_REPORT()Validate JSON document against JSON schema; returns report in JSON format on outcome on validation including success or failure and reasons for failure針對(duì)JSON模式驗(yàn)證JSON文檔;以JSON格式返回關(guān)于驗(yàn)證結(jié)果的報(bào)告,包括成功或失敗以及失敗原因
JSON_SEARCH()Path to value within JSON documentJSON文檔中值的路徑
JSON_SET()Insert data into JSON document將數(shù)據(jù)插入JSON文檔
JSON_STORAGE_FREE()Freed space within binary representation of JSON column value following partial update在部分更新后釋放JSON列值的二進(jìn)制表示形式中的空間
JSON_STORAGE_SIZE()pace used for storage of binary representation of a JSON document用于存儲(chǔ)JSON文檔的二進(jìn)制表示的空間
JSON_TABLE()Return data from a JSON expression as a relational table以關(guān)系表的形式從JSON表達(dá)式返回?cái)?shù)據(jù)
JSON_TYPE()Type of JSON valueJSON值類型
JSON_UNQUOTE()Unquote JSON value不引用JSON值
JSON_VALID()Whether JSON value is validJSON值是否有效
JSON_VALUE()Extract value from JSON document at location pointed to by path provided; return this value as VARCHAR(512) or specified type根據(jù)所提供的路徑從JSON文檔中所指向的位置提取值;返回該值為VARCHAR(512)或指定的類型
MEMBER OF()Returns true (1) if first operand matches any element of JSON array passed as second operand, otherwise returns false (0)如果第一個(gè)操作數(shù)匹配作為第二個(gè)操作數(shù)的JSON數(shù)組中的任何元素,則返回true(1),否則返回false (0)

1.3.2 ->、->>區(qū)別

->field中使用的時(shí)候結(jié)果帶引號(hào),->>的結(jié)果不帶引號(hào)

1.3.2.2 在where條件中使用

特別注意:->當(dāng)做where查詢是要注意類型的,->>是不用注意類型的

1.3.3 json_extract():從json中返回想要的字段

用法:json_extract(字段名,$.json字段名)

select id,json_extract(json_value,'$.deptName') as deptName from dept;

1.3.4 JSON_CONTAINS():JSON格式數(shù)據(jù)是否在字段中包含特定對(duì)象

用法: JSON_CONTAINS(target, candidate[, path])
事例:如果我們想查詢包含deptName=部門5的對(duì)象

select * from dept WHERE JSON_CONTAINS(json_value, JSON_OBJECT("deptName","部門5"))

1.3.5 SON_OBJECT():將一個(gè)鍵值對(duì)列表轉(zhuǎn)換成json對(duì)象

比如我們想查詢某個(gè)對(duì)象里面的值等于多少
比如我們添加這么一組數(shù)據(jù)到dept表中:

insert into dept VALUES(6,'部門9','{"deptName": {"dept":"de","depp":"dd"}, "deptId": "5", "deptLeaderId": "5"}');

我們可以看到deptName中還有一個(gè)對(duì)象,里面還有dept和depp兩個(gè)屬性字段,那么我們應(yīng)該怎么查詢depp=dd的員工呢。

用法:JSON_OBJECT([key, val[, key, val] …])
事例:

SELECT * from (
    SELECT *,json_value->'$.deptName' as deptName FROM dept
) t WHERE JSON_CONTAINS(deptName,JSON_OBJECT("depp","dd"));

1.3.6 JSON_ARRAY():創(chuàng)建JSON數(shù)組

比如我們添加這么一組數(shù)據(jù)到dept表中:

insert into dept VALUES(7,'部門9','{"deptName": ["1","2","3"], "deptId": "5", "deptLeaderId": "5"}');
insert into dept VALUES(7,'部門9','{"deptName": ["5","6","7"], "deptId": "5", "deptLeaderId": "5"}');

用法:JSON_ARRAY([val[, val] …])

事例:我們要查詢deptName包含1的數(shù)據(jù)

SELECT * from dept WHERE JSON_CONTAINS(json_value->'$.deptName',JSON_ARRAY("1"))

1.3.7 JSON_TYPE():查詢某個(gè)json字段屬性類型

用法:JSON_TYPE(json_val)
事例:比如我們想查詢deptName的字段屬性是什么

SELECT json_value->'$.deptName' ,JSON_TYPE(json_value->'$.deptName') as type from dept 

1.3.8 JSON_KEYS():JSON文檔中的鍵數(shù)組

用法:JSON_KEYS(json_value)
事例:比如我們想查詢json格式數(shù)據(jù)中的所有key

SELECT JSON_KEYS(json_value) FROM dept 

接下來(lái)的3種函數(shù)都是新增數(shù)據(jù)類型的:
JSON_SET(json_doc, path, val[, path, val] …)
JSON_INSERT(json_doc, path, val[, path, val] …)
JSON_REPLACE(json_doc, path, val[, path, val] …)1.3.9 JSON_SET():將數(shù)據(jù)插入JSON格式中,有key則替換,無(wú)key則新增

這也是我們開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)用到的一個(gè)函數(shù)
用法:JSON_SET(json_doc, path, val[, path, val] …)
事例:比如我們想針對(duì)id=2的數(shù)據(jù)新增一組:newData:新增的數(shù)據(jù),修改deptName為新增的部門1
sql語(yǔ)句如下:

update dept set json_value=JSON_SET('{"deptName": "部門2", "deptId": "2", "deptLeaderId": "4"}','$.deptName','新增的部門1','$.newData','新增的數(shù)據(jù)') WHERE id=2;

注意json_doc如果不帶這個(gè)單元格之前的值,之前的值是會(huì)新值被覆蓋的,比如我們?nèi)绻碌恼Z(yǔ)句換成:

update dept set json_value=JSON_SET('{"a":"1","b":"2"}','$.deptName','新增的部門1','$.newData','新增的數(shù)據(jù)') WHERE id=2我們可以看到這里json_doc是{“a”:“1”,“b”:“2”},這樣的話會(huì)把之前的單元格值覆蓋后再新增/覆蓋這個(gè)單元格字段

1.3.10 JSON_INSERT():插入值(往json中插入新值,但不替換已經(jīng)存在的舊值)

用法:JSON_INSERT(json_doc, path, val[, path, val] …)
事例:

UPDATE dept set json_value=JSON_INSERT('{"a": "1", "b": "2"}', '$.deptName', '新增的部門2','$.newData2','新增的數(shù)據(jù)2') 
WHERE id=2

我們可以看到由于json_doc變化將之前的值覆蓋了,新增了deptNamenewData2.
如果我們?cè)賵?zhí)行以下剛才的那個(gè)sql,只是換了value,我們會(huì)看到里面的key值不會(huì)發(fā)生變化。
因?yàn)檫@個(gè)函數(shù)只負(fù)責(zé)往json中插入新值,但不替換已經(jīng)存在的舊值。

1.3.11 JSON_REPLACE()

用法:JSON_REPLACE(json_doc, path, val[, path, val] …)
用例:
如果我們要更新id=2數(shù)據(jù)中newData2的值為:更新的數(shù)據(jù)2
sql語(yǔ)句如下:

UPDATE dept set json_value=JSON_REPLACE('{"a": "1", "b": "2", "deptName": "新增的部門2", "newData2": "新增的數(shù)據(jù)2"}', '$.newData2', '更新的數(shù)據(jù)2') WHERE id =2;

1.3.12 JSON_REMOVE():從JSON文檔中刪除數(shù)據(jù)

用法:JSON_REMOVE(json_doc, path[, path] …)
舉例:刪除key為a的字段。

UPDATE dept set json_value=JSON_REMOVE('{"a": "1", "b": "2", "deptName": "新增的部門2", "newData2": "更新的數(shù)據(jù)2"}','$.a') WHERE id =2;

到此這篇關(guān)于MYSQL中的json數(shù)據(jù)操作的文章就介紹到這了,更多相關(guān)mysql json數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于case when語(yǔ)句的報(bào)錯(cuò)問(wèn)題詳解

    關(guān)于case when語(yǔ)句的報(bào)錯(cuò)問(wèn)題詳解

    SQL CASE 表達(dá)式是一種通用的條件表達(dá)式,類似于其它語(yǔ)言中的 if/else 語(yǔ)句,下面這篇文章主要給大家介紹了關(guān)于case when語(yǔ)句的報(bào)錯(cuò)問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-08-08
  • mysql 隊(duì)列 實(shí)現(xiàn)并發(fā)讀

    mysql 隊(duì)列 實(shí)現(xiàn)并發(fā)讀

    隊(duì)列是常用的數(shù)據(jù)結(jié)構(gòu),基本特點(diǎn)就是先入先出,在事務(wù)處理等方面都要用到它,有的時(shí)候是帶有優(yōu)先級(jí)的隊(duì)列。當(dāng)隊(duì)列存在并發(fā)訪問(wèn)的時(shí)候,比如多線程情況下,就需要鎖機(jī)制來(lái)保證隊(duì)列中的同一個(gè)元素不被多次獲取
    2012-04-04
  • Mysql?COUNT()函數(shù)基本用法及應(yīng)用詳解

    Mysql?COUNT()函數(shù)基本用法及應(yīng)用詳解

    這篇文章主要介紹了Mysql?COUNT()函數(shù)基本用法及應(yīng)用的相關(guān)資料,COUNT()函數(shù)是SQL中常用的聚合函數(shù),用于統(tǒng)計(jì)滿足特定條件的記錄數(shù),它可以靈活地應(yīng)用于各種查詢場(chǎng)景,幫助用戶快速獲取所需的數(shù)據(jù)統(tǒng)計(jì)信息,需要的朋友可以參考下
    2024-12-12
  • Win中安裝mysql的詳細(xì)步驟

    Win中安裝mysql的詳細(xì)步驟

    這篇文章主要為大家詳細(xì)介紹了Win中安裝mysql的詳細(xì)步驟,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • MySQL配置文件無(wú)法修改的解決方法(Win10)

    MySQL配置文件無(wú)法修改的解決方法(Win10)

    這篇文章主要為大家詳細(xì)介紹了MySQL配置文件無(wú)法修改的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • net?start?mysql服務(wù)名無(wú)效的三種解決方法

    net?start?mysql服務(wù)名無(wú)效的三種解決方法

    這篇文章主要介紹了net?start?mysql服務(wù)名無(wú)效的三種解決方法,通過(guò)圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-08-08
  • MySQL隔離級(jí)別和鎖機(jī)制的深入講解

    MySQL隔離級(jí)別和鎖機(jī)制的深入講解

    這篇文章主要給大家介紹了關(guān)于MySQL隔離級(jí)別和鎖機(jī)制的相關(guān)資料,主要包括深入理解MySQL隔離級(jí)別和鎖機(jī)制使用實(shí)例、應(yīng)用技巧、基本知識(shí)點(diǎn)總結(jié)和需要注意事項(xiàng),需要的朋友可以參考下
    2021-08-08
  • mysql 8.0.15 winx64解壓版安裝配置方法圖文教程

    mysql 8.0.15 winx64解壓版安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.15 winx64解壓版安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • MySQL?where和having的異同

    MySQL?where和having的異同

    我們?cè)谶M(jìn)行查詢的時(shí)候,經(jīng)常需要按照條件對(duì)查詢結(jié)果進(jìn)行篩選,這就要用到條件語(yǔ)句where和having了,本文主要介紹了MySQL?where和having的異同,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • 101個(gè)MySQL優(yōu)化技巧和提示

    101個(gè)MySQL優(yōu)化技巧和提示

    人們一直在推動(dòng)MySQL發(fā)展到它的極限。這里是101條調(diào)節(jié)和優(yōu)化MySQL安裝的技巧。一些技巧是針對(duì)特定的安裝環(huán)境的,但這些思路是通用的。我已經(jīng)把他們分成幾類,來(lái)幫助你掌握更多MySQL的調(diào)節(jié)和優(yōu)化技巧。
    2014-02-02

最新評(píng)論

临江市| 北川| 辛集市| 弥勒县| 城口县| 高雄县| 布拖县| 金川县| 会昌县| 张北县| 桂东县| 平阴县| 灵寿县| 汉源县| 丘北县| 钟祥市| 盖州市| 边坝县| 额敏县| 桃江县| 石景山区| 黔江区| 图们市| 衡阳县| 如东县| 商河县| 卢龙县| 夹江县| 仙居县| 大洼县| 福泉市| 卫辉市| 高淳县| 永昌县| 轮台县| 平和县| 八宿县| 噶尔县| 乌海市| 嘉善县| 芦溪县|