老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)

MySQL5.7中的JSON基本操作指南

前言

創(chuàng)新互聯(lián)建站專注于濟(jì)陽網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供濟(jì)陽營銷型網(wǎng)站建設(shè),濟(jì)陽網(wǎng)站制作、濟(jì)陽網(wǎng)頁設(shè)計(jì)、濟(jì)陽網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)服務(wù),打造濟(jì)陽網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供濟(jì)陽網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

因?yàn)轫?xiàng)目需要,存儲(chǔ)字段存儲(chǔ)成了JSON格式,在項(xiàng)目中是將查詢出來的值通過jackson轉(zhuǎn)成相應(yīng)的bean進(jìn)行處理的,覺得不夠簡單方便。

MySQL從5.7版本開始就支持JSON格式的數(shù)據(jù),操作用起來挺方便的。

建表

在新建表時(shí)字段類型可以直接設(shè)置為json類型,比如我們創(chuàng)建一張表:

mysql> CREATE TABLE `test_user`(`id` INT PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, `info` JSON);

json類型字段可以為NULL

插入數(shù)據(jù):

mysql> INSERT INTO test_user(`name`, `info`) VALUES('xiaoming','{"sex": 1, "age": 18, "nick_name": "小萌"}');

json類型的字段必須時(shí)一個(gè)有效的json字符串

可以使用JSON_OBJECT()函數(shù)構(gòu)造json對(duì)象:

mysql> INSERT INTO test_user(`name`, `info`) VALUES('xiaohua', JSON_OBJECT("sex", 0, "age", 17));

使用JSON_ARRAY()函數(shù)構(gòu)造json數(shù)組:

mysql> INSERT INTO test_user(`name`, `info`) VALUES('xiaozhang', JSON_OBJECT("sex", 1, "age", 19, "tag", JSON_ARRAY(3,5,90)));

現(xiàn)在查看test_user表中的數(shù)據(jù):

mysql> select * from test_user; 
+----+-----------+--------------------------------------------+ 
| id | name | info     |
+----+-----------+--------------------------------------------+ 
| 1 | xiaoming | {"age": 18, "sex": 1, "nick_name": "小萌"} | 
| 2 | xiaohua | {"age": 17, "sex": 0}   |
| 3 | xiaozhang | {"age": 19, "sex": 1, "tag": [3, 5, 90]} | 
+----+-----------+--------------------------------------------+
3 rows in set (0.04 sec)

查詢

表達(dá)式: 對(duì)象為json列->'$.鍵', 數(shù)組為json列->'$.鍵[index]'

mysql> select name, info->'$.nick_name', info->'$.sex', info->'$.tag[0]' from test_user; 
+-----------+---------------------+---------------+------------------+ 
| name | info->'$.nick_name' | info->'$.sex' | info->'$.tag[0]' | 
+-----------+---------------------+---------------+------------------+ 
| xiaoming | "小萌"  | 1  | NULL  | 
| xiaohua | NULL  | 0  | NULL  | 
| xiaozhang | NULL  | 1  | 3  | 
+-----------+---------------------+---------------+------------------+ 
3 rows in set (0.04 sec)

等價(jià)于:對(duì)象為JSON_EXTRACT(json列 , '$.鍵') ,數(shù)組為JSON_EXTRACT(json列 , '$.鍵[index]')

mysql> select name, JSON_EXTRACT(info, '$.nick_name'), JSON_EXTRACT(info, '$.sex'), JSON_EXTRACT(info, '$.tag[0]') from test_user;
 +-----------+-----------------------------------+-----------------------------+--------------------------------+ 
| name | JSON_EXTRACT(info, '$.nick_name') | JSON_EXTRACT(info, '$.sex') | JSON_EXTRACT(info, '$.tag[0]') 
| +-----------+-----------------------------------+-----------------------------+--------------------------------+ 
| xiaoming | "小萌"    | 1    | NULL    |
| xiaohua | NULL    | 0    | NULL    | 
| xiaozhang | NULL    | 1    | 3    | 
+-----------+-----------------------------------+-----------------------------+--------------------------------+ 
3 rows in set (0.04 sec)

不過看到上面"小萌"是帶雙引號(hào)的,這不是我們想要的,可以用JSON_UNQUOTE函數(shù)將雙引號(hào)去掉

mysql> select name, JSON_UNQUOTE(info->'$.nick_name') from test_user where name='xiaoming'; 
+----------+-----------------------------------+ 
| name | JSON_UNQUOTE(info->'$.nick_name') | 
+----------+-----------------------------------+ 
| xiaoming | 小萌    | 
+----------+-----------------------------------+ 
1 row in set (0.05 sec)

也可以直接使用操作符->>

mysql> select name, info->>'$.nick_name' from test_user where name='xiaoming';
+----------+----------------------+ 
| name | info->>'$.nick_name' | 
+----------+----------------------+ 
| xiaoming | 小萌   | 
+----------+----------------------+ 
1 row in set (0.06 sec)

當(dāng)然屬性也可以作為查詢條件

mysql> select name, info->>'$.nick_name' from test_user where info->'$.nick_name'='小萌'; 
+----------+----------------------+ 
| name | info->>'$.nick_name' | 
+----------+----------------------+ 
| xiaoming | 小萌   | 
+----------+----------------------+ 
1 row in set (0.05 sec)

值得一提的是,可以通過虛擬列對(duì)JSON類型的指定屬性進(jìn)行快速查詢。

創(chuàng)建虛擬列:

mysql> ALTER TABLE `test_user` ADD `nick_name` VARCHAR(50) GENERATED ALWAYS AS (info->>'$.nick_name') VIRTUAL;

注意用操作符->>

使用時(shí)和普通類型的列查詢是一樣:

mysql> select name,nick_name from test_user where nick_name='小萌'; 
+----------+-----------+ 
| name  | nick_name | 
+----------+-----------+ 
| xiaoming | 小萌  | 
+----------+-----------+ 
1 row in set (0.05 sec)

更新

使用JSON_INSERT()插入新值,但不會(huì)覆蓋已經(jīng)存在的值

mysql> UPDATE test_user SET info = JSON_INSERT(info, '$.sex', 1, '$.nick_name', '小花') where id=2;

看下結(jié)果

mysql> select * from test_user where id=2; 
+----+---------+--------------------------------------------+-----------+ 
| id | name | info          | nick_name | 
+----+---------+--------------------------------------------+-----------+ 
| 2 | xiaohua | {"age": 17, "sex": 0, "nick_name": "小花"} | 小花  | 
+----+---------+--------------------------------------------+-----------+ 
1 row in set (0.06 sec)

使用JSON_SET()插入新值,并覆蓋已經(jīng)存在的值

mysql> UPDATE test_user SET info = JSON_INSERT(info, '$.sex', 0, '$.nick_name', '小張') where id=3;

看下結(jié)果

mysql> select * from test_user where id=3; 
+----+-----------+---------------------------------------------------------------+-----------+ 
| id | name  | info               | nick_name | 
+----+-----------+---------------------------------------------------------------+-----------+ 
| 3 | xiaozhang | {"age": 19, "sex": 1, "tag": [3, 5, 90], "nick_name": "小張"} | 小張  | 
+----+-----------+---------------------------------------------------------------+-----------+ 
1 row in set (0.06 sec)

使用JSON_REPLACE()只替換存在的值

mysql> UPDATE test_user SET info = JSON_REPLACE(info, '$.sex', 1, '$.tag', '[1,2,3]') where id=2;

看下結(jié)果

mysql> select * from test_user where id=2; 
+----+---------+--------------------------------------------+-----------+ 
| id | name | info          | nick_name | 
+----+---------+--------------------------------------------+-----------+ 
| 2 | xiaohua | {"age": 17, "sex": 1, "nick_name": "小花"} | 小花  | 
+----+---------+--------------------------------------------+-----------+ 
1 row in set (0.06 sec)

可以看到tag沒有更新進(jìn)去

刪除

使用JSON_REMOVE()刪除JSON元素

mysql> UPDATE test_user SET info = JSON_REMOVE(info, '$.sex', '$.tag') where id=1;

看下結(jié)果

mysql> select * from test_user where id=1; 
+----+----------+----------------------------------+-----------+ 
| id | name  | info        | nick_name | 
+----+----------+----------------------------------+-----------+ 
| 1 | xiaoming | {"age": 18, "nick_name": "小萌"} | 小萌  | 
+----+----------+----------------------------------+-----------+ 
1 row in set (0.05 sec)

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)創(chuàng)新互聯(lián)的支持。


文章題目:MySQL5.7中的JSON基本操作指南
網(wǎng)站URL:http://www.xueling.net.cn/article/psshij.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 97夜夜澡人人双人人人喊 | 鲁一鲁一鲁一鲁一曰综合网 | 国产欧美一区二区三区视频 | 无码人妻AⅤ一区二区三区 韩国a级黄色 | 国产AV新搬来的白领女邻居 | 我学生的妈妈在线 | 亚洲国产成人高清精品 | 成人家庭影院播放器 | 国产va免费精品高清在线观看 | 国产一区二区精品久 | 成人在线视频亚洲 | 一夜新娘第三季免费播放 | 日本成人网址 | av第一福利网站 | 国产男女视频网站 | 插j视频 | av在线免费播放网址 | 亚洲清纯国产 | 精品国产麻豆一区二区三区 | 亚洲免费一级视频 | 国产精品一品二区三区四区18 | 好男人中文资源在线观看 | 国产精品56页 | 啊轻点内射在线视频 | 成年日韩片av在线网站 | av视在线| 一级黄色免费观看 | 国产精品一区二区在线观看 | 国内黄色大片 | 99精品6一区二区三区 | 西西人体大胆扒开下部337卩 | 婷婷久久综合 | 任你操视频| 看全色黄大色大片免费无码 | 欧美日韩国产人妻无码 | 日本中文字幕中出在线 | 日韩av免费一区 | 精品伦一区二区三区免费视频 | 国产午夜福利精品一区二区三区 | 久久久久人 | 成视频年人黄网站视频福利 |