前言
今天接觸到mysql中json資料型別,之前不知道有這個型別,今天學習一下。
json我相信大家都已經很熟悉了,但在 mysql中,直至 5.7 版本中,才正式引入 json資料型別。在次之前,我們通常使varchar或text資料型別儲存json格式資料。
如何使用json?
在這一章節,不再具體介紹json格式以及語法,我們來介紹一下,在mysql中如何建立json資料列。 語法:
create
table t_base_data(
idbigint(20) not
null primary key auto_increment,
content
json
)
新增資料:
insert into t_base_data (content)values('');
注意:json列儲存的必須是json格式資料,否則會報錯。(
[sql]insert into t_base_data (content)values('');
[err] 3140 - invalid json text: "missing a name for object member." at position 1 in value for column 't_base_data.content'
.)json資料型別是沒有預設值的。
更新資料:
update t_base_data set `content` = '' where `id` = 1;
查詢資料:
select * from t_base_data;
select json_extract(content,'$.blog'),json_extract(content,'$.account') from t_base_data;返回結果如圖:
可以看出json被解析拆分,但對於字串會保留雙引號,這種是利用函式方法進行json提取的,還可以利用虛列virtual
select json_extract(content,'$.blog'),json_extract(content,'$.account'),json_extract(content,'$.age') from t_base_data;
有了虛列後就可以直接用虛列作為條件查詢explain select blog from t_base_data where blog = '';
select blog from t_base_data where blog = '""'
通過執行計畫可以看出是否走索引和where條件,對於虛列還可以增加索引,就像普通的列一樣,不過更新時不需要對虛列再進行更新,直接更新json的內容後,虛列會同步更新,因為虛列其實就是個引用,不會冗餘儲存
增加虛列索引的sql:
alter table t_base_data add index index_virtual (blog);
再用執行計畫檢視是否走索引
從結果上看已經走索引了,優化效果達到。
大家盡量每一步sql都執行一下看看結果,有助於理解。
資料型別JSON格式
1.從結構上看,所有的資料最終都可以分成三種型別 第一種型別是scalar 標量 也就是乙個單獨的string 字串 或數字 numbers 比如 北京 這個單獨的詞。第二種型別是sequence 序列 也就是若干個相關的資料按照一定順序並列在一起,又叫做array 陣列 或list 列表 比如 北...
mysql資料型別用法 mysql資料型別和用法
歡迎進入linux社群論壇,與200萬技術人員互動交流 進入 mysql支援多種列型別 數值型別 日期 時間型別和字串 字元 型別。本章首先對這些列型別進行了概述,然後更加詳細地描述了各種列的型別,以及列型別儲存需求的總結。概述很簡單。關於具體列型別 歡迎進入linux社群論壇,與200萬技術人員互...
mysql 資料型別 真假 MySQL 資料型別
mysql基礎 資料型別 整型型別 根據所儲存的整數數值取值範圍不同,可分為以下五類 1 tinyint佔1個位元組 2 smallint佔2個位元組 3 mediumint 佔3個位元組 4 int佔4個位元組 5 bigint佔8個位元組 根據每種型別所佔的位元組數可確定其無符號整數和有符號整數...