圖形化管理工具琳瑯滿目,但真正能大幅提速且非「花架子」的工具,莫過於 MySQL 命令列客戶端。雖然執行查詢需大量鍵盤輸入,確認當前資料庫、監控效能等操作顯得單調,但掌握以下技巧可徹底改變體驗。
頻繁在 IDE、Shell、MySQL 提示符間切換時,極易忘記當前所在資料庫或連線身份。使用 prompt 命令即可解決:
mysql> prompt MySQL (\d)>
執行後提示符顯示當前資料庫:
MySQL (corporate)>
加入用戶與主機資訊:
mysql> prompt MySQL (\u@\h)>
效果:
MySQL (root@www.example.com)>
永久生效:將 [mysql] prompt=MySQL \d> 加入 .my.cnf。更多選項請參閱官方文檔。
頻繁查詢註冊用戶數時,反覆登入登出極其低效。建立 Shell 別名整合連線、選庫、查詢全流程:
%> alias usrcount="mysql -u appadmin -p myapplication -e 'select count(id) from users'"
之後僅需執行 usrcount 輸入密碼即得結果。永久保存請加入 .bashrc 或同類配置檔。
欄位較多時,水平表格在終端機顯示極難閱讀。查詢結尾加上 \G 即可垂直顯示:
mysql> SELECT * from users WHERE id=1\G
輸出範例:
*************************** 1. row *****************
id: 1
name: Nancy
email: Nancy@example.com
telephone: 861088888888
city: Beijing
1 row in set (0.00 sec)
同事需 Excel 分析資料時,可直接在查詢中完成格式化並輸出檔案:
mysql> SELECT * FROM users
-> INTO OUTFILE '/home/jason/users.csv'
-> FIELDS TERMINATED BY ','
-> LINES TERMINATED BY '\n';
電子商務專案中,需將分類清單(文字檔)批量寫入資料表。手動插入耗時易錯,LOAD DATA INFILE 為最佳選擇:
mysql> LOAD DATA INFILE '/home/nancy/categories.txt'
-> INTO TABLE categories
-> LINES TERMINATED BY '\n';
若每行含多欄位,以製表符分隔:
mysql> LOAD DATA INFILE '/home/jason/categories.txt'
-> INTO TABLE categories
-> FIELDS TERMINATED BY '\t'
-> LINES TERMINATED BY '\n';
若無法忍受蜂鳴聲,登入時加入 --no-beep 臨時禁用:
%> mysql -u root -p --no-beep
永久禁用:在 .my.cnf 的 [client] 區段加入 no-beep。
掌握這些命令列技巧,能讓你更高效駕馭這個強大工具,大幅提升日常運維與開發效率。