MySQL原生JSON格式的簡單使用

2021-09-12 12:58:55 字數 2094 閱讀 7864

mysql 5.7+ 開始支援原生json,可以對json格式的內容進行插入校驗,以及對其內部字段單獨查詢,推薦對json內容使用json格式。

-- 建立表

create tablet(

idint(11) default null,

infojson default null

);-- 插入校驗

insert intot(id,info) values (1, ''); -- 插入成功

-- insert intot(id,info) values (2, '******'); -- 插入失敗,invalid json text

-- 只查詢info裡面的name欄位

selectinfo->'$.name' fromtwhereid=1; -- jack 注意,$.name的引號不能省略

-- 或者

select json_extract(info, '$.name') fromtwhereid=1; -- jack

此外,可以對json內部的字段建立虛列,虛列的值可以根據json的內容自動更新,像普通列一樣查詢(但是不能插入和更新),以及建立索引

-- 建立虛列

alter tabletaddusernamevarchar(10) generated always as (info->'$.name') virtual;

-- 或者 alter tabletaddusernamevarchar(10) generated always as (json_extract(info, '$.name)) virtual;

-- 虛列可以像普通列一樣查詢

selectusernamefromtwhereid=1; -- jack

-- 插入json時,自動生成虛列的值

insert intot(id,info) values (2, '');

selectusernamefromtwhereid=2; -- lily

-- 更改json內容,虛列值自動更新

updatetsetinfo='' whereid=2;

selectusernamefromtwhereid=2; -- lucy

-- 不允許更新虛列的值

-- updatetsetusername='tom' whereid=2; -- the value specified for generated column 'username' in table 't' is not allowed.

-- 可以給序列建立索引,就像普通列一樣

alter tabletadd indexidx_username(username);

| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | extra |

| 1 | ****** | t | null | ref | idx_username | idx_username | 33 | const | 1 | 100.00 | null |

mysql5 7支援的原生態json格式

在mysql5.7中可以直接儲存json格式,並且可以對json資料進行讀取 如果要解析第乙個陣列成員請使用 json extract data,0 要搜尋用 json search data,one 關鍵字 或者json search data,all 關鍵字 第乙個是搜乙個,後面是搜出全部。se...

原生js格式化json和格式化xml的方法

在工作中一直看各位前輩的部落格解決各種問題,對我的幫助很大,非常感謝!之前一直比較忙沒有寫部落格,終於過年有了點空閒時間,可以把自己積累的東西分享下,筆記中的部分函式不是自己寫的,都是工作中一點點積累的,由於時間已久比較零散找不到對應的主人了,沒法註明出處還請見諒。我們經常遇到從後代拿到的沒有格式化...

MySQL 5 7的原生JSON資料型別使用

新增測試用表 create table lnmp id int 10 unsigned not null auto increment,category json,tags json,primary key id 新增資料 insert into lnmp category,tags values ...