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.
For server side help, type 'help contents'
--binary-mode
オプションを指定して mysql を起動すると、非対話モード (mysql にパイプされた入力または source
コマンドを使用してロードされた入力の場合) の charset
および delimiter
を除き、すべての mysql コマンドが無効になります。
各コマンドにはそれぞれロング形式とショート形式があります。 長い形式では大文字と小文字は区別されません。短い形式では区別されます。 ロング形式にはオプションのセミコロン終端記号があとに続くこともありますが、ショート形式ではありません。
複数行の/* ... */
コメント内でのショートフォームコマンドの使用はサポートされていません。 ショートフォームコマンドは、オブジェクト定義に格納されている/*+ ... */
オプティマイザヒントコメントと同様に、単一行の/*! ... */
バージョンコメント内で機能します。 オプティマイザヒントのコメントがオブジェクト定義に格納され、mysql
でリロードされたときにダンプファイルによってそのようなコマンドが実行されることが懸念される場合は、--binary-mode
オプションを指定して mysql を起動するか、mysql 以外のリロードクライアントを使用します。
-
help [
,arg
]\h [
,arg
]\? [
,arg
]? [
arg
]使用可能な mysql コマンドの一覧を示すヘルプメッセージを表示します。
help
コマンドに引数を指定した場合、mysql は、サーバー側のヘルプにアクセスして MySQL リファレンスマニュアルの内容から検索するための文字列として引数を使用します。 詳細は、セクション4.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 によって認識される区切り文字がデフォルトの
;
以外の何かに設定されている場合、その文字のインスタンスは解釈されずにサーバーに送信されます。 しかし、サーバー自体は引き続き;
をステートメントの区切り文字として解釈し、その解釈に従ってステートメントを処理します。 サーバー側でのこの動作は、複数ステートメントの実行 (Multiple Statement Execution Supportを参照してください) や、ストアドプロシージャーおよび関数の本体、トリガー、およびイベントの解析 (セクション25.1「ストアドプログラムの定義」を参照してください) に効果があります。 -
現在の入力ステートメントを編集します。mysql では、
EDITOR
およびVISUAL
環境変数の値を確認して、どのエディタを使用するかを判断します。 どちらの変数も設定されていない場合、デフォルトのエディタは vi です。edit
コマンドは Unix でのみ機能します。 -
現在のステートメントを、実行するためにサーバーに送信し、結果を縦の形式で表示します。
-
mysql を終了します。
-
現在のステートメントを、実行するためにサーバーに送信します。
-
出力のページングを無効にします。
pager
の説明を参照してください。nopager
コマンドは Unix でのみ機能します。 -
tee ファイルへの出力コピーを無効にします。
tee
の説明を参照してください。 -
各ステートメントのあとの警告の表示を無効にします。
-
出力のページングを有効にします。 mysql を呼び出すときに
--pager
オプションを使用することで、less、more、またはその他の同様のプログラムなどの Unix プログラムを使って、インタラクティブモードでクエリー結果を参照または検索できます。 オプションで値を特定しない場合、mysql はPAGER
環境変数の値を確認し、ページャーをその値に設定します。 ページャー機能はインタラクティブモードの場合のみ機能します。出力ページングは
pager
コマンドでインタラクティブに有効にでき、nopager
で無効にできます。 このコマンドはオプションの引数を取ります。指定された場合、ページングプログラムはそれに設定されます。 引数がない場合、ページャーはコマンド行で設定されたもの、またはページャーが指定されていない場合はstdout
になります。出力ページングは Unix 上でのみ機能します。これは Windows では存在しない
popen()
関数を使用するからです。 Windows では、クエリー出力の保存にtee
オプションを代わりに使用できますが、これは場合によっては、出力のブラウズにはpager
ほど便利ではありません。 -
現在の入力ステートメントを実行しないで出力します。
-
mysql プロンプトを指定の文字列に再構成します。 プロンプトで使用できる特殊文字シーケンスについては、このセクションのあとの方で説明します。
引数なしで
prompt
コマンドを指定すると、mysql はプロンプトをデフォルトのmysql>
にリセットします。 -
query_attributes
name
value
[name
value
...]サーバーに送信される次のクエリーに適用されるクエリー属性を定義します。 クエリー属性の目的および使用方法の詳細は、セクション9.6「クエリー属性」 を参照してください。
query_attributes
コマンドは、次のルールに従います:属性名および値の書式および引用符のルールは、
delimiter
コマンドの場合と同じです。このコマンドでは、最大 32 個の属性名/値のペアが許可されます。 名前と値の長さは最大 1024 文字です。 値を指定せずに名前を指定すると、エラーが発生します。
クエリーの実行前に複数の
query_attributes
コマンドが発行された場合は、最後のコマンドのみが適用されます。 クエリーの送信後、mysql は属性セットをクリアします。複数の属性が同じ名前で定義されている場合、属性値を取得しようとすると未定義の結果になります。
空の名前で定義された属性は名前で取得できません。
mysql によるクエリーの実行中に再接続が発生した場合、mysql は再接続後に属性をリストアし、同じ属性を使用してクエリーを再度実行できるようにします。
-
mysql を終了します。
-
ステートメントの入力中にデータベース、テーブル、およびカラムの名前補完を可能にする補完ハッシュを再構築します。 (
--auto-rehash
オプションの説明を参照してください。) -
接続をリセットしてセッションステートをクリアします。 これには、
query_attributes
コマンドを使用して定義された現在のクエリー属性のクリアが含まれます。接続をリセットすると、
mysql_change_user()
または自動再接続に似た効果がありますが、接続がクローズされて再オープンされず、再認証が行われない点が異なります。 mysql_change_user()およびAutomatic Reconnection Controlを参照してください。この例では、
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 では、パス名区切り文字を
/
または\\
として指定します。引用符は、ファイル名自体の一部として使用されます。 最良の結果を得るには、名前に空白文字を含めないでください。
-
使用中の接続とサーバーに関するステータス情報を表示します。
--safe-updates
を有効にして実行している場合、status
はクエリーに影響する mysql 変数の値も出力します。 -
デフォルトのコマンドインタプリタを使って指定のコマンドを実行します。
MySQL 8.0.19 より前は、
system
コマンドは Unix でのみ機能します。 8.0.19 では、Windows でも動作します。 -
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
オプションを指定すると、左右の方向キーを使用して横にスクロールできるため、結果セットが読みやすくなります。 また、-S
を less 内でインタラクティブに使用して、水平方向のブラウズモードをオン/オフにできます。 詳細は、less マニュアルページを参照してください。shell> man less
-
-F
および-X
オプションを less で使用すると、出力が 1 画面に収まる場合にプログラムを終了させることができ、これはスクロールが不要なときに便利です。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
にマウントされた 2 つの異なるファイルシステムの 2 つの異なるディレクトリ内の 2 つのファイルに送信し、さらに less を使用して結果を画面に表示します。
tee
関数と pager
関数を組み合わせることもできます。 tee
ファイルを有効にし、pager
を less に設定してあれば、less プログラムを使って結果をブラウズしつつ、同時にすべてをファイルに追加できます。 pager
コマンドと一緒に使用する Unix tee
と、mysql に組み込みの tee
コマンドの違いは、組み込みの tee
は Unix tee がなくても機能するということです。 また、組み込みの tee
は画面に出力されるものすべてをログに記録しますが、pager
と一緒に使用される Unix tee はそこまでログに記録しません。 さらに、tee
ファイルのロギングは mysql 内からインタラクティブにオン/オフできます。 これは一部のクエリーのみをファイルにログするときに有効です。
prompt
コマンドはデフォルトの mysql>
プロンプトを再構成します。 プロンプトを定義するための文字列には、次の特殊なシーケンスを含めることができます。
オプション | 説明 |
---|---|
\C |
現在の接続識別子 |
\c |
ステートメントを発行するたびにインクリメントするカウンタ |
\D |
現在の日付 (フルで) |
\d |
デフォルトデータベース |
\h |
サーバーホスト |
\l |
現在の区切り文字 |
\m |
現在の時間の分 |
\n |
改行文字 |
\O |
3 文字の形式の現在の月 (Jan、Feb、…) |
\o |
数字形式の現在の月 |
\P |
am/pm |
\p |
現在の TCP/IP ポートまたはソケットファイル |
\R |
現在の時間、24 時間表記 (0-23) |
\r |
現在の時間、12 時間表記 (1-12) |
\S |
セミコロン |
\s |
現在の時間の秒 |
\t |
タブ文字 |
\U |
完全な |
\u |
ユーザー名 |
\v |
サーバーバージョン |
\w |
3 文字の形式の現在の曜日 (Mon, Tue, …) |
\Y |
現在の年 (4 桁) |
\y |
現在の年 (2 桁) |
\_ |
スペース |
\ |
スペース (バックスラッシュのあとにスペースがあります) |
\' |
単一引用符 |
" |
二重引用符 |
\\ |
リテラルの \ バックスラッシュ文字 |
\ |
|
プロンプトはいくつかの方法でセットできます。
-
環境変数を使用します。
MYSQL_PS1
環境変数をプロンプト文字列に設定できます。 例:shell> export MYSQL_PS1="(\u@\h) [\d]> "
-
コマンド行オプションを使用します。 コマンド行で、
--prompt
オプションを mysql に設定できます。 例:shell> mysql --prompt="(\u@\h) [\d]> " (user@host) [database]>
-
オプションファイルを使用します。
prompt
オプションを、ホームディレクトリの/etc/my.cnf
または.my.cnf
ファイルなど、任意の MySQL オプションファイルの[mysql]
グループに設定できます。 例:[mysql] prompt=(\\u@\\h) [\\d]>\\_
この例では、バックスラッシュが 2 つあることに注意してください。 オプションファイルで
prompt
オプションを使用してプロンプトを設定する場合、特別なプロンプトオプションを使用するときはバックスラッシュを 2 つ使用することをお勧めします。 許可されるプロンプトオプションのセットと、オプションファイルで認識される特殊なエスケープシーケンスのセットには、重複があります。 (オプションファイルでのエスケープシーケンスに関するルールはセクション4.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>