mysql 會將您發出的每個 SQL 語句傳送到伺服器執行。此外,還有一組命令由 mysql 本身解譯。如需這些命令的清單,請在 mysql>
提示符號輸入 help
或 \h
mysql> help
List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
? (\?) Synonym for `help'.
clear (\c) Clear the current input statement.
connect (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit (\e) Edit command with $EDITOR.
ego (\G) Send command to mysql server, display result vertically.
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to mysql server.
help (\h) Display this help.
nopager (\n) Disable pager, print to stdout.
notee (\t) Don't write into outfile.
pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (\#) Rebuild completion hash.
source (\.) Execute an SQL script file. Takes a file name as an argument.
status (\s) Get status information from the server.
system (\!) Execute a system shell command.
tee (\T) Set outfile [to_outfile]. Append everything into given
outfile.
use (\u) Use another database. Takes database name as argument.
charset (\C) Switch to another charset. Might be needed for processing
binlog with multi-byte charsets.
warnings (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.
query_attributes Sets string parameters (name1 value1 name2 value2 ...)
for the next query to pick up.
ssl_session_data_print Serializes the current SSL session data to stdout
or file.
For server side help, type 'help contents'
如果使用 --binary-mode
選項叫用 mysql,則會停用所有 mysql 命令,除非是非互動模式中的 charset
和 delimiter
(用於管道傳輸到 mysql 或使用 source
命令載入的輸入)。
每個命令都有長短兩種形式。長形式不區分大小寫;短形式區分大小寫。長形式可以加上可選的分號終止符,但短形式不應加上。
不支援在多行 /* ... */
註解中使用短形式命令。短形式命令可在單行 /*! ... */
版本註解中使用,也可以在儲存在物件定義中的 /*+ ... */
最佳化工具提示註解中使用。如果擔心最佳化工具提示註解可能會儲存在物件定義中,導致使用 mysql
重新載入時會執行此類命令,請使用 --binary-mode
選項叫用 mysql,或使用 mysql 以外的重新載入客戶端。
help [
、arg
]\h [
、arg
]\? [
、arg
]? [
arg
]顯示列出可用 mysql 命令的說明訊息。
如果您為
help
命令提供引數,mysql 會使用它作為搜尋字串,從 MySQL 參考手冊的內容存取伺服器端說明。如需詳細資訊,請參閱第 6.5.1.4 節,「mysql 客戶端伺服器端說明」。charset
、charset_name
\C
charset_name
變更預設字元集,並發出
SET NAMES
語句。如果啟用自動重新連線 (不建議使用),這可讓字元集在客戶端和伺服器上保持同步,因為指定的字元集會用於重新連線。清除目前的輸入。如果您改變主意不想執行您正在輸入的語句,請使用此命令。
connect [
、db_name
[host_name
]]\r [
db_name
[host_name
]]重新連線到伺服器。可以提供可選的資料庫名稱和主機名稱引數,以指定預設資料庫或執行伺服器的主機。如果省略,則會使用目前的值。
如果
connect
命令指定了主機名稱引數,該主機將優先於在 mysql 啟動時指定的任何--dns-srv-name
選項,以指定 DNS SRV 記錄。變更 mysql 解譯為 SQL 語句之間分隔符號的字串。預設值是分號字元 (
;
)。分隔符號字串可以指定為
delimiter
命令列上的未加引號或加引號的引數。加引號可以使用單引號 ('
)、雙引號 ("
) 或反引號 (`
) 字元來完成。若要在加引號的字串中包含引號,請使用不同的引號字元來引號字串,或使用反斜線 (\
) 字元逸出引號。反斜線應避免在加引號的字串外使用,因為它是 MySQL 的逸出字元。對於未加引號的引數,分隔符號會讀取到第一個空格或行尾。對於加引號的引數,分隔符號會讀取到行上的相符引號。mysql 會將分隔符號字串的執行個體解譯為語句分隔符號,無論它出現在何處,但在加引號的字串中除外。請小心定義可能出現在其他單字中的分隔符號。例如,如果將分隔符號定義為
X
,則無法在語句中使用單字INDEX
。mysql 會將其解譯為INDE
,後面接著分隔符號X
。當 mysql 辨識的分隔符號設定為預設值
;
以外的字元時,該字元的實例會未經解譯地傳送到伺服器。然而,伺服器本身仍然會將;
解釋為語句分隔符號,並相應地處理語句。伺服器端的這種行為會在多語句執行(請參閱 多語句執行支援)以及解析儲存程序、函數、觸發器和事件的主體時發揮作用(請參閱 第 27.1 節,「定義儲存程序」)。編輯當前輸入的語句。mysql 會檢查
EDITOR
和VISUAL
環境變數的值,以確定要使用哪個編輯器。如果這兩個變數都未設定,則預設編輯器為 vi。edit
命令僅在 Unix 中有效。將當前語句傳送到伺服器執行,並使用垂直格式顯示結果。
退出 mysql。
將當前語句傳送到伺服器執行。
停用輸出分頁。請參閱
pager
的說明。nopager
命令僅在 Unix 中有效。停用將輸出複製到 tee 檔案。請參閱
tee
的說明。停用在每個語句後顯示警告。
啟用輸出分頁。當您調用 mysql 時,使用
--pager
選項,可以在互動模式下使用 Unix 程式(例如 less、more 或任何其他類似的程式)瀏覽或搜尋查詢結果。如果您未指定選項的值,mysql 會檢查PAGER
環境變數的值,並將分頁器設定為該值。分頁器功能僅在互動模式下有效。可以使用
pager
命令以互動方式啟用輸出分頁,並使用nopager
停用。該命令接受一個可選參數;如果指定,則將分頁程式設定為該參數。如果沒有參數,則分頁器會設定為在命令列上設定的分頁器,如果未指定分頁器,則會設定為stdout
。輸出分頁僅在 Unix 中有效,因為它使用
popen()
函數,該函數在 Windows 上不存在。對於 Windows,可以使用tee
選項來儲存查詢輸出,雖然在某些情況下,它不如pager
方便瀏覽輸出。列印當前輸入的語句,而不執行它。
將 mysql 提示符號重新設定為給定的字串。可以在提示符號中使用的特殊字元序列將在本節稍後說明。
如果您在沒有任何參數的情況下指定
prompt
命令,則 mysql 會將提示符號重設為預設值mysql>
。query_attributes
name
value
[name
value
...]定義適用於傳送到伺服器的下一個查詢的查詢屬性。有關查詢屬性的用途和使用方式的討論,請參閱 第 11.6 節,「查詢屬性」。
query_attributes
命令遵循以下規則退出 mysql。
重建完成雜湊,以便在您輸入語句時啟用資料庫、表格和資料行名稱的完成功能。(請參閱
--auto-rehash
選項的說明。)重設連線以清除會期狀態。這包括清除使用
query_attributes
命令定義的任何當前查詢屬性。重設連線的效果類似於
mysql_change_user()
或自動重新連線,只是連線不會關閉和重新開啟,而且不會執行重新驗證。請參閱 mysql_change_user() 和 自動重新連線控制。此範例顯示
resetconnection
如何清除會期狀態中維護的值mysql> SELECT LAST_INSERT_ID(3); +-------------------+ | LAST_INSERT_ID(3) | +-------------------+ | 3 | +-------------------+ mysql> SELECT LAST_INSERT_ID(); +------------------+ | LAST_INSERT_ID() | +------------------+ | 3 | +------------------+ mysql> resetconnection; mysql> SELECT LAST_INSERT_ID(); +------------------+ | LAST_INSERT_ID() | +------------------+ | 0 | +------------------+
source
,file_name
\.
file_name
讀取指定的檔案,並執行其中包含的語句。在 Windows 上,請將路徑名稱分隔符號指定為
/
或\\
。引號字元會被視為檔案名稱本身的一部分。為了獲得最佳結果,名稱不應包含空格字元。
ssl_session_data_print [
file_name
]擷取、序列化並選擇性地儲存成功連線的會期資料。可以提供選用的檔案名稱和引數,以指定要儲存序列化會期資料的檔案。如果省略,則會將會期資料列印到
stdout
。如果 MySQL 會期設定為重複使用,則會將檔案中的會期資料還原序列化,並提供給
connect
命令以重新連線。當會期重複使用成功時,status
命令會包含一個顯示SSL session reused: true
的資料列,同時用戶端會保持重新連線到伺服器。提供有關您使用的連線和伺服器的狀態資訊。如果您在啟用
--safe-updates
的情況下執行,status
也會列印影響您查詢的 mysql 變數的值。使用您的預設命令直譯器執行給定的命令。
tee [
,file_name
]\T [
file_name
]當您調用 mysql 時,使用
--tee
選項,您可以記錄語句及其輸出。螢幕上顯示的所有資料都會附加到指定的檔案中。這對於除錯也很有用。mysql 會在每個語句之後,在列印下一個提示符號之前,將結果刷新到檔案中。Tee 功能僅在互動模式下有效。您可以使用
tee
命令以互動方式啟用此功能。如果沒有參數,則會使用先前的檔案。可以使用notee
命令停用tee
檔案。再次執行tee
會重新啟用記錄。使用
db_name
作為預設資料庫。啟用在每個語句後顯示警告(如果有)。
以下是有關 pager
命令的一些提示
您可以使用它寫入檔案,而結果只會寫入檔案
mysql> pager cat > /tmp/log.txt
您也可以傳遞任何您想要用作分頁器的程式選項
mysql> pager less -n -i -S
在前述範例中,請注意
-S
選項。您可能會發現它在瀏覽寬查詢結果時非常有用。有時,非常寬的結果集在螢幕上難以閱讀。less 的-S
選項可以使結果集更易於閱讀,因為您可以使用左箭頭和右箭頭鍵水平捲動。您也可以在 less 中互動式地使用-S
來開啟和關閉水平瀏覽模式。有關更多資訊,請閱讀 less 手冊頁。man less
-F
和-X
選項可以與 less 一起使用,使其在輸出適合一個螢幕時退出,這在不需要捲動時非常方便。mysql> pager less -n -i -S -F -X
您可以指定非常複雜的分頁器命令來處理查詢輸出。
mysql> pager cat | tee /dr1/tmp/res.txt \ | tee /dr2/tmp/res2.txt | less -n -i -S
在此範例中,該命令會將查詢結果傳送到兩個不同檔案系統上,分別掛載在
/dr1
和/dr2
的兩個不同目錄中的兩個檔案,同時仍然使用 less 在螢幕上顯示結果。
您還可以結合 tee
和 pager
功能。啟用 tee
檔案並將 pager
設定為 less,您就可以使用 less 程式瀏覽結果,同時仍然將所有內容附加到檔案中。 Unix tee
與 pager
命令結合使用和 mysql 內建的 tee
命令之間的區別在於,即使您沒有 Unix tee 可用,內建的 tee
也能正常運作。內建的 tee
還會記錄螢幕上印出的所有內容,而與 pager
一起使用的 Unix tee 不會記錄那麼多內容。此外,可以從 mysql 內部互動式地開啟和關閉 tee
檔案記錄。當您想將某些查詢記錄到檔案中,但不想記錄其他查詢時,這很有用。
prompt
命令會重新設定預設的 mysql>
提示字元。用於定義提示字元的字串可以包含下列特殊序列。
選項 | 描述 |
---|---|
\C |
目前的連線識別碼 |
\c |
針對您發出的每個陳述式遞增的計數器 |
\D |
完整的目前日期 |
\d |
預設資料庫 |
\h |
伺服器主機 |
\l |
目前的分隔符號 |
\m |
目前時間的分鐘 |
\n |
換行字元 |
\O |
目前月份的三個字母格式 (Jan、Feb、…) |
\o |
目前月份的數字格式 |
\P |
上午/下午 |
\p |
目前的 TCP/IP 連接埠或 Socket 檔案 |
\R |
目前時間,以 24 小時軍用時間 (0–23) 表示 |
\r |
目前時間,標準 12 小時制 (1–12) |
\S |
分號 |
\s |
目前時間的秒數 |
\T |
如果目前的會話在交易區塊內,則列印星號 (* ) |
\t |
跳格字元 |
\U |
您的完整 |
\u |
您的使用者名稱 |
\v |
伺服器版本 |
\w |
目前星期幾的三個字母格式 (Mon、Tue、…) |
\Y |
目前年份,四位數 |
\y |
目前年份,兩位數 |
\_ |
一個空格 |
\ |
一個空格(反斜線後接一個空格) |
\' |
單引號 |
\" |
雙引號 |
\\ |
一個字面 \ 反斜線字元 |
\ |
|
您可以使用幾種方法來設定提示字元
使用環境變數。您可以將
MYSQL_PS1
環境變數設定為提示字串。例如export MYSQL_PS1="(\u@\h) [\d]> "
使用命令列選項。您可以在命令列上將
--prompt
選項設定為 mysql。例如$> mysql --prompt="(\u@\h) [\d]> " (user@host) [database]>
使用選項檔案。您可以在任何 MySQL 選項檔案 (例如
/etc/my.cnf
或您主目錄中的.my.cnf
檔案) 的[mysql]
群組中設定prompt
選項。例如[mysql] prompt=(\\u@\\h) [\\d]>\\_
在此範例中,請注意反斜線是雙倍的。如果您在選項檔案中使用
prompt
選項設定提示字元,建議在使用特殊提示字元選項時將反斜線加倍。允許的提示字元選項集和選項檔案中可識別的特殊跳脫序列集有一些重疊。(選項檔案中跳脫序列的規則列於第 6.2.2.2 節「使用選項檔案」。)如果您使用單個反斜線,這種重疊可能會導致問題。例如,\s
會被解釋為空格,而不是目前的秒數值。以下範例顯示如何在選項檔案中定義提示字元,使其包含
格式的目前時間hh:mm:ss
>[mysql] prompt="\\r:\\m:\\s> "
互動式設定提示字元。您可以使用
prompt
(或\R
) 命令互動式變更您的提示字元。例如mysql> prompt (\u@\h) [\d]>\_ PROMPT set to '(\u@\h) [\d]>\_' (user@host) [database]> (user@host) [database]> prompt Returning to default PROMPT of mysql> mysql>