MySQL中 JSON 数据类型应用
生活随笔
收集整理的這篇文章主要介紹了
MySQL中 JSON 数据类型应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
今天接觸到mysql中json數據類型,之前不知道有這個類型,今天學習一下。
JSON我相信大家都已經很熟悉了,但在 MySQL中,直至 5.7 版本中,才正式引入 JSON數據類型。在次之前,我們通常使varchar或text數據類型存儲JSON格式數據。
如何使用JSON?
在這一章節,不再具體介紹JSON格式以及語法,我們來介紹一下,在MySQL中如何創建JSON數據列。 語法:
create table t_base_data( id bigint(20) not null primary key auto_increment, content json )新增數據:
insert into t_base_data (content)values('{"blog": "https://blog.csdn.net/qq_24549805", "account": "anzy"}');注意:
[Err] 3140 - Invalid JSON text: “Missing a name for object member.” at position 1 in value for column ‘t_base_data.content’.)
更新數據:
UPDATE t_base_data SET `content` = '{"blog":"測試更新啦","account":"pine"}' 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 = 'https://blog.csdn.net/qq_24549805'; select blog from t_base_data where blog = '"https://blog.csdn.net/qq_24549805"'通過執行計劃可以看出是否走索引和where條件,對于虛列還可以增加索引,就像普通的列一樣,不過更新時不需要對虛列再進行更新,直接更新JSON的內容后,虛列會同步更新,因為虛列其實就是個引用,不會冗余存儲
增加虛列索引的SQL:
alter table t_base_data add index index_virtual (blog);再用執行計劃查看是否走索引
explain select blog from t_base_data where blog = 'https://blog.csdn.net/qq_24549805';從結果上看已經走索引了,優化效果達到。
大家盡量每一步sql都執行一下看看結果,有助于理解。
總結
以上是生活随笔為你收集整理的MySQL中 JSON 数据类型应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java枚举类型(enum)详解
- 下一篇: Navicat Premium 12连接