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 命令,除非在非互動模式下(對於管道輸入至 mysql 或使用 source
命令載入)的 charset
和 delimiter
命令。
每個命令都有長短兩種形式。長形式不區分大小寫;短形式則區分。長形式可以後接一個可選的分號終止符,但短形式不應如此。
不支援在多行 /* ... */
註解中使用短形式命令。短形式命令在單行 /*! ... */
版本註解中有效,/*+ ... */
優化器提示註解也有效,這些註解儲存在物件定義中。如果擔心優化器提示註解可能會儲存在物件定義中,導致使用 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
陳述式。這會使字元集在用戶端和伺服器上保持同步,如果 mysql 在啟用自動重新連線的情況下執行(不建議),則因為指定的字元集會用於重新連線。清除目前的輸入。如果您改變主意,不想執行您正在輸入的陳述式,請使用此命令。
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 | +------------------+
讀取指定的檔案並執行其中包含的語句。在 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
命令以互動方式啟用此功能。如果沒有參數,則會使用先前的檔案。tee
檔案可以使用notee
命令停用。再次執行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 選項檔案的
[mysql]
群組中設定prompt
選項,例如/etc/my.cnf
或您主目錄中的.my.cnf
檔案。例如[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>