日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

json mysql 字段 默认值_MySQL中的JSON类型

發布時間:2025/4/16 数据库 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 json mysql 字段 默认值_MySQL中的JSON类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言(廢話)

昨天抽了點時間在網上搜列了一個開源項目,項目挺完整的,前后臺分離還帶有微信小程序,我Clone下代碼,經過一番倒騰,嘿~還真就跑起來了。在這個過程中,體驗了一把VUE項目工程細節,因為之前沒有接觸過這一塊,所以還是花費了點時間,好在開源項目的QQ群里樓主幫忙看了一下,才得以順利往后進行。后來也有很多網友向樓主提問,也拋出了一些問題,其中有個問題到引起了我的注意。

有個小伙伴執行SQL的時候報錯了,以為項目中給的SQL腳本不全,但是在群里他并沒有給出報錯細節的截圖,樓主后來也就提示了他一句MySQL版本需要在5.7以上,但是后面就沒有更多消息了。

今天早上我還在上班路上,群里的小伙伴就私信我,說能否幫他看下數據庫的問題。等我到了公司再回復他的時候,他告訴我說數據庫問題已經解決了,我追問了一下細節,原來是開源項目中的數據庫建表語句中包含JSON類型字段,導致了他批量執行SQL腳本不成功。其實這樣的問題,在執行腳本的時候遇到錯誤是有日志的,詳細看下日志應該明了。

我其實是沒有注意到這個細節的,因為我前天安裝的數據庫就直接上了8.0,屏蔽了這個問題,但是,MySQL數據庫現在支持JSON類型,挺新奇的,因為之前沒有用過,并不熟悉,所以這一次,讓我逮到個了解它的機會。

關于MySQL的JSON類型

JSON估計大家伙都熟悉了,我就不再介紹這方面內容。其實在MySQL數據庫中,也直到5.7這個版本,才開始引入JSON數據類型,在此之前如果想在表中保存JSON格式類型的數據,則需要依靠varchar或者text之類的數據類型,如果在低于5.7版本的數據庫中使用了JSON類型來建表,顯然是不會成功的。

(截圖為MySQL官網文檔)

如何使用JSON類型

建表

在MySQL中創建具有JSON數據列的表,其實和數據類型沒有太大區別,具體舉例如下:

1 CREATE TABLEtab_base_info (2 id BIGINT NOT NULL PRIMARY KEYauto_increment,3 content json4 );

新增數據

插入一條語句,注意看JSON數據列的內容:

1 INSERT INTOtab_base_info (content)2 VALUES

3 (4 '{"author": "Captain&D", "blog": "https://www.cnblogs.com/captainad"}'

5 );

這里需要提醒的是:

JSON列存儲的數據要么是NULL,要么必須是JSON格式數據,否則會報錯。

JSON數據類型是沒有默認值的(聲明時"DEFAULT NULL")。

JSON數據類型意義

其實,沒有JSON數據類型的支持,我們一樣可以通過varchar類型或者text等類型來保存這一格式的數據,但是,為什么還要專門增加這一數據格式的支持呢?其中肯定有較varchar或者text來存儲此類型更優越的地方。

保證了JSON數據類型的強校驗,JSON數據列會自動校驗存入此列的內容是否符合JSON格式,非正常格式則報錯,而varchar類型和text等類型本身是不存在這種機制的。

MySQL同時提供了一組操作JSON類型數據的內置函數。

更優化的存儲格式,存儲在JSON列中的JSON數據會被轉成內部特定的存儲格式,允許快速讀取。

可以基于JSON格式的特征支持修改特定的鍵值。(即不需要把整條內容拿出來放到程序中遍歷然后尋找替換再塞回去,MySQL內置的函數允許你通過一條SQL語句就能搞定)

MySQL關于JSON的內置函數

MySQL關于JSON數據格式的操作提供了很多高效率的內置函數,我們可以從MySQL官網上找到很詳細的介紹和使用說明,下面貼一張JSON函數的指南:

(截圖為MySQL官方文檔)

其實我們從JSON功能介紹的主頁也可以看到,這些內置函數支持我們創建、查找、替換和返回值等相關的操作,像我們替換指定內容的操作就可以使用JSON_REPLACE()這個函數,不過最后實現通過純SQL語句執行最終的內容替換,你還需要通過執行UPDATE語句,比如:

1 UPDATEtab_base_info2 SET content = json_replace(content, '$.author', "tom")3 WHERE id = 1;

其中“$.***”表示找到JSON內容中匹配的修改字段。

更多關于這些內置函數的用法,大家都可以到官網(鏈接請查看本文參考資料)的文檔上去查閱,寫的十分詳細而且還有舉例。

參考資料:

1、https://zhuanlan.zhihu.com/p/31823258

2、https://dev.mysql.com/doc/refman/5.7/en/json-functions.html

總結

以上是生活随笔為你收集整理的json mysql 字段 默认值_MySQL中的JSON类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。