精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MySQL中這14個小玩意,讓人眼前一亮!!!

數據庫 MySQL
通常情況下,我們在插入數據之前,一般會先查詢一下,該數據是否存在。如果不存在,則插入數據。如果已存在,則不插入數據,而直接返回結果。

前言

我最近幾年用MYSQL數據庫挺多的,發現了一些非常有用的小玩意,今天拿出來分享到大家,希望對你會有所幫助。

1.group_concat

在我們平常的工作中,使用group by進行分組的場景,是非常多的。

比如想統計出用戶表中,名稱不同的用戶的具體名稱有哪些?

具體sql如下:

select name from `user`
group by name;

但如果想把name相同的code拼接在一起,放到另外一列中該怎么辦呢?

答:使用group_concat函數。

例如:

select name,group_concat(code) from `user`
group by name;

執行結果:

圖片

使用group_concat函數,可以輕松的把分組后,name相同的數據拼接到一起,組成一個字符串,用逗號分隔。

2.char_length

有時候我們需要獲取字符的長度,然后根據字符的長度進行排序。

MYSQL給我們提供了一些有用的函數,比如:char_length。

通過該函數就能獲取字符長度。

獲取字符長度并且排序的sql如下:

select * from brand where name like '%蘇三%' 
order by char_length(name) asc limit 5;

執行效果如圖所示:

圖片

name字段使用關鍵字模糊查詢之后,再使用char_length函數獲取name字段的字符長度,然后按長度升序。

3.locate

有時候我們在查找某個關鍵字,比如:蘇三,需要明確知道它在某個字符串中的位置時,該怎么辦呢?

答:使用locate函數。

使用locate函數改造之后sql如下:

select * from brand where name like '%蘇三%' 
order by char_length(name) asc, locate('蘇三',name) asc limit 5,5;

執行結果:

圖片

先按長度排序,小的排在前面。如果長度相同,則按關鍵字從左到右進行排序,越靠左的越排在前面。

除此之外,我們還可以使用:instr和position函數,它們的功能跟locate函數類似,在這里我就不一一介紹了,感興趣的小伙伴可以找我私聊。

4.replace

我們經常會有替換字符串中部分內容的需求,比如:將字符串中的字符A替換成B。

這種情況就能使用replace函數。

例如:

update brand set name=REPLACE(name,'A','B') 
where id=1;

這樣就能輕松實現字符替換功能。

也能用該函數去掉前后空格:

update brand set name=REPLACE(name,' ','') where name like ' %';
update brand set name=REPLACE(name,' ','') where name like '% ';

使用該函數還能替換json格式的數據內容,真的非常有用。

5.now

時間是個好東西,用它可以快速縮小數據范圍,我們經常有獲取當前時間的需求。

在MYSQL中獲取當前時間,可以使用now()函數,例如:

select now() from brand limit 1;

返回結果為下面這樣的:它會包含年月日時分秒。

如果你還想返回毫秒,可以使用now(3),例如:

select now(3) from brand limit 1;

返回結果為下面這樣的:使用起來非常方便好記。

6.insert into ... select

在工作中很多時候需要插入數據。

傳統的插入數據的sql是這樣的:

INSERT INTO `brand`(`id`, `code`, `name`, `edit_date`) 
VALUES (5, '108', '蘇三', '2022-09-02 19:42:21');

它主要是用于插入少量并且已經確定的數據。但如果有大批量的數據需要插入,特別是是需要插入的數據來源于,另外一張表或者多張表的結果集中。

這種情況下,使用傳統的插入數據的方式,就有點束手無策了。

這時候就能使用MYSQL提供的:insert into ... select語法。

例如:

INSERT INTO `brand`(`id`, `code`, `name`, `edit_date`) 
select null,code,name,now(3) from `order` where code in ('004','005');

這樣就能將order表中的部分數據,非常輕松插入到brand表中。

7.insert into ... ignore

不知道你有沒有遇到過這樣的場景:在插入1000個品牌之前,需要先根據name,判斷一下是否存在。如果存在,則不插入數據。如果不存在,才需要插入數據。

如果直接這樣插入數據:

INSERT INTO `brand`(`id`, `code`, `name`, `edit_date`) 
VALUES (123, '108', '蘇三', now(3));

肯定不行,因為brand表的name字段創建了唯一索引,同時該表中已經有一條name等于蘇三的數據了。

執行之后直接報錯了:這就需要在插入之前加一下判斷。

當然很多人通過在sql語句后面拼接not exists語句,也能達到防止出現重復數據的目的,比如:

INSERT INTO `brand`(`id`, `code`, `name`, `edit_date`) 
select null,'108', '蘇三',now(3)
from dual where not exists (select * from `brand` where name='蘇三');

這條sql確實能夠滿足要求,但是總覺得有些麻煩。那么,有沒有更簡單的做法呢?

答:可以使用insert into ... ignore語法。

例如:

INSERT ignore INTO `brand`(`id`, `code`, `name`, `edit_date`) 
VALUES (123, '108', '蘇三', now(3));

這樣改造之后,如果brand表中沒有name為蘇三的數據,則可以直接插入成功。

但如果brand表中已經存在name為蘇三的數據了,則該sql語句也能正常執行,并不會報錯。因為它會忽略異常,返回的執行結果影響行數為0,它不會重復插入數據。

8.select ... for update

MYSQL數據庫自帶了悲觀鎖,它是一種排它鎖,根據鎖的粒度從大到小分為:表鎖、間隙鎖和行鎖。

在我們的實際業務場景中,有些情況并發量不太高,為了保證數據的正確性,使用悲觀鎖也可以。

比如:用戶扣減積分,用戶的操作并不集中。但也要考慮系統自動贈送積分的并發情況,所以有必要加悲觀鎖限制一下,防止出現積分加錯的情況發生。

這時候就可以使用MYSQL中的select ... for update語法了。

例如:

begin;
select * from `user` where id=1
for update;

//業務邏輯處理

update `user` set score=score-1 where id=1;
commit;

這樣在一個事務中使用for update鎖住一行記錄,其他事務就不能在該事務提交之前,去更新那一行的數據。

需要注意的是for update前的id條件,必須是表的主鍵或者唯一索引,不然行鎖可能會失效,有可能變成表鎖。

9.on duplicate key update

通常情況下,我們在插入數據之前,一般會先查詢一下,該數據是否存在。如果不存在,則插入數據。如果已存在,則不插入數據,而直接返回結果。

在沒啥并發量的場景中,這種做法是沒有什么問題的。但如果插入數據的請求,有一定的并發量,這種做法就可能會產生重復的數據。

當然防止重復數據的做法很多,比如:加唯一索引、加分布式鎖等。

但這些方案,都沒法做到讓第二次請求也更新數據,它們一般會判斷已經存在就直接返回了。

這種情況可以使用on duplicate key update語法。

該語法會在插入數據之前判斷,如果主鍵或唯一索引不存在,則插入數據。如果主鍵或唯一索引存在,則執行更新操作。

具體需要更新的字段可以指定,例如:

INSERT  INTO `brand`(`id`, `code`, `name`, `edit_date`) 
VALUES (123, '108', '蘇三', now(3))
on duplicate key update name='蘇三',edit_date=now(3);

這樣一條語句就能輕松搞定需求,既不會產生重復數據,也能更新最新的數據。

但需要注意的是,在高并發的場景下使用on duplicate key update語法,可能會存在死鎖的問題,所以要根據實際情況酌情使用。

10.show create table

有時候,我們想快速查看某張表的字段情況,通常會使用desc命令,比如:

desc `order`;

結果如圖所示:確實能夠看到order表中的字段名稱、字段類型、字段長度、是否允許為空,是否主鍵、默認值等信息。

但看不到該表的索引信息,如果想看創建了哪些索引,該怎么辦呢?

答:使用show index命令。

比如:

show index from `order`;

也能查出該表所有的索引:但查看字段和索引數據呈現方式,總覺得有點怪怪的,有沒有一種更直觀的方式?

答:這就需要使用show create table命令了。

例如:

show create table `order`;

執行結果如圖所示:其中Table表示表名,Create Table就是我們需要看的建表信息,將數據展開:我們能夠看到非常完整的建表語句,表名、字段名、字段類型、字段長度、字符集、主鍵、索引、執行引擎等都能看到。

非常直接明了。

11.create table ... select

有時候,我們需要快速備份表。

通常情況下,可以分兩步走:

創建一張臨時表

將數據插入臨時表

創建臨時表可以使用命令:

create table order_2022121819 like `order`;

創建成功之后,就會生成一張名稱叫:order_2022121819,表結構跟order一模一樣的新表,只是該表的數據為空而已。

接下來使用命令:

insert into order_2022121819 select * from `order`;

執行之后就會將order表的數據插入到order_2022121819表中,也就是實現數據備份的功能。

但有沒有命令,一個命令就能實現上面這兩步的功能呢?

答:用create table ... select命令。

例如:

create table order_2022121820 
select * from `order`;

執行完之后,就會將order_2022121820表創建好,并且將order表中的數據自動插入到新創建的order_2022121820中。

一個命令就能輕松搞定表備份。

12.explain

很多時候,我們優化一條sql語句的性能,需要查看索引執行情況。

答:可以使用explain命令,查看mysql的執行計劃,它會顯示索引的使用情況。

例如:

explain select * from `order` where code='002';

結果:

通過這幾列可以判斷索引使用情況,執行計劃包含列的含義如下圖所示:

圖片

如果你想進一步了解explain的詳細用法,可以看看我的另一篇文章《?explain | 索引優化的這把絕世好劍,你真的會用嗎?》

說實話,sql語句沒有走索引,排除沒有建索引之外,最大的可能性是索引失效了。

下面說說索引失效的常見原因:

圖片

如果不是上面的這些原因,則需要再進一步排查一下其他原因。

13.show processlist

有些時候我們線上sql或者數據庫出現了問題。比如出現了數據庫連接過多問題,或者發現有一條sql語句的執行時間特別長。

這時候該怎么辦呢?

答:我們可以使用show processlist命令查看當前線程執行情況。

如圖所示:

圖片

從執行結果中,我們可以查看當前的連接狀態,幫助識別出有問題的查詢語句。

  • id 線程id
  • User 執行sql的賬號
  • Host 執行sql的數據庫的ip和端號
  • db 數據庫名稱
  • Command 執行命令,包括:Daemon、Query、Sleep等。
  • Time 執行sql所消耗的時間
  • State 執行狀態
  • info 執行信息,里面可能包含sql信息。

如果發現了異常的sql語句,可以直接kill掉,確保數據庫不會出現嚴重的問題。

14.mysqldump

有時候我們需要導出MYSQL表中的數據。

這種情況就可以使用mysqldump工具,該工具會將數據查出來,轉換成insert語句,寫入到某個文件中,相當于數據備份。

我們獲取到該文件,然后執行相應的insert語句,就能創建相關的表,并且寫入數據了,這就相當于數據還原。

mysqldump命令的語法為:mysqldump -h主機名 -P端口 -u用戶名 -p密碼 參數1,參數2.... > 文件名稱.sql

備份遠程數據庫中的數據庫:

mysqldump -h 192.22.25.226 -u root -p123456 dbname > backup.sql

責任編輯:武曉燕 來源: 蘇三說技術
相關推薦

2025-11-14 04:00:00

2024-06-17 10:24:21

2017-03-06 18:35:22

VRAR應用

2021-06-30 09:56:24

MySQL數據庫索引

2023-07-16 22:37:46

JavaScript代碼任務

2021-08-17 11:20:25

Vue前端技巧

2022-07-28 15:46:08

Linux工具

2025-08-22 13:37:22

2023-08-10 08:16:41

Hash技術哈希表

2024-03-14 17:41:25

AIGC人工智能應用

2022-02-28 23:37:16

iOS蘋果系統

2022-12-09 09:39:20

Vue3Vue2

2020-11-23 10:02:04

開發者

2016-01-21 10:55:04

2024-12-24 08:23:31

2019-04-09 18:03:09

IT寫作技術人

2021-04-21 09:16:04

Python開發釘釘群機器人
點贊
收藏

51CTO技術棧公眾號

欧美日本视频在线观看| 国产精品香蕉视屏| 麻豆精品一区二区三区视频| 欧洲亚洲视频| 欧美精品乱人伦久久久久久| www.av蜜桃| 免费黄色电影在线观看| 9i在线看片成人免费| 国产精品视频yy9099| 91精品国产高潮对白| 999精品色在线播放| 日韩经典中文字幕| 青青草精品在线| 午夜av成人| 精品福利在线视频| 中国老女人av| av电影在线网| 26uuu国产一区二区三区| 亚洲精品日韩av| 久久这里只有精品9| 99在线热播精品免费99热| 久久精品国产亚洲7777| 97伦伦午夜电影理伦片| 成人av婷婷| 777色狠狠一区二区三区| 国产真实乱子伦| av福利在线导航| 一区二区不卡在线播放 | 久久精品蜜桃| 成人短视频下载| 亚洲影视中文字幕| 国产一区二区麻豆| 日韩二区三区在线观看| 欧美一区在线直播| 日韩美女视频网站| 伊人成人网在线看| 欧美日韩国产成人在线| 日本少妇高清视频| 亚洲精品国产首次亮相| 日日骚久久av| 男人的午夜天堂| 国产精品国产一区| 少妇高潮久久77777| 亚洲欧洲久久久| 欧美人与牛zoz0性行为| 亚洲欧美中文字幕在线一区| 成人免费网站黄| 视频一区欧美| 一区二区三区天堂av| 国产av自拍一区| 精品国产一区二区三区久久久樱花| 亚洲黄色成人网| avtt香蕉久久| 亚洲国产最新| 中文字幕九色91在线| 99精品全国免费观看| 日本a口亚洲| 日韩一区二区在线视频| 国产真实乱在线更新| 欧美激情1区2区| 久久久久久久久久国产| 日本三级午夜理伦三级三| 日韩亚洲在线| 国产极品精品在线观看| 在线视频播放大全| 国产在线一区观看| 国产99在线播放| 亚洲 欧美 自拍偷拍| 久久精品在线观看| 亚洲国产一区在线| 四虎亚洲成人| 欧美日韩精品在线视频| www.欧美日本| 免费一级欧美在线大片| 亚洲国产精品字幕| 欧美性受xxxx黑人| 欧美高清日韩| 国产xxx69麻豆国语对白| 国产孕妇孕交大片孕| 国产a区久久久| 欧美精品一区在线发布| 川上优的av在线一区二区| 亚洲品质自拍视频| 日韩av一二三四区| 少妇高潮一区二区三区99| 精品国产乱码久久久久久免费| 国产美女喷水视频| 91成人精品| 91成人免费观看网站| 中文字幕无线码一区 | 免费黄色在线视频| 亚欧美无遮挡hd高清在线视频| 久久久久久欧美| 凹凸精品一区二区三区| 国产成人久久精品77777最新版本| 欧美男人的天堂| 成人福利在线观看视频| 欧美性极品xxxx娇小| theporn国产精品| 欧美美女在线直播| 久久综合伊人77777蜜臀| www.色国产| 成人国产精品视频| 尤物国产精品| 神马久久资源| 亚洲国产日韩欧美在线动漫| 97在线观看视频免费| 亚洲专区一区| 超碰在线观看97| 91精彩视频在线观看| 五月激情综合网| 国产九九九视频| 欧美偷拍综合| 欧美综合激情网| 亚洲AV无码精品自拍| 国产精品理论片在线观看| av免费中文字幕| 狼人天天伊人久久| 欧美巨乳在线观看| 亚洲永久精品视频| 国产婷婷色一区二区三区在线| 69sex久久精品国产麻豆| 亚洲人体在线| 日韩在线观看你懂的| 最近中文字幕在线观看视频| 久久免费电影网| 2018日日夜夜| 国产欧美自拍一区| 久久久久久999| 超碰福利在线观看| 亚洲精品国产a| 中文字幕第三区| 99久久夜色精品国产亚洲狼| 国产精品偷伦视频免费观看国产| 嫩草在线播放| 色悠悠久久综合| 女同毛片一区二区三区| 免费一级欧美片在线播放| 久久99精品久久久久久青青日本 | 色综合天天综合色综合av| 国产精品一区二区人人爽| 尤物网在线观看| 五月婷婷激情综合| 波多野结衣网页| 91精品国产福利在线观看麻豆| 99在线播放| 国产精品一区免费视频| 亚洲一区三区| 亚洲精品大片| 久久综合亚洲社区| va视频在线观看| 一区二区三区四区乱视频| 欧美日韩一区二区区别是什么 | 日本一区免费网站| 亚洲欧美日韩久久久久久| 精人妻无码一区二区三区| 中文字幕欧美日韩一区| 欧美丝袜在线观看| 欧美1区视频| 国产精品区二区三区日本| gogo高清在线播放免费| 亚洲精品97久久| 婷婷激情五月综合| 国产精品区一区二区三| 99九九99九九九99九他书对| 欧美激情偷拍| 精品一区二区三区国产| 日韩免费小视频| 久久韩国免费视频| 亚洲精品人妻无码| 欧美午夜激情在线| 亚洲av无一区二区三区| 成人夜色视频网站在线观看| 美女av免费在线观看| 日韩精品久久| 成人国产一区二区| 成人午夜视屏| 久久精品成人动漫| 免费a级片在线观看| 色婷婷精品久久二区二区蜜臀av| 国产男女猛烈无遮挡在线喷水| 丰满放荡岳乱妇91ww| jizzjizzxxxx| 亚洲欧美偷拍自拍| 久久国产主播精品| 欧美激情三区| 7777kkkk成人观看| 日日夜夜精品一区| 亚洲国产精品人人爽夜夜爽| 自拍偷拍色综合| 亚洲一级二级三级| 国产性猛交xx乱| 99免费精品视频| 中文字幕视频三区| 亚洲精品视频啊美女在线直播| 亚洲国产一区二区精品视频| 欧美一级色片| 亚洲精品女av网站| 国产一区二区主播在线| 性亚洲最疯狂xxxx高清| 国产精品扒开做爽爽爽的视频| 亚洲精品按摩视频| av中文字幕在线免费观看| 色婷婷综合久久久久中文一区二区 | 亚洲毛片免费看| 99在线视频播放| 日本一区二区三区中文字幕| 欧美一级在线播放| 免费av不卡在线观看| 日韩在线视频网站| 国产三区四区在线观看| 亚洲国产欧美久久| 精品国产av一区二区| 欧美日韩在线免费视频| av大片在线免费观看| 亚洲制服丝袜av| 欧美日韩色视频| 国产精品三级久久久久三级| 亚洲天堂视频一区| 99久久伊人精品| 久久久国产精品久久久| 精品一区二区在线看| 亚洲免费av一区二区三区| 99在线精品免费视频九九视| 国产成人在线小视频| 在线观看国产精品入口| 亚洲国产综合自拍| 精品国产精品| 日本一区免费| 自拍自偷一区二区三区| 久久久久se| 蜜桃一区二区三区| 玖玖玖精品中文字幕| 欧洲vs亚洲vs国产| 久久99精品久久久久久久青青日本| 9999久久久久| 肥熟一91porny丨九色丨| 日本精品国产| 国产精品久久久久久久久久久久冷 | 日本高清不卡一区| 无码aⅴ精品一区二区三区| 狠狠躁夜夜躁人人爽超碰91| 免费在线不卡视频| 欧美视频中文字幕在线| 国产欧美一区二区三区在线看蜜臂| 香港成人在线视频| 永久免费看片在线播放| 欧美日韩国产精品一区| www.久久久久久久| 欧洲精品一区二区| 亚洲网站免费观看| 69堂国产成人免费视频| 国产99久久九九精品无码免费| 日韩欧美久久一区| 欧美 中文字幕| 精品无人区太爽高潮在线播放 | 成人av无码一区二区三区| 欧美哺乳videos| 天天综合网在线| 亚洲欧美一区二区激情| 香蕉视频免费在线播放| 久久国产精品久久久久久久久久| 青青草视频在线免费直播| 久久久伊人欧美| 原纱央莉成人av片| 国产精品久久二区| 国产亚洲字幕| 精品国产综合| 久久香蕉国产| 久久久久久久9| 久久久久国产精品一区三寸| wwww.国产| 国产91精品一区二区麻豆网站| 懂色av粉嫩av蜜乳av| 国产精品久久久久一区| 欧美日韩人妻精品一区二区三区| 精品久久久久久中文字幕一区奶水| 国产又粗又猛又黄视频| 欧美一区二区三区四区五区 | 北条麻妃在线一区二区| 日本乱理伦在线| 国产ts人妖一区二区三区| 色999韩欧美国产综合俺来也| 亚洲aaaaaa| 亚洲制服一区| 超碰人人爱人人| 日本在线不卡一区| 亚洲成a人无码| 中文字幕第一区第二区| 精品一区免费观看| 欧美色老头old∨ideo| 欧美 日韩 国产 成人 在线| 中文字幕精品一区久久久久| 9999在线视频| 成人观看高清在线观看免费| 欧美黑白配在线| 国产人妻互换一区二区| 久久精品日产第一区二区| 人妻体体内射精一区二区| 国产欧美一区二区三区在线老狼 | 欧美午夜精品电影| 国 产 黄 色 大 片| 最近2019中文免费高清视频观看www99| 国产在线xxx| 91免费看片在线| 国产在线观看91一区二区三区 | 美女福利视频在线观看| 欧美性猛交xxxx乱大交退制版 | 成人97在线观看视频| 日韩大片欧美大片| 久久国产精品-国产精品| 欧美成人中文| 九九九九九伊人| 欧美国产亚洲另类动漫| 日韩精品视频免费看| 欧美一级理论性理论a| av色图一区| 国产精品久久国产精品99gif| 欧美黑人做爰爽爽爽| 日韩一区二区高清视频| 国产呦精品一区二区三区网站| 精品无码在线观看| 色综合久久久久久久久| 五月婷婷综合久久| 久久久久五月天| 波多野结衣欧美| 日本人妻伦在线中文字幕| 国产呦精品一区二区三区网站| 三级黄色在线观看| 欧美日本韩国一区二区三区视频| 国产精品麻豆一区二区三区 | 性一交一乱一精一晶| 九九精品在线播放| 精品国产三区在线| 秋霞在线一区二区| 国产资源在线一区| 国产稀缺精品盗摄盗拍| 3751色影院一区二区三区| 看黄网站在线| 91久久久亚洲精品| 综合一区av| 久久人妻少妇嫩草av蜜桃| 亚洲成人久久影院| 视频污在线观看| 欧美一区二区三区……| 亚洲自拍电影| 中文字幕在线观看第三页| 欧美国产日韩a欧美在线观看| 自拍偷拍精品视频| 精品国产欧美成人夜夜嗨| 国产不卡精品| 91精品国产91久久久久麻豆 主演| av在线不卡免费看| 欧美h在线观看| 在线国产精品视频| 成人污污视频| 97超碰在线人人| 久久这里都是精品| 中国精品一区二区| 久99久在线视频| 久久中文资源| 国产一级做a爰片久久| 中文字幕字幕中文在线中不卡视频| 精品久久人妻av中文字幕| 高清视频欧美一级| 九九综合在线| 亚洲第一天堂久久| 亚洲成人午夜影院| 国产精品久久久久一区二区国产| 国产自产女人91一区在线观看| 欧美日韩精品免费观看视频完整| 久久久久国产精品无码免费看| 91福利视频久久久久| av在线下载| 久久久影院一区二区三区| 老司机精品视频在线| 国产一级特黄视频| 国产亚洲人成a一在线v站| 欧美日韩国产一区二区在线观看| 欧美黑人经典片免费观看| 中文字幕免费不卡在线| 亚洲国产精品久久人人爱潘金莲| 51久久精品夜色国产麻豆| 国产国产精品| 黄色a一级视频| 这里只有精品99re| 性欧美18xxxhd| 最新av在线免费观看| 久久久久久久国产精品影院| 国产人妖一区二区三区| 日本亚洲欧洲色α| 欧美日本不卡| 日韩不卡av在线| 亚洲激情视频在线观看| 亚洲国产天堂| aaaaaa亚洲| 亚洲777理论| 成人在线免费看片| 欧美日韩天天操| 丁香六月久久综合狠狠色|