程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> mysql命令行技巧匯總大全

mysql命令行技巧匯總大全

編輯:MYSQL入門知識
 

哥每天來上班,第一件事就是ssh連接到服務器,w看一下還有誰在線,wall問個早安,然後就mysql -uroot -p 連接上mysqld。直到下班,才會ctrl+d退出。
mysql命令行用得多了, 也就總結出來了一些技巧,今天就來分享一下:

1) pager

pager真是一個很神奇的東西,它可以控制mysql的輸出。默認值是stdout,直接輸出。
艾,貌似講不清楚啊,還是看幾個例子吧:


mysql> SELECT mobile FROM profile WHERE mobile!='';
+-------------+
| mobile |
+-------------+
| 13719001986 |
| 123214234 |
+-------------+
2 ROWS IN SET (0.00 sec)

mysql>
mysql> pager grep "137"
PAGER SET TO 'grep "137"'
mysql>
mysql> SELECT mobile FROM profile WHERE mobile!='';
| 13719001986 |
2 ROWS IN SET (0.00 sec)

mysql> pager
DEFAULT pager wasn't set, using stdout
 

相當於在輸出之後附加了 | grep “137″ ,是不是很震憾。
不止是grep, 所有linux上面的命令都可以的,自由發揮吧。
比如select很多行數據,就可以設置pager more,一頁一頁地看。
再比如要比較二次select的結果是否相同,可以設置pager md5sum,實在是太贊了。
再比如,只想看select語句運行需要多長時間,而不想看到select出來的結果集,可以使用
pager cat > /dev/null

再比如,看一下processlist裡面Sleep的線程有多少,可以使用
pager grep Sleep | wc -l

2) edit

肯定有人會有這樣的想法:在mysql命令行裡面編輯一個復雜點的sql語句實在是太費神了,光標只能左右移動,要是有個vi就好多啦。
其實真的有….
mysql> edit
就這麼簡單,誰用誰知道。

3) tee

如果想記錄下來您所有的操作及輸出,除了屏幕錄象軟件之外,還有這麼一個神奇的東西tee。


mysql> tee /tmp/h.log
Logging TO file '/tmp/h.log'
mysql>
mysql>
mysql> SHOW engine innodb STATUS;
.........
mysql> exit
 

所有的一切都被記錄在 /tmp/h.log文件中了。

4) prompt

快要去吃午飯了, 這時如果你又想看一條UPDATE語句究竟會執行多久,怎麼辦?
等下去就要餓死啦。

修改一下mysql的prompt提示符,輕松解決這個問題:


mysql> prompt \r:\m:\s\P>\_
PROMPT SET TO '\r:\m:\s\P>\_'
11:30:10am>
11:30:11am>
11:30:11am>
11:30:12am>
11:30:12am>
11:30:12am>
11:30:12am>
 

輸入UPDATE語句,回車走人。

吃完飯回來就可以看到執行結束的時間了。

5) ctrl+z

作為一個dba,每天都要在命令行中登陸mysql,運行完sql語句,隨手就logout了,(快捷鍵是ctrl+d),
過一段時間又要login,又隨手logout……
重復重復再重復,不僅浪費時間,而且輸入mysql root的復雜密碼也會煩死個人。

這個logout的壞習慣,一定要改掉。。。,哥已經改掉了。


mysql>
mysql>
mysql> SELECT now();
+---------------------+
| now() |
+---------------------+
| 2012-12-25 15:33:16 |
+---------------------+
1 ROW IN SET (0.00 sec)

mysql>
不要按ctrl+d了, 換成Ctrl+z , 暫停任務。
[1]+ Stopped /home/mysql/bin/mysql -uroot -p
[MODIFY@www 8p]$
[MODIFY@www 8p]$
[MODIFY@www 8p]$
需要用到mysql的時候,
輸入fg回車:
[MODIFY@www 8p]$ fg
/home/mysql/bin/mysql -uroot -p
mysql>
mysql>
 

是不是很爽。。。

6) html輸出

-H


[root@www ~]# /home/mysql/bin/mysql -uroot -p -H -e "select host from mysql.user";
Enter password:
<TABLE BORDER=1><TR><TH>host</TH></TR><TR><TD>localhost</TD></TR>

<TR><TD>localhost

</TD></TR><TR><TD>localhost</TD></TR><TR><TD>localhost</TD></TR>

<TR><TD>localhost</TD></TR><TR><TD>localhost</TD></TR></TABLE>[root@www ~]#
 

7) 最簡化輸出

如果只想要結果,不要那些邊框,字段名稱之類的東西,可以使用 –skip-line-numbers –skip-column-names


[root@www ~]# /home/mysql/bin/mysql -uroot -p -e "select count(*) from shipincon.share where add_time >= current_date()";
+----------+
| COUNT(*) |
+----------+
| 850 |
+----------+

[root@www ~]# /home/mysql/bin/mysql --silent --skip-line-numbers --skip-column-names -uroot -p -e "select count(*) from shipincon.share where add_time >= current_date()";
850
 

8) help

在不方便上網查找mysql文檔的情況下,help還是很靠譜的。


mysql> help string functions;
You asked FOR help about help category: "String Functions"
FOR more information, TYPE 'help <item>', WHERE <item> IS one OF the following
topics:
ASCII
BIN
BINARY OPERATOR
BIT_LENGTH
CAST
CHAR FUNCTION
CHARACTER_LENGTH  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved