文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


6.5.1.2 mysql 客戶端命令

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 命令,除非是非互動模式中的 charsetdelimiter (用於管道傳輸到 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 語句。如果啟用自動重新連線 (不建議使用),這可讓字元集在客戶端和伺服器上保持同步,因為指定的字元集會用於重新連線。

  • clear\c

    清除目前的輸入。如果您改變主意不想執行您正在輸入的語句,請使用此命令。

  • connect [db_name [host_name]]\r [db_name [host_name]]

    重新連線到伺服器。可以提供可選的資料庫名稱和主機名稱引數,以指定預設資料庫或執行伺服器的主機。如果省略,則會使用目前的值。

    如果 connect 命令指定了主機名稱引數,該主機將優先於在 mysql 啟動時指定的任何 --dns-srv-name 選項,以指定 DNS SRV 記錄。

  • delimiter str\d str

    變更 mysql 解譯為 SQL 語句之間分隔符號的字串。預設值是分號字元 (;)。

    分隔符號字串可以指定為 delimiter 命令列上的未加引號或加引號的引數。加引號可以使用單引號 (')、雙引號 (") 或反引號 (`) 字元來完成。若要在加引號的字串中包含引號,請使用不同的引號字元來引號字串,或使用反斜線 (\) 字元逸出引號。反斜線應避免在加引號的字串外使用,因為它是 MySQL 的逸出字元。對於未加引號的引數,分隔符號會讀取到第一個空格或行尾。對於加引號的引數,分隔符號會讀取到行上的相符引號。

    mysql 會將分隔符號字串的執行個體解譯為語句分隔符號,無論它出現在何處,但在加引號的字串中除外。請小心定義可能出現在其他單字中的分隔符號。例如,如果將分隔符號定義為 X,則無法在語句中使用單字 INDEXmysql 會將其解譯為 INDE,後面接著分隔符號 X

    mysql 辨識的分隔符號設定為預設值 ; 以外的字元時,該字元的實例會未經解譯地傳送到伺服器。然而,伺服器本身仍然會將 ; 解釋為語句分隔符號,並相應地處理語句。伺服器端的這種行為會在多語句執行(請參閱 多語句執行支援)以及解析儲存程序、函數、觸發器和事件的主體時發揮作用(請參閱 第 27.1 節,「定義儲存程序」)。

  • edit, \e

    編輯當前輸入的語句。mysql 會檢查 EDITORVISUAL 環境變數的值,以確定要使用哪個編輯器。如果這兩個變數都未設定,則預設編輯器為 vi

    edit 命令僅在 Unix 中有效。

  • ego, \G

    將當前語句傳送到伺服器執行,並使用垂直格式顯示結果。

  • exit, \q

    退出 mysql

  • go, \g

    將當前語句傳送到伺服器執行。

  • nopager, \n

    停用輸出分頁。請參閱 pager 的說明。

    nopager 命令僅在 Unix 中有效。

  • notee, \t

    停用將輸出複製到 tee 檔案。請參閱 tee 的說明。

  • nowarning, \w

    停用在每個語句後顯示警告。

  • pager [command], \P [command]

    啟用輸出分頁。當您調用 mysql 時,使用 --pager 選項,可以在互動模式下使用 Unix 程式(例如 lessmore 或任何其他類似的程式)瀏覽或搜尋查詢結果。如果您未指定選項的值,mysql 會檢查 PAGER 環境變數的值,並將分頁器設定為該值。分頁器功能僅在互動模式下有效。

    可以使用 pager 命令以互動方式啟用輸出分頁,並使用 nopager 停用。該命令接受一個可選參數;如果指定,則將分頁程式設定為該參數。如果沒有參數,則分頁器會設定為在命令列上設定的分頁器,如果未指定分頁器,則會設定為 stdout

    輸出分頁僅在 Unix 中有效,因為它使用 popen() 函數,該函數在 Windows 上不存在。對於 Windows,可以使用 tee 選項來儲存查詢輸出,雖然在某些情況下,它不如 pager 方便瀏覽輸出。

  • print, \p

    列印當前輸入的語句,而不執行它。

  • prompt [str], \R [str]

    mysql 提示符號重新設定為給定的字串。可以在提示符號中使用的特殊字元序列將在本節稍後說明。

    如果您在沒有任何參數的情況下指定 prompt 命令,則 mysql 會將提示符號重設為預設值 mysql>

  • query_attributes name value [name value ...]

    定義適用於傳送到伺服器的下一個查詢的查詢屬性。有關查詢屬性的用途和使用方式的討論,請參閱 第 11.6 節,「查詢屬性」

    query_attributes 命令遵循以下規則

    • 屬性名稱和值的格式和引用規則與 delimiter 命令相同。

    • 該命令允許最多 32 個屬性名稱/值對。名稱和值最多可達 1024 個字元長。如果給出名稱但沒有值,則會發生錯誤。

    • 如果在查詢執行之前發出多個 query_attributes 命令,則僅適用最後一個命令。在傳送查詢後,mysql 會清除屬性集。

    • 如果使用相同的名稱定義多個屬性,則嘗試檢索屬性值會產生未定義的結果。

    • 無法依名稱檢索使用空名稱定義的屬性。

    • 如果在 mysql 執行查詢時發生重新連線,則 mysql 會在重新連線後還原屬性,以便可以使用相同的屬性再次執行查詢。

  • quit, \q

    退出 mysql

  • rehash, \#

    重建完成雜湊,以便在您輸入語句時啟用資料庫、表格和資料行名稱的完成功能。(請參閱 --auto-rehash 選項的說明。)

  • resetconnection, \x

    重設連線以清除會期狀態。這包括清除使用 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 的資料列,同時用戶端會保持重新連線到伺服器。

  • status, \s

    提供有關您使用的連線和伺服器的狀態資訊。如果您在啟用 --safe-updates 的情況下執行,status 也會列印影響您查詢的 mysql 變數的值。

  • system command, \! command

    使用您的預設命令直譯器執行給定的命令。

  • tee [file_name], \T [file_name]

    當您調用 mysql 時,使用 --tee 選項,您可以記錄語句及其輸出。螢幕上顯示的所有資料都會附加到指定的檔案中。這對於除錯也很有用。mysql 會在每個語句之後,在列印下一個提示符號之前,將結果刷新到檔案中。Tee 功能僅在互動模式下有效。

    您可以使用 tee 命令以互動方式啟用此功能。如果沒有參數,則會使用先前的檔案。可以使用 notee 命令停用 tee 檔案。再次執行 tee 會重新啟用記錄。

  • use db_name, \u db_name

    使用 db_name 作為預設資料庫。

  • warnings, \W

    啟用在每個語句後顯示警告(如果有)。

以下是有關 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 在螢幕上顯示結果。

您還可以結合 teepager 功能。啟用 tee 檔案並將 pager 設定為 less,您就可以使用 less 程式瀏覽結果,同時仍然將所有內容附加到檔案中。 Unix teepager 命令結合使用和 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 目前年份,兩位數
\_ 一個空格
一個空格(反斜線後接一個空格)
\' 單引號
\" 雙引號
\\ 一個字面 \ 反斜線字元
\x

x,對於任何未在上面列出的 x

您可以使用幾種方法來設定提示字元

  • 使用環境變數。您可以將 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>