MySQL客戶端命令行應(yīng)用技巧大全
MySQL客戶端命令行我們都用的比較多,下面就為您詳細(xì)介紹MySQL客戶端命令行應(yīng)用技巧,希望可以讓您對(duì)MySQL客戶端命令行有更多的了解。
改變客戶端提示符
如果每運(yùn)行一次show tables來提醒自己目前所選擇的是哪個(gè)數(shù)據(jù)庫就能得到一塊錢的話,估計(jì)現(xiàn)在我都成百萬富翁了。事實(shí)上,當(dāng)我們不停的定期在IDE、shell提示符和MySQL客戶端提示符之間切換的時(shí)候,很容易就會(huì)迷失方向,不知道自己在哪里了。要從根本上消除這個(gè)問題,可以使用以下prompt命令來更改MySQL的提示符:
mysql>prompt mysql (d)>
執(zhí)行完該命令后,目前所選擇的數(shù)據(jù)庫就會(huì)在提示符中顯示出來,如下:
mysql (corporate)>
此外,我們也很容易跟丟我們所登錄的數(shù)據(jù)庫服務(wù)器,更不用說正在使用的帳戶了。要解決這個(gè)問題,通過使用u 和h 選項(xiàng)來更改提示符設(shè)置:
mysql>prompt mysql (u@h)>
執(zhí)行命令的結(jié)果如下:
mysql (root@www.ctocio.com.cn)>
想要***的保存這種更改設(shè)置,可以將以下的命令添加到.my.cnf 文件中:
[mysql] prompt=mysql d>
數(shù)據(jù)庫、用戶和主機(jī)選項(xiàng)只是很多可選選項(xiàng)的一個(gè)很小的部分而已,您可以參閱MySQL的說明文檔以獲取更多信息。
使用shell Alias(別名)來執(zhí)行經(jīng)常使用的MySQL命令
假設(shè)您的新web應(yīng)用正逐步步入應(yīng)用階段,每個(gè)小時(shí)都有新用戶注冊(cè)。就像新股上市一樣,您和您的同事需要經(jīng)常關(guān)注注冊(cè)用戶的數(shù)量。但是,就為了執(zhí)行一個(gè)簡單的計(jì)數(shù)查詢就需要不斷的登錄退出MySQL,顯然不是很劃算。如果您登錄到服務(wù)器,您可以創(chuàng)建一個(gè)shell別名來實(shí)現(xiàn)登錄到MySQL服務(wù)器、選擇適當(dāng)?shù)臄?shù)據(jù)庫和執(zhí)行計(jì)數(shù)命令整個(gè)過程:
%>alias usrcount="mysql -u appadmin -p myapplication
-e "select count(id) from users""
在本例中,您想要使用appadmin用戶帳戶登錄到本地MySQL服務(wù)器,選擇myapplication數(shù)據(jù)庫,然后利用SELECT查詢來執(zhí)行計(jì)數(shù)查詢。而執(zhí)行以上命令后,當(dāng)您想要確定系統(tǒng)中有多少用戶時(shí),只需要執(zhí)行以下的命令,并輸入appadmin的用戶密碼就可以了:
%>usrcount
Enterpassword:
+-------------+
|count(id)|
+-------------+
|348|
+-------------+
想要***的保存這個(gè)別名,可以將其添加保存到.bashrc文件或類似的shell配置文件中。
以垂直格式表現(xiàn)查詢結(jié)果
當(dāng)表包含了很多列時(shí),要在一個(gè)shell窗口中顯示SELECT查詢的結(jié)果就相當(dāng)困難了。通過在查詢中附加一個(gè)G轉(zhuǎn)換就可以很容易解決這一不便之處:
mysql>SELECT * from users WHERE id=1G
執(zhí)行這一查詢會(huì)使輸出結(jié)果表現(xiàn)如下:
mysql test>select * from users where id=1G
*************************** 1. row *********
id: 1
name: Nancy
email: Nancy@example.com
telephone: 861088888888
city: Beijing
1 row in set (0.00 sec)
從查詢結(jié)果創(chuàng)建一個(gè)CSV文件
如果您能夠很專業(yè)地使用數(shù)據(jù)庫,那么很可能會(huì)有同事讓您將數(shù)據(jù)從數(shù)據(jù)庫中轉(zhuǎn)存到一個(gè)Excel文件,以便進(jìn)行進(jìn)一步的分析。我們可以通過修改一個(gè)SELECT查詢來執(zhí)行所有的CSV格式化步驟,然后將數(shù)據(jù)放置到文本文件中。您需要做的只是要指出結(jié)束的字段和界限。例如,使用下面的命令可以將一個(gè)名為users的表轉(zhuǎn)存到名為users.csv的CSV文件中:
mysql>SELECT*FROMusersINTOOUTFILE'/home/jason/users.csv'
FIELDSTERMINATEDBY''->LINESTERMINATEDBY' ';
插入批量數(shù)據(jù)
假設(shè)您在編寫一個(gè)用來銷售各種各樣產(chǎn)品的電子商務(wù)應(yīng)用程序。比較明智的做法是先對(duì)這些產(chǎn)品進(jìn)行分類,因此,您可能需要使用一個(gè)表(本例中命名為categories)來管理這些分類名稱:
mysqltest>createtablecategories(
->idintegernotnullauto_increment,
->namevarchar(35)notnull,
->primarykey(id));
當(dāng)您在編寫程序的過程中,您已經(jīng)添加了一個(gè)包含分類列表的文本文件(categories.txt)。這個(gè)文件類似以下形式:
糖果
水果
咖啡
茶
蔬菜
接下來就要將這些分類添加到categories 表中。您可以手動(dòng)添加,但是這很耗費(fèi)時(shí)間而且容易出錯(cuò),比較明智的做法是使用MySQL的LOAD DATA INFILE命令:
mysql>LOADDATAINFILE'/home/nancy/categories.txt'
INTOTABLEcategories->LINESTERMINATEDBY'
'
如果您的輸入文件的每一行都包含了多個(gè)項(xiàng)目,那您可以通過使用制表符來分隔這些項(xiàng)目并把每個(gè)項(xiàng)目插入到一個(gè)獨(dú)立的列中,使用FIELDS TERMINATED BY '':
mysql>LOADDATAINFILE'/home/jason/categories.txt'
INTOTABLEcategories->FIELDSTERMINATEDBY''
LINESTERMINATEDBY'
'
禁用煩人的錯(cuò)誤提示音
您可能很討厭MySQL客戶端發(fā)出的錯(cuò)誤提示音。如果您實(shí)在無法適應(yīng)這種嗶嗶聲,您可以從客戶端內(nèi)部執(zhí)行一個(gè)查詢來斷絕這些午夜驚鈴。雖然這樣做對(duì)于效率并沒有什么關(guān)系,但您還是可以把這個(gè)功能禁用掉。暫時(shí)禁用提示聲,可以在登錄到服務(wù)器的同時(shí)調(diào)用 --no-beep。
%>mysql -u root -p --no-beep
要想***禁用這個(gè)功能,則將no-beep添加到.my.cnf 文件的[client]部分。
【編輯推薦】