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

MySQL數據庫基礎學習之JSON函數各類操作詳解

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

前言

很多日常業(yè)務場景都會用到json文件作為數據存儲起來,而mysql5.7以上就提供了存儲json的支撐。往常存儲json一般都保留在pg庫或者是hive庫里面,現在mysql有了支持的話基本業(yè)務都可以用mysql來實現。現在mysql8.x版本對json字符出處理已經做的非常完善了?,F在就讓我們來詳細了解一下關于json數據數據類型mysql都有哪些函數能夠對其進行操作。

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

一、JSON語法規(guī)則

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

JSON是一個標記符的序列。這套標記符包含六個構造字符、字符串、數字和三個字面名。

JSON是一個序列化的對象數組。

  • 數據為  鍵 / 值 (name/value)對;
  • 數據由逗號(,)分隔;
  • 大括號保存對象(object);
  • 方括號保存數組(Array);

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

如:

"code":"100"

對象由花括號括起來的逗號分割的成員構成,成員是字符串鍵和上文所述的由逗號分割的鍵值對組成: {“code”:20,"type":"mysql"}

數組是由方括號括起來的一組值構成:

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

復習完畢之后我們再來對mysql處理json函數實驗。

二、JSON函數

首先我們創(chuàng)建一個表來進行操作:

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

接下來,向test_json數據表中插入數據。

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

可以使用“->”和“->>”查詢JSON數據中指定的內容。

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

1.JSON_CONTAINS(json_doc,value)函數

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

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

2.JSON_SEARCH()函數 

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

3.JSON_PRETTY(json_doc)函數

JSON_PRETTY(json_doc)函數以標準的格式顯示JSON數據。

 SELECT JSON_PRETTY(content) FROM json_test ;

4.JSON_DEPTH(json_doc)函數

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

 SELECT JSON_DEPTH(content) FROM json_test;

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

JSON_LENGTH(json_doc[,path])函數返回JSON數據的長度。

SELECT JSON_LENGTH(content) FROM json_test;

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

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

 SELECT JSON_KEYS(content) FROM json_test;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

11.JSON_TYPE(json_val)函數

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

 SELECT JSON_TYPE(content) FROM json_test ;

12. JSON_VALID(value)函數

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

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

到此這篇關于MySQL數據庫基礎學習之JSON函數各類操作詳解的文章就介紹到這了,更多相關MySQL JSON函數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • EF(EntityFramework) 插入或更新數據報錯的解決方法

    EF(EntityFramework) 插入或更新數據報錯的解決方法

    出現EF(EntityFramework) 插入或更新數據報錯的問題怎么解決呢?下面小編就為大家分析一下錯誤原因及解決方法。一起跟隨小編過來看看吧
    2017-12-12
  • centos 6下安裝innodb_ruby

    centos 6下安裝innodb_ruby

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

    MySQL中查詢json格式的字段實例詳解

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

    mysql累加計算實現方法詳解

    這篇文章主要介紹了mysql累加計算實現方法,結合實例形勢分析了mysql累加計算原理、實現方法及操作注意事項,需要的朋友可以參考下
    2020-05-05
  • MySQL數據庫安裝后服務無法啟動的解決辦法

    MySQL數據庫安裝后服務無法啟動的解決辦法

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

    MySQL的鎖機制使用詳解

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

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

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

    MySQL 有關MHA搭建與切換的幾個錯誤log匯總

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

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

    這篇文章主要給大家介紹了關于MySQL 8新特性:持久化全局變量的修改的相關內容,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07
  • mysql修改數據庫默認路徑無法啟動問題的解決

    mysql修改數據庫默認路徑無法啟動問題的解決

    這篇文章主要給大家介紹了關于mysql修改數據庫默認路徑無法啟動問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11

最新評論

阳信县| 调兵山市| 贡觉县| 台中县| 通海县| 珠海市| 车致| 玉屏| 施甸县| 陇南市| 凉城县| 鄄城县| 彰武县| 利津县| 台安县| 班玛县| 利津县| 苍溪县| 靖江市| 新巴尔虎右旗| 乌苏市| 汉中市| 积石山| 曲阜市| 泰顺县| 库车县| 湖南省| 张掖市| 房山区| 周至县| 留坝县| 张北县| 昌图县| 高安市| 临西县| 南投县| 高陵县| 和田市| 湘阴县| 卢氏县| 马尔康县|