MySQL中的JSON型別

2022-08-17 14:00:17 字數 1790 閱讀 8134

有個小夥伴執行sql的時候報錯了,以為專案中給的sql指令碼不全,但是在群裡他並沒有給出報錯細節的截圖,樓主後來也就提示了他一句mysql版本需要在5.7以上,但是後面就沒有更多訊息了。

今天早上我還在上班路上,群裡的小夥伴就私信我,說能否幫他看下資料庫的問題。等我到了公司再回覆他的時候,他告訴我說資料庫問題已經解決了,我追問了一下細節,原來是開源專案中的資料庫建表語句中包含json型別字段,導致了他批量執行sql指令碼不成功。其實這樣的問題,在執行指令碼的時候遇到錯誤是有日誌的,詳細看下日誌應該明了。

我其實是沒有注意到這個細節的,因為我前天安裝的資料庫就直接上了8.0,遮蔽了這個問題,但是,mysql資料庫現在支援json型別,挺新奇的,因為之前沒有用過,並不熟悉,所以這一次,讓我逮到個了解它的機會。

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

(截圖為mysql官網文件)

建表

在mysql中建立具有json資料列的表,其實和資料型別沒有太大區別,具體舉例如下:

1

create

table

tab_base_info (

2 id bigint

notnull

primary

keyauto_increment,

3content json

4 );

新增資料插入一條語句,注意看json資料列的內容:

1

insert

into

tab_base_info (content)

2values3(

4''5 );

其實,沒有json資料型別的支援,我們一樣可以通過varchar型別或者text等型別來儲存這一格式的資料,但是,為什麼還要專門增加這一資料格式的支援呢?其中肯定有較varchar或者text來儲存此型別更優越的地方。

mysql關於json資料格式的操作提供了很多高效率的內建函式,我們可以從mysql官網上找到很詳細的介紹和使用說明,下面貼一張json函式的指南:

(截圖為mysql官方文件)

其實我們從json功能介紹的主頁也可以看到,這些內建函式支援我們建立、查詢、替換和返回值等相關的操作,像我們替換指定內容的操作就可以使用json_replace()這個函式,不過最後實現通過純sql語句執行最終的內容替換,你還需要通過執行update語句,比如:

1

update

tab_base_info

2set content = json_replace(content, '

$.author

', "tom")

3where id =

1;

其中「$.***」表示找到json內容中匹配的修改字段。

更多關於這些內建函式的用法,大家都可以到官網(鏈結請檢視本文參考資料)的文件上去查閱,寫的十分詳細而且還有舉例。

MySQL中 JSON 資料型別應用

前言 今天接觸到mysql中json資料型別,之前不知道有這個型別,今天學習一下。json我相信大家都已經很熟悉了,但在 mysql中,直至 5.7 版本中,才正式引入 json資料型別。在次之前,我們通常使varchar或text資料型別儲存json格式資料。如何使用json?在這一章節,不再具體...

MySQL5 7中新增的JSON型別的使用方法

建立表json test create table json test id int 11 auto increment primary key,person desc json engine innodb 插入一條記錄 insert into json test person desc value...

mysql5 7 新增的json欄位型別

一 我們先建立乙個表,準備點資料 create table json test id int 11 unsigned not null auto increment comment id json json default null comment json資料 二 檢索json列的字段 通過使用 ...