MySQL Shell 提供可讓您修改程式碼編輯器執行環境的命令,例如設定啟用的程式語言或 MySQL 伺服器連線。下表列出無論目前選取的語言為何都可使用的命令。由於命令需要獨立於執行模式可用,因此它們以跳脫序列 (\) 字元開頭。
命令 | 別名/捷徑 | 描述 |
---|---|---|
|
|
列印關於 MySQL Shell 的說明,或搜尋線上說明。 |
|
|
結束 MySQL Shell。 |
|
在 SQL 模式中,開始多行模式。程式碼會被快取,並在輸入空行時執行。 |
|
|
|
顯示目前的 MySQL Shell 狀態。 |
|
將執行模式切換為 JavaScript。 |
|
|
將執行模式切換為 Python。 |
|
|
將執行模式切換為 SQL。 |
|
|
|
連線至 MySQL 執行個體。 |
|
重新連線至相同的 MySQL 執行個體。 |
|
|
中斷全域連線。 |
|
|
|
指定要使用的綱要。 |
|
|
使用啟用的語言執行腳本檔案。 |
|
|
顯示由陳述式產生的任何警告。 |
|
|
不顯示由陳述式產生的任何警告。 |
|
檢視和編輯命令列歷史記錄。 |
|
|
手動更新自動完成名稱快取。 |
|
|
查詢和變更 MySQL Shell 設定選項。 |
|
|
使用提供的選項和引數執行指定的報告。 |
|
|
使用提供的選項和引數執行指定的報告,並定期重新整理結果。 |
|
|
|
在預設系統編輯器中開啟命令,然後在 MySQL Shell 中顯示。 |
|
|
設定 MySQL Shell 用於顯示文字的分頁器。 |
|
停用 MySQL Shell 設定為使用的任何分頁器。 |
|
|
|
執行指定的作業系統命令,並在 MySQL Shell 中顯示結果。 |
|
|
讓您為 SQL 查詢定義查詢屬性。MySQL Shell 的功能與 MySQL 用戶端的功能相同。 |
\help
命令可以在有或沒有參數的情況下使用。若在沒有參數的情況下使用,會列印一般說明訊息,包括關於可用 MySQL Shell 命令、全域物件和主要說明類別的資訊。
若在有參數的情況下使用,則會根據 MySQL Shell 目前執行的模式使用參數來搜尋可用的說明。參數可以是單字、命令、API 函數或 SQL 陳述式的一部分。存在以下類別
AdminAPI
- 詳細說明dba
全域物件和 AdminAPI,可讓您使用 InnoDB 叢集、InnoDB 叢集組和 InnoDB 複本組。X DevAPI
- 詳細說明mysqlx
模組和 X DevAPI 的功能,可讓您將 MySQL 作為文件儲存使用Shell 命令
- 提供關於可用的內建 MySQL Shell 命令的詳細資訊。ShellAPI
- 包含關於shell
和util
全域物件的資訊,以及可讓您在 MySQL 伺服器上執行 SQL 的mysql
模組。SQL 語法
- 擷取 SQL 陳述式語法說明的進入點。
若要搜尋關於主題 (例如 API 函數) 的說明,請使用函數名稱作為pattern
。您可以使用萬用字元 ?
來比對任何單一字元,並使用 *
來比對搜尋中的多個字元。萬用字元可以在模式中使用一次或多次。以下命名空間也可以在搜尋說明時使用
dba
代表 AdminAPImysqlx
代表 X DevAPImysql
代表 ShellAPI,適用於傳統 MySQL 通訊協定shell
代表其他 ShellAPI 類別:Shell
、Sys
、Options
commands
代表 MySQL Shell 命令cmdline
代表 mysqlsh 命令介面
例如,若要搜尋關於主題的說明,請發出 \help
和pattern
使用
x devapi
來搜尋關於 X DevAPI 的說明使用
\c
來搜尋關於 MySQL Shell\connect
命令的說明使用
getCluster
或dba.getCluster
來搜尋關於 AdminAPIdba.getCluster()
作業的說明使用
Table
或mysqlx.Table
來搜尋關於 X DevAPITable
類別的說明當 MySQL Shell 在 JavaScript 模式下執行時,使用
isView
、Table.isView
或mysqlx.Table.isView
來搜尋關於Table
物件的isView
函數的說明當 MySQL Shell 在 Python 模式下執行時,使用
is_view
、Table.is_view
或mysqlx.Table.is_view
來搜尋關於Table
物件的isView
函數的說明當 MySQL Shell 在 SQL 模式下執行時,如果存在與 MySQL 伺服器的全域連線,則會顯示 SQL 說明。如需概觀,請使用
sql syntax
作為搜尋模式。
根據提供的搜尋模式,可能會找到一個或多個結果。如果只有一個說明主題在其標題中包含搜尋模式,則會顯示該說明主題。如果多個主題標題與模式相符,但有一個是完全相符,則會顯示該說明主題,接著顯示標題中具有模式符合的其他主題清單。如果未識別出完全相符的項目,則會顯示標題中具有模式符合項目的主題清單。如果傳回主題清單,您可以再次輸入具有符合相關主題標題的延伸搜尋模式的命令,從清單中選取要檢視的主題。
\connect
命令用於連線至 MySQL 伺服器。請參閱第 4.3 節,「MySQL Shell 連線」。
例如
\connect root@localhost:3306
如果需要密碼,系統會提示您輸入。
使用 --mysqlx
(--mx
) 選項來建立使用 X 通訊協定連線至 MySQL 伺服器執行個體的連線。例如
\connect --mysqlx root@localhost:33060
使用 --mysql
(--mc
) 選項來建立 ClassicSession,讓您可以使用傳統 MySQL 通訊協定在伺服器上直接發出 SQL。例如
\connect --mysql root@localhost:3306
使用 --ssh
選項來建立或重複使用 SSH 通道,以提供與 MySQL 伺服器執行個體的加密連線。從 MySQL Shell 使用 SSH 通道建立的連線不支援使用 AdminAPI 命令。請以 [user@]hostname[:port]
格式提供與 SSH 伺服器連線的 URI,後面接著 MySQL 執行個體 URI,例如
\connect --ssh root@198.51.100.4:2222 root@localhost:3306
當您使用 --ssh
選項時,必須在 MySQL 執行個體 URI 中指定連線至 MySQL 伺服器執行個體的連接埠。
使用 \connect
命令設定的 SSH 通道必須使用預設的 SSH 設定檔和識別檔。如需設定這些項目以及關於 MySQL Shell 中 SSH 通道連線的更多資訊,請參閱第 4.3.6 節,「使用 SSH 通道」。您可以使用 shell.connect()
方法或在命令列上設定 SSH 通道,以取得額外的設定選項。一旦建立完成,SSH 通道就可以在從相同執行個體連線的相同使用者的相同主機之間的連線之間共用,無論最初使用哪種設定方法。
\reconnect
命令的指定不帶任何參數或選項。如果與伺服器的連線中斷,您可以使用 \reconnect
命令,這會使 MySQL Shell 嘗試使用現有的連線參數多次重新連線到工作階段。如果這些嘗試不成功,您可以使用 \connect
命令並指定連線參數來建立新的連線。
\disconnect
命令的指定也不帶任何參數或選項。此命令會斷開 MySQL Shell 全域工作階段(由 session
全域物件表示的工作階段)與目前連線的 MySQL 伺服器執行個體的連線,如此您可以關閉連線,但仍然可以繼續使用 MySQL Shell。
如果與伺服器的連線中斷,您可以使用 \reconnect
命令,這會使 MySQL Shell 嘗試使用現有的連線參數多次重新連線到工作階段。如果這些嘗試不成功,您可以使用 \connect
命令並指定連線參數來建立新的連線。
\source
命令或其別名 \.
可以在 MySQL Shell 的互動模式中使用,以執行指定路徑下指令檔中的程式碼。例如:
\source /tmp/mydata.sql
您可以執行 SQL、JavaScript 或 Python 程式碼。檔案中的程式碼會使用啟用的語言執行,因此要處理 SQL 程式碼,MySQL Shell 必須處於 SQL 模式。
由於程式碼是使用啟用的語言執行,因此以與目前選取的執行模式語言不同的語言執行指令碼可能會導致非預期的結果。
為了與 mysql
用戶端相容,在僅限 SQL 模式下,您可以使用沒有反斜線和可選 SQL 分隔符的 source
命令從指令檔執行程式碼。source
或別名 \.
(不使用 SQL 分隔符)可用於 MySQL Shell 的 SQL 互動模式中,直接執行指令碼,以及在批次模式下處理的 SQL 程式碼檔案中,從檔案內執行其他指令碼。因此,在 SQL 模式下使用 MySQL Shell,您現在可以使用以下三個命令中的任何一個,從互動模式或批次模式執行 /tmp/mydata.sql
檔案中的指令碼
source /tmp/mydata.sql;
source /tmp/mydata.sql
\. /tmp/mydata.sql
\source /tmp/mydata.sql
命令也有效,但僅在互動模式下有效。
在互動模式下,\source
、\.
或 source
命令本身會新增至 MySQL Shell 歷史記錄,但執行的指令碼檔案的內容不會新增至歷史記錄。
\use
命令可讓您選擇哪個綱要為啟用狀態,例如
\use schema_name
\use
命令需要啟用全域開發工作階段。 \
use 命令會將目前的綱要設定為指定的 schema_name
,並將 db
變數更新為代表選取綱要的物件。
\history
命令會列出您先前在 MySQL Shell 中發出的命令。發出 \history
會依發出順序顯示歷史記錄項目,並包含其歷史記錄項目編號,該編號可與 \history delete
命令搭配使用。entry_number
\history
命令提供以下選項
使用
\history save
手動儲存歷史記錄。使用
\history delete entrynumber
刪除具有指定編號的個別歷史記錄項目。使用
\history delete
刪除指定項目編號範圍內的歷史記錄項目。如果firstnumber
-lastnumber
超過最後找到的歷史記錄項目編號,則會刪除歷史記錄項目,直到最後一個項目(包含最後一個項目)。lastnumber
使用
\history delete
刪除從number
-
到最後一個項目(包含最後一個項目)的歷史記錄項目。number
使用
\history delete -
從最後一個項目開始往回刪除指定數量的歷史記錄項目。例如,number
\history delete -10
會刪除最後 10 個歷史記錄項目。使用
\history clear
刪除整個歷史記錄。
依預設,歷史記錄不會在工作階段之間儲存,因此當您退出 MySQL Shell 時,目前工作階段期間發出的歷史記錄會遺失。如果您想要跨工作階段保留歷史記錄,請啟用 MySQL Shell history.autoSave
選項。如需更多資訊,請參閱 第 5.5 節「程式碼歷史記錄」。
當您停用了自動完成名稱快取功能時,請使用 \rehash
命令手動更新快取。例如,在您透過發出 \use
命令載入新的綱要之後,請發出 schema
\rehash
以更新自動完成名稱快取。在此之後,自動完成會知道資料庫中使用的名稱,而且您可以自動完成文字,例如表格名稱等等。請參閱 第 5.3 節「程式碼自動完成」。
\option
命令可讓您在所有模式中查詢和變更 MySQL Shell 組態選項。您可以使用 \option
命令來列出已設定的組態選項,並顯示其值上次變更的方式。您也可以使用它來設定和取消設定選項,不論是針對工作階段還是持續在 MySQL Shell 組態檔案中進行。如需指示和組態選項清單,請參閱 第 13.4 節「設定 MySQL Shell 選項」。
您可以設定 MySQL Shell 使用外部分頁器來讀取螢幕上的長輸出,例如線上說明或 SQL 查詢的結果。請參閱 第 4.6 節「使用分頁器」。
\show
命令會執行指定的報表,該報表可以是內建的 MySQL Shell 報表,或是已向 MySQL Shell 註冊的使用者定義報表。您可以為命令指定標準選項,以及報表支援的任何選項或額外引數。\watch
命令會以與 \show
命令相同的方式執行報表,但接著會定期重新整理結果,直到您使用 Ctrl + C 取消命令為止。如需指示,請參閱 第 10.1.5 節「執行 MySQL Shell 報表」。
\edit
(\e
) 命令會在預設系統編輯器中開啟命令進行編輯,然後在 MySQL Shell 中顯示編輯後的命令以供執行。也可以使用按鍵組合 Ctrl-X Ctrl-E 來叫用命令。如需詳細資訊,請參閱 第 5.4 節「編輯程式碼」。
\system
(\!
) 命令會執行您指定為命令引數的作業系統命令,然後在 MySQL Shell 中顯示命令的輸出。如果 MySQL Shell 無法執行命令,則會傳回錯誤。命令的輸出會以作業系統提供的形式傳回,而且不會由 MySQL Shell 的 JSON 包裝函式或您指定用來顯示輸出的任何外部分頁器工具處理。
query_attribute
命令和 session.setQueryAttributes
方法可讓您為 SQL 查詢定義查詢屬性。MySQL Shell 功能與 MySQL 用戶端的功能相同。
僅在傳統 MySQL 通訊協定上支援設定查詢屬性。X 通訊協定工作階段不支援此功能。
如需更多資訊,請參閱下列
設定查詢屬性範例
以下範例會分別使用值 val1
和 val2
設定屬性 att1
和 att2
-
SQL
SQL> \query_attributes att1 val1 att2 val2
-
JavaScript
JS> session.setQueryAttributes({att1:"val1",att2:"val2"})
-
Python
PY> session.set_query_attributes({att1:"val1",att2:"val2"})
擷取查詢屬性範例
可以使用 mysql_query_attribute_string()
函數擷取屬性。
例如
-
SQL
SQL> select mysql_query_attribute_string("att1") as "Attribute 1", mysql_query_attribute_string("att2")as "Attribute 2" +-------------+-------------+ | Attribute 1 | Attribute 2 | +-------------+-------------+ | v1 | v2 | +-------------+-------------+
-
JavaScript
JS> session.runSql("select mysql_query_attribute_string("att1") as "Attribute 1", mysql_query_attribute_string("att2")as "Attribute 2"')") +-------------+-------------+ | Attribute 1 | Attribute 2 | +-------------+-------------+ | v1 | v2 | +-------------+-------------+