對(duì)于MySQL常用的SQL語句比如select、create、insert、update、delete、join、order by、group by等等相信大家都不陌生;但對(duì)于一些不是很常用卻又十分實(shí)用的語句在要使用的時(shí)候卻經(jīng)常記不起來如何寫,所以小編特地梳理了一下這些語句,希望對(duì)大家有所幫助。
導(dǎo)出數(shù)據(jù)庫
說到導(dǎo)出數(shù)據(jù)庫,大家肯定能mysqldump,由于mysqldump使用時(shí)涉及到比較多的參數(shù),所以在使用mysqldump時(shí)對(duì)這些參數(shù)基本記不全,那么我們先來熟悉一下常用的參數(shù),如下表:

1、導(dǎo)出整個(gè)數(shù)據(jù)庫
mysqldump –uroot –p111111 –h172.30.14.242 dbname>mydb.sql
2、導(dǎo)出存儲(chǔ)過程及函數(shù)
mysqldump –uroot –p111111 –h172.30.14.242 -ntd-R dbname > prorfunc.sql
3、導(dǎo)出數(shù)據(jù)庫表
mysqldump –uroot –p111111 –h172.30.14.242 dbnametablename>mydb.sql
若只需要導(dǎo)出表結(jié)構(gòu),可以增加參數(shù)-d或者–no-data
若只需要導(dǎo)出表數(shù)據(jù),可以增加參數(shù)-t或者--no-create-info
導(dǎo)入數(shù)據(jù)庫
1、未連接數(shù)據(jù)庫時(shí)導(dǎo)入
mysql –uroot –p111111 –h172.30.14.242 dbname< mydb.sql
2、連接數(shù)據(jù)庫時(shí)導(dǎo)入
連接數(shù)據(jù)庫
mysql –uroot –p111111 –h172.30.14.242指定客戶端和服務(wù)器之間傳遞字符的編碼規(guī)則為utf8set names utf8使用數(shù)據(jù)庫use dbname導(dǎo)入數(shù)據(jù)庫source /tmp/mydb.sql
其他數(shù)據(jù)導(dǎo)出/導(dǎo)入方式
SELECT INTO…OUTFILE語句把表數(shù)據(jù)導(dǎo)出到一個(gè)文本文件中,并用LOAD DATA …INFILE語句恢復(fù)數(shù)據(jù)。但是這種方法只能導(dǎo)出或?qū)霐?shù)據(jù)的內(nèi)容,不包括表的結(jié)構(gòu)。
1、SELECT INTO … OUTFILE導(dǎo)出數(shù)據(jù)
SELECT * FROM mytable INTO OUTFILE '/tmp/mytable.txt';
可以通過命令選項(xiàng)來設(shè)置數(shù)據(jù)輸出的指定格式,如下語句為導(dǎo)出CSV格式:
SELECT * FROM mytable INTO OUTFILE'/tmp/mytable.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINESTERMINATED BY ' ';
FIELDS子句:在FIELDS子句中有三個(gè)亞子句:TERMINATED BY、 [OPTIONALLY] ENCLOSED BY和ESCAPED BY。如果指定了FIELDS子句,則這三個(gè)亞子句中至少要指定一個(gè)。
(1)TERMINATED BY用來指定字段值之間的符號(hào);
(2)ENCLOSED BY子句用來指定包裹文件中字符值的符號(hào);
(3)ESCAPED BY子句用來指定轉(zhuǎn)義字符。
LINES子句:在LINES子句中使用TERMINATED BY指定一行結(jié)束的標(biāo)志。
2、LOAD DATA … INFILE導(dǎo)入數(shù)據(jù)
LOAD DATA LOCAL INFILE 'dump.txt' INTOTABLE mytable FIELDS TERMINATED BY ':' LINES TERMINATED BY ' ';
LOAD DATA 默認(rèn)情況下是按照數(shù)據(jù)文件中列的順序插入數(shù)據(jù)的,如果數(shù)據(jù)文件中的列與插入表中的列不一致,則需要指定列的順序。如,在數(shù)據(jù)文件中的列順序是 a,b,c,但在插入表的列順序?yàn)閎,c,a,則數(shù)據(jù)導(dǎo)入語法如下:
LOAD DATA LOCAL INFILE 'mytable.txt' INTO TABLE mytable (b, c, a)
字符串操作
1、字符串拼接
1)CONCAT(s1,s2,...)函數(shù)
將所有字符串拼接在一起
語句:SELECT CONCAT('2019','06','18); 執(zhí)行結(jié)果:20190618
2)CONCAT_WS(s,s1,s2,...)函數(shù)
通過第一個(gè)字符串s將后面的所有字符串拼接在一起
語句:SELECT CONCAT_WS('-','2019','06','18');執(zhí)行結(jié)果:2019-06-18
2、字符串替換
REPLACE(s,s1,s2)函數(shù)
將字符串s中的s1字符串替換為s2字符串
語句:SELECT REPLACE('helloname','name','world'); 執(zhí)行結(jié)果:hello world
時(shí)間函數(shù)
1、時(shí)間轉(zhuǎn)字符串
DATE_FORMAT函數(shù)用于以不同的格式顯示日期/時(shí)間數(shù)據(jù)
語法:DATE_FORMAT(date,format)
format 規(guī)定日期/時(shí)間的輸出格式。

示例:
語句:select DATE_FORMAT(now(),'%Y-%m-%d %T');
執(zhí)行結(jié)果:2019-07-09 15:35:19語句:select DATE_FORMAT(now(),'%Y-%m-%d %H:%i:%s');
執(zhí)行結(jié)果:2019-07-09 15:36:02
2、字符串轉(zhuǎn)時(shí)間
STR_TO_DATE用于將字符轉(zhuǎn)化為日期/時(shí)間格式
語法:STR_TO_DATE(string, format)
語句:SELECT STR_TO_DATE("2019 07 07","%Y %m %d"); 執(zhí)行結(jié)果:2019-07-07
3、時(shí)間運(yùn)算
函數(shù)從日期加上指定的時(shí)間間隔
DATE_ADD(date,INTERVAL expr type)
函數(shù)從日期減去指定的時(shí)間間隔
DATE_SUB(date,INTERVAL expr type)
type可取值為:
SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、EAR
示例:
語句:SELECT DATE_ADD(now(),INTERVAL 2 DAY);
執(zhí)行結(jié)果:2019-07-11 15:48:36語句:SELECT DATE_SUB(now(),INTERVAL 2 DAY);執(zhí)行結(jié)果:2019-07-07 15:48:36
浮點(diǎn)數(shù)運(yùn)算后的精度控制
1、轉(zhuǎn)化指定精度的字符串
FORMAT函數(shù)在mysql中是數(shù)據(jù)內(nèi)容格式化,可以格式化數(shù)據(jù)為整數(shù)或者浮點(diǎn)數(shù),整數(shù)部分超過三位的時(shí)候以逗號(hào)分割,并且返回的結(jié)果是string類型的。
語句:SELECT FORMAT(1012.232,2); 執(zhí)行結(jié)果:1,012.23
2、轉(zhuǎn)化指定精度的浮點(diǎn)數(shù)
FORMAT函數(shù)返回的是字符串形式數(shù)據(jù),若要返回浮點(diǎn)數(shù),我們使用CONVERT函數(shù)。
語句:SELECT CONVERT(1012.232, decimal(12,2)); 執(zhí)行結(jié)果:1012.23
小結(jié)
以上就是小編在工作過程中遇到的十分實(shí)用但時(shí)常會(huì)忘記的Mysql語句,有需要的同學(xué)可以收藏一下,在工作中遇到時(shí)可以做個(gè)參考。感興趣的同學(xué)可以關(guān)注我們的同名微信公眾號(hào)“麻辣軟硬件”,后臺(tái)發(fā)送消息與小編一起分享Mysql使用心得。