欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL數(shù)據(jù)庫(kù)基礎(chǔ)學(xué)習(xí)之JSON函數(shù)各類操作詳解

 更新時(shí)間:2023年02月17日 09:55:19   作者:fanstuck  
很多日常業(yè)務(wù)場(chǎng)景都會(huì)用到j(luò)son文件作為數(shù)據(jù)存儲(chǔ)起來(lái),而mysql5.7以上就提供了存儲(chǔ)json的支撐。這篇文章就為大家整理了MySQL中JSON函數(shù)的各類操作,感興趣的可以了解一下

前言

很多日常業(yè)務(wù)場(chǎng)景都會(huì)用到j(luò)son文件作為數(shù)據(jù)存儲(chǔ)起來(lái),而mysql5.7以上就提供了存儲(chǔ)json的支撐。往常存儲(chǔ)json一般都保留在pg庫(kù)或者是hive庫(kù)里面,現(xiàn)在mysql有了支持的話基本業(yè)務(wù)都可以用mysql來(lái)實(shí)現(xiàn)?,F(xiàn)在mysql8.x版本對(duì)json字符出處理已經(jīng)做的非常完善了。現(xiàn)在就讓我們來(lái)詳細(xì)了解一下關(guān)于json數(shù)據(jù)數(shù)據(jù)類型mysql都有哪些函數(shù)能夠?qū)ζ溥M(jìn)行操作。

該系列文章將按照這個(gè)脈絡(luò)行文,此系列文章將被納入我的專欄一文速學(xué)SQL各類數(shù)據(jù)庫(kù)操作,基本覆蓋到使用SQL處理日常業(yè)務(wù)以及常規(guī)的查詢建庫(kù)分析以及復(fù)雜操作方方面面的問(wèn)題。從基礎(chǔ)的建庫(kù)建表逐步入門到處理各類數(shù)據(jù)庫(kù)復(fù)雜操作,以及專業(yè)的SQL常用函數(shù)講解都花費(fèi)了大量時(shí)間和心思創(chuàng)作,如果大家有需要從事數(shù)據(jù)分析或者數(shù)據(jù)開(kāi)發(fā)的朋友推薦訂閱專欄,將在第一時(shí)間學(xué)習(xí)到最實(shí)用常用的知識(shí)。此篇博客篇幅較長(zhǎng),值得細(xì)讀實(shí)踐一番,我會(huì)將精華部分挑出細(xì)講實(shí)踐。博主會(huì)長(zhǎng)期維護(hù)博文,有錯(cuò)誤或者疑惑可以在評(píng)論區(qū)指出,感謝大家的支持。

一、JSON語(yǔ)法規(guī)則

首先我們還是先復(fù)習(xí)一遍json數(shù)據(jù)類型的語(yǔ)法規(guī)則,這在我的很多文章都有寫到:

JSON是一個(gè)標(biāo)記符的序列。這套標(biāo)記符包含六個(gè)構(gòu)造字符字符串、數(shù)字和三個(gè)字面名。

JSON是一個(gè)序列化的對(duì)象數(shù)組。

  • 數(shù)據(jù)為  鍵 / 值 (name/value)對(duì);
  • 數(shù)據(jù)由逗號(hào)(,)分隔;
  • 大括號(hào)保存對(duì)象(object);
  • 方括號(hào)保存數(shù)組(Array);

可以是對(duì)象數(shù)組、數(shù)字字符串或者三個(gè)字面值(false、null、true)中的一個(gè)。值中的字面值中的英文必須使用小寫。

如:

"code":"100"

對(duì)象由花括號(hào)括起來(lái)的逗號(hào)分割的成員構(gòu)成,成員是字符串鍵和上文所述的由逗號(hào)分割的鍵值對(duì)組成: {“code”:20,"type":"mysql"}

數(shù)組是由方括號(hào)括起來(lái)的一組值構(gòu)成:

"datesource":[
{"code":"20", "type":"mysql"},
{"code":"20", "type":"mysql"},
{"code":"20", "type":"mysql"}
]

復(fù)習(xí)完畢之后我們?cè)賮?lái)對(duì)mysql處理json函數(shù)實(shí)驗(yàn)。

二、JSON函數(shù)

首先我們創(chuàng)建一個(gè)表來(lái)進(jìn)行操作:

create TABLE json_test(
	id int not null primary key auto_increment,
	content json
	);

接下來(lái),向test_json數(shù)據(jù)表中插入數(shù)據(jù)。

insert into json_test(content) values('{"name":"fanstuck","age":23,"address":{"province":"zhejiang","city":"hangzhou"}}')

可以使用“->”和“->>”查詢JSON數(shù)據(jù)中指定的內(nèi)容。

SELECT content->'$.name' FROM json_test where id =1;

1.JSON_CONTAINS(json_doc,value)函數(shù)

JSON_CONTAINS(json_doc,value)函數(shù)查詢JSON類型的字段中是否包含value數(shù)據(jù)。如果包含則返回1,否則返回0。其中,json_doc為JSON類型的數(shù)據(jù),value為要查找的數(shù)據(jù)。

SELECT JSON_CONTAINS(content, '{"name":"fanstuck"}') FROM json_test ;    

2.JSON_SEARCH()函數(shù) 

SELECT JSON_SEARCH(content ->> '$.address', 'all', 'nanchang') FROM json_test ;

3.JSON_PRETTY(json_doc)函數(shù)

JSON_PRETTY(json_doc)函數(shù)以標(biāo)準(zhǔn)的格式顯示JSON數(shù)據(jù)。

 SELECT JSON_PRETTY(content) FROM json_test ;

4.JSON_DEPTH(json_doc)函數(shù)

JSON_DEPTH(json_doc)函數(shù)返回JSON數(shù)據(jù)的最大深度。

 SELECT JSON_DEPTH(content) FROM json_test;

5.JSON_LENGTH(json_doc[,path])函數(shù)

JSON_LENGTH(json_doc[,path])函數(shù)返回JSON數(shù)據(jù)的長(zhǎng)度。

SELECT JSON_LENGTH(content) FROM json_test;

6.JSON_KEYS(json_doc[,path])函數(shù)

JSON_KEYS(json_doc[,path])函數(shù)返回JSON數(shù)據(jù)中頂層key組成的JSON數(shù)組。

 SELECT JSON_KEYS(content) FROM json_test;

7. JSON_INSERT(json_doc,path,val[,path,val] ...)函數(shù)

JSON_INSERT(json_doc,path,val[,path,val] ...)函數(shù)用于向JSON數(shù)據(jù)中插入數(shù)據(jù)。

{"age": 23, "name": "fanstuck", "address": {"ip": "192.168.12.12", "city": "hangzhou", "province": "zhejiang"}}

可以看到,JSON_INSERT()函數(shù)并沒(méi)有更新數(shù)據(jù)表中的數(shù)據(jù),只是修改了顯示結(jié)果。

8.JSON_REMOVE(json_doc,path[,path] ...)函數(shù)

JSON_REMOVE(json_doc,path[,path] ...)函數(shù)用于移除JSON數(shù)據(jù)中指定key的數(shù)據(jù)。

 SELECT JSON_REMOVE(content, '$.address.city') FROM json_test WHERE id = 2;

9.JSON_REPLACE(json_doc,path,val[,path,val] ...)函數(shù)

JSON_REPLACE(json_doc,path,val[,path,val] ...)函數(shù)用于更新JSON數(shù)據(jù)中指定Key的數(shù)據(jù)。

SELECT JSON_REPLACE(content,'$.age',20) FROM json_test ;

 可以看到,JSON_REPLACE()函數(shù)并沒(méi)有更新數(shù)據(jù)表中的數(shù)據(jù),只是修改了顯示結(jié)果。

10.JSON_SET(json_doc,path,val[,path,val] ...)函數(shù)

JSON_SET(json_doc,path,val[,path,val] ...)函數(shù)用于向JSON數(shù)據(jù)中插入數(shù)據(jù)。

 SELECT JSON_SET(content, '$.address.street', 'xxx街道') FROM json_test WHERE id = 1;

11.JSON_TYPE(json_val)函數(shù)

JSON_TYPE(json_val)函數(shù)用于返回JSON數(shù)據(jù)的JSON類型,MySQL中支持的JSON類型除了可以是MySQL中的數(shù)據(jù)類型外,還可以是OBJECT和ARRAY類型,其中OBJECT表示JSON對(duì)象,ARRAY表示JSON數(shù)組。

 SELECT JSON_TYPE(content) FROM json_test ;

12. JSON_VALID(value)函數(shù)

JSON_VALID(value)函數(shù)用于判斷value的值是否是有效的JSON數(shù)據(jù),如果是,則返回1,否則返回0,如果value的值為NULL,則返回NULL。

 SELECT JSON_VALID('{"name":"binghe"}'), JSON_VALID('name'), JSON_VALID(NULL);

到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)基礎(chǔ)學(xué)習(xí)之JSON函數(shù)各類操作詳解的文章就介紹到這了,更多相關(guān)MySQL JSON函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • EF(EntityFramework) 插入或更新數(shù)據(jù)報(bào)錯(cuò)的解決方法

    EF(EntityFramework) 插入或更新數(shù)據(jù)報(bào)錯(cuò)的解決方法

    出現(xiàn)EF(EntityFramework) 插入或更新數(shù)據(jù)報(bào)錯(cuò)的問(wèn)題怎么解決呢?下面小編就為大家分析一下錯(cuò)誤原因及解決方法。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • centos 6下安裝innodb_ruby

    centos 6下安裝innodb_ruby

    innodb_ruby 是使用 Ruby 編寫的 InnoDB 文件格式解析器。innodb_ruby 的目的是暴露一些其他隱藏的 InnoDB 原理。這些代碼并不適合生產(chǎn)環(huán)境使用。
    2017-01-01
  • MySQL中查詢json格式的字段實(shí)例詳解

    MySQL中查詢json格式的字段實(shí)例詳解

    這篇文章主要給大家介紹了關(guān)于MySQL中查詢json格式字段的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • mysql累加計(jì)算實(shí)現(xiàn)方法詳解

    mysql累加計(jì)算實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了mysql累加計(jì)算實(shí)現(xiàn)方法,結(jié)合實(shí)例形勢(shì)分析了mysql累加計(jì)算原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • MySQL數(shù)據(jù)庫(kù)安裝后服務(wù)無(wú)法啟動(dòng)的解決辦法

    MySQL數(shù)據(jù)庫(kù)安裝后服務(wù)無(wú)法啟動(dòng)的解決辦法

    作為一名程序猿,必不可少的便是和mysql打交道,那當(dāng)mysql故障,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)安裝后服務(wù)無(wú)法啟動(dòng)的解決辦法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • MySQL的鎖機(jī)制使用詳解

    MySQL的鎖機(jī)制使用詳解

    這篇文章主要介紹了MySQL的鎖機(jī)制使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Windows版mysql?8.0.28?安裝配置方法圖文教程

    Windows版mysql?8.0.28?安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了Windows版mysql?8.0.28?安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • MySQL 有關(guān)MHA搭建與切換的幾個(gè)錯(cuò)誤log匯總

    MySQL 有關(guān)MHA搭建與切換的幾個(gè)錯(cuò)誤log匯總

    這篇文章主要介紹了MySQL 有關(guān)MHA搭建與切換的幾個(gè)錯(cuò)誤log匯總,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2020-12-12
  • MySQL8新特性:持久化全局變量的修改方法

    MySQL8新特性:持久化全局變量的修改方法

    這篇文章主要給大家介紹了關(guān)于MySQL 8新特性:持久化全局變量的修改的相關(guān)內(nèi)容,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • mysql修改數(shù)據(jù)庫(kù)默認(rèn)路徑無(wú)法啟動(dòng)問(wèn)題的解決

    mysql修改數(shù)據(jù)庫(kù)默認(rèn)路徑無(wú)法啟動(dòng)問(wèn)題的解決

    這篇文章主要給大家介紹了關(guān)于mysql修改數(shù)據(jù)庫(kù)默認(rèn)路徑無(wú)法啟動(dòng)問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11

最新評(píng)論