mysql はシンプルな SQL
        シェルです(GNU readline
        機能がある)。対話形式と非対話形式をサポートしています。対話形式で使用した場合、クエリ結果は
        ASCII
        テーブル形式で表示されます。非対話形式(フィルタなど)で使用した場合、結果はタブ区切り形式で表示されます(出力形式は、コマンドラインオプションで変更できます)。以下のように簡単ににスクリプトを実行できます。
      
shell> mysql database < script.sql > output.tab
        クライアントでメモリ不足による問題が発生した場合、--quick
        オプションを使用します。これにより、mysql
        は mysql_store_result()
        ではなく、mysql_use_result()
        を使用して結果セットを取得します。
      
        mysql
        の使用は非常に簡単です。mysql
        database または mysql --user=user_name
        --password=your_password database
        のように、開始します。SQL
        ステートメントを入力し、‘;’、'\g'、または
        '\G' で終了して Enter
        キーを押します。
      
        mysql
        は、以下のオプションをサポートします。
      
            -?, --help
          
ヘルプを表示して終了する。
            -A, --no-auto-rehash
          
自動リハッシュを実行しない。テーブルおよびフィールドを完成させるには、'リハッシュ' を実行する必要がある。このオプションにより、mysql の起動が速くなる。
            --prompt=...
          
mysql プロンプトを指定の形式に設定する。
            -b, --no-beep
          
エラー時のビープ音をオフにする。
            -B, --batch
          
結果をタブで区切り、各レコードが 1 行になるように出力する。ヒストリファイルでは使用しないこと。
            --character-sets-dir=...
          
キャラクタセットが格納されているディレクトリ。
            -C, --compress
          
サーバ/クライアントプロトコルで圧縮を使用する。
            -#, --debug[=...]
          
デバッグログ。デフォルトは 'd:t:o,/tmp/mysql.trace'。
            -D, --database=...
          
            使用するデータベース。このオプションは主に、my.cnf
            ファイルで使用する。
          
            --default-character-set=...
          
デフォルトのキャラクタセットを設定する。
            -e, --execute=...
          
コマンドを実行して終了する(--batch と同じ出力)。
            -E, --vertical
          
            クエリ(レコード)を縦方向に出力する。このオプションを指定しなくても、ステートメントを
            \G
            で終了すれば、同じように出力できる。
          
            -f, --force
          
SQL エラーが発生しても続行する。
            -g, --no-named-commands
          
            名前付きコマンドが無効になる。\*
            形式のみ使用する。またはセミコロン(‘;’)で終わる行の最初でのみ名前付きコマンドを使用する。バージョン
            10.9
            以降、クライアントは起動時に、デフォルトでこのオプションを有効にするようになっている。ただし、-g
            オプションでは、ロング形式のコマンドは最初の行から機能する。
          
            -G, --enable-named-commands
          
名前付きコマンドが有効になる。ロング形式のコマンドもショートの \* コマンドと同様、有効になる。
            -i, --ignore-space
          
関数名の後のスペースを無視する。
            -h, --host=...
          
指定のホストに接続する。
            -H, --html
          
HTML 出力を生成する。
            -X, --xml
          
XML 出力を生成する。
            -L, --skip-line-numbers
          
エラーの行番号を書き込まない。これは、エラーメッセージが含まれる結果ファイルを比較する際に使用する。
            --no-pager
          
ページャーを無効にし、stdout に出力する。対話式ヘルプ(\h)も参照のこと。
            --no-tee
          
出力ファイルを無効にする。対話式ヘルプ(\h)も参照のこと。
            -n, --unbuffered
          
クエリごとにバッファをフラッシュする。
            -N, --skip-column-names
          
結果にカラム名を書き込まない。
            -O, --set-variable=name=value
          
            変数に値を設定する。--help
            により、変数が一覧表示される。 注意:
            --set-variable=name=value および
            -O name=value 構文は、MySQL 4.0
            で廃止されたた。代わりに
            --name=value を使用すること。
          
            -o, --one-database
          
デフォルトのデータベースだけを更新する。バイナリログ内の他のデータベースを更新しない場合に使用する。
            --pager[=...]
          
            出力タイプ。デフォルトは ENV
            変数の PAGER
            である。有効なページャーは、less、more、cat
            [> filename]
            など。対話式ヘルプ(\h)も参照のこと。このオプションはバッチモードでは無効。ページャーは
            Unix でのみ動作する。
          
            -p[password], --password[=...]
          
            サーバ接続時に使用するパスワード。パスワードをコマンドラインで指定しなかった場合、プロンプトが表示される。注意:
            ショート形式の -p
            を使用する場合、オプションとパスワードの間にスペースを入れてはいけない。
          
            -P port_num, --port=port_num
          
接続に使用する TCP/IP ポート番号。
            --protocol=(TCP | SOCKET | PIPE | MEMORY)
          
使用する接続プロトコルを指定する。MySQL 4.1 で導入。
            -q, --quick
          
結果をキャッシュせず、行ごとに出力する。出力が中断した場合、サーバが遅くなる可能性がある。ヒストリファイルは使用しない。
            -r, --raw
          
            エスケープ変換なしでカラム値を書き出す。--batch
            とともに使用。
          
            --reconnect
          
接続が失われた場合、サーバへの再接続を自動的に 1 度だけ試行する。
            -s, --silent
          
サイレントモード。
            -S --socket=...
          
接続に使用するソケットファイル。
            -t --table
          
表形式で出力。これは、非バッチモードでのデフォルトである。
            -T, --debug-info
          
終了時にデバッグ情報を出力する。
            --tee=...
          
出力ファイルにすべて出力する。対話式ヘルプ(\h)も参照のこと。バッチモードでは無効。
            -u, --user=#
          
カレントユーザでない場合のログインユーザ。
            -U, --safe-updates[=#],
            --i-am-a-dummy[=#]
          
            キーを使用する UPDATE と
            DELETE
            のみ許可する。このオプションについては、詳細を後で説明する。このオプションが
            my.cnf
            ファイルに含まれている場合、--safe-updates=0
            でリセットできる。
          
            -v, --verbose
          
冗長出力(-v -v -v で表出力形式となる)。
            -V, --version
          
バージョン情報を出力して終了する。
            -w, --wait
          
接続が切断された場合、停止せずに待機して再試行する。
        -O または --set-variable
        には、以下の変数も設定できます。注意:
        --set-variable=name=value および -O
        name=value 構文は、MySQL 4.0
        で廃止されましたた。代わりに
        --name=value を使用してください。
      
| 変数名 | デフォルト | 説明 | 
| connect_timeout | 0 | 接続タイムアウトの秒数。 | 
| local-infile | 0 | LOAD DATA INFILEのLOCAL機能の無効化(0)または有効化(1)。 | 
| max_allowed_packet | 16777216 | サーバ間での送受信可能な最大パケット長。 | 
| net_buffer_length | 16384 | TCP/IP およびソケット接続用バッファ。 | 
| select_limit | 1000 | --safe-updates使用時のSELECTの自動制限。 | 
| max_join_size | 1000000 | --safe-updates使用時に 1
                回の結合で扱うレコードの自動制限。 | 
        mysql
        クライアントがサーバにクエリを送信しているときに接続が切断された場合、クライアントは自動的に再接続を試行し、クエリを再度送信します。注意:
        再接続に成功した場合でも、最初の接続が終了した時点で、前回のセッションオブジェクト(テンポラリテーブル、ユーザ変数、セッション変数)はすべて失われています。したがって、上記の動作にはリスクが伴います。たとえば、以下の例の場合、ユーザが気付かない間にサーバがシャットダウンし、再起動しています。
      
mysql>set @a=1;Query OK, 0 rows affected (0.05 sec) mysql>insert into t values(@a);ERROR 2006: MySQL server has gone away No connection. Trying to reconnect... Connection id: 1 Current database: test Query OK, 1 row affected (1.30 sec) mysql>select * from t;+------+ | a | +------+ | NULL | +------+ 1 row in set (0.05 sec)
        この場合、@a
        ユーザ変数は接続の切断と同時に失われ、再接続後は未定義になっています。このリスクを回避するには、mysql
        クライアントを --disable-reconnect
        オプションで開始します。
      
        コマンドラインで 'help'
        を入力すると、mysql
        がサポートするコマンドを出力できます。
      
mysql> help
MySQL commands:
help      (\h)    Display this text.
?         (\h)    Synonym for `help'.
clear     (\c)    Clear command.
connect   (\r)    Reconnect to the server.
                  Optional arguments are db and host.
delimiter (\d)    Set query 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.
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.
        edit、nopager、pager、system
        の各コマンドは Unix でのみ動作します。
      
        status
        コマンドを実行すると、接続情報と、使用しているサーバの情報を取得できます。--safe-updates
        モードで status
        を実行すると、クエリに影響する
        mysql 変数値も出力されます。
      
        初心者に便利なスタートアップオプションとして、--safe-updates(MySQL
        バージョン 3.23.11
        で導入)があります(または、どこかで
        DELETE FROM table_name
        を実行しているが WHERE
        節を忘れたユーザの場合は
        --i-am-a-dummy)。このオプションを使用すると、接続時、mysql
        は以下のコマンドを MySQL サーバに送信します。
      
SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=#select_limit#,
    SQL_MAX_JOIN_SIZE=#max_join_size#"
        ここで #select_limit# と
        #max_join_size#
        は、mysql
        コマンドラインから設定できる変数です。 See
        項5.5.6. 「SET 構文」。
      
効果は以下のとおりです。
            WHERE
            部分にキー制約がなければ、UPDATE
            ステートメントまたは DELETE
            ステートメントを実行できない。ただし、LIMIT
            を使用すれば UPDATE/DELETE
            を強制実行できる。
UPDATE table_name SET not_key_column=# WHERE not_key_column=# LIMIT 1;
            大きな結果はすべて、自動的に
            #select_limit#
            レコードの制限を受ける。
          
            #max_join_size
            以上のレコードをチェックする必要がありそうな
            SELECT
            ステートメントは停止する。
          
        mysql クライアントに関するヒント
      
データによっては、横方向ではなく、縦方向に表示したほうが見やすい場合があります。たとえば改行を含む長いテキストでは、縦方向に出力した方が読みやすくなります。
mysql> SELECT * FROM mails WHERE LENGTH(txt) < 300 lIMIT 300,1\G
*************************** 1. row ***************************
  msg_nro: 3068
     date: 2000-03-01 23:29:50
time_zone: +0200
mail_from: Monty
    reply: monty@no.spam.com
  mail_to: "Thimble Smith" <tim@no.spam.com>
      sbj: UTF-8
      txt: >>>>> "Thimble" == Thimble Smith writes:
Thimble> Hi.  I think this is a good idea.  Is anyone familiar with UTF-8
Thimble> or Unicode? Otherwise, I'll put this on my TODO list and see what
Thimble> happens.
Yes, please do that.
Regards,
Monty
     file: inbox-jani-1
     hash: 190402944
1 row in set (0.09 sec)
        ログには、tee
        オプションを使用できます。tee
        は --tee=...
        オプションで起動できます。または、tee
        コマンドで対話式にコマンドラインから起動することもできます。画面に表示されるデータはすべて、指定のファイルにも記録されます。これは、デバッグ目的にも非常に役立ちます。tee
        は、notee
        でコマンドラインから無効にできます。tee
        を再び実行すると、ログが再開されます。パラメータなしの場合、前回のファイルが使用されます。注意:
        tee
        は、コマンドごとに(次のコマンドを待つコマンドラインが表示される直前に)、結果をファイルにフラッシュします。
      
        Unix の
        less、more、その他同様のプログラムの対話式モードで結果を参照したり検索するには、--pager[=...]
        オプションを使用します。引数がない場合、mysql
        クライアントは PAGER
        環境変数を探して、pager
        をその値に設定します。 pager
        は、pager
        コマンドで対話式コマンドラインから開始でき、nopager
        コマンドで無効にできます。コマンドは任意の引数を取り、pager
        がその値に設定されます。pager
        コマンドは引数なしでも呼び出せますが、--pager
        オプションが使用されていることが必要になります。そうしなければ、pager
        はデフォルトで stdout
        になります。pager は、Windows
        にはない popen()
        関数を使用するため、Unix
        でのみ有効です。Windows では代わりに
        tee
        オプションを使用できます。ただし状況によっては、pager
        ほど便利ではありません。
      
        pager に関するヒント
      
ファイルへの書き込みに使用できる。
mysql> pager cat > /tmp/log.txt
            これで、結果がファイルにのみ出力される。また、使用したいプログラムの任意のオプションを
            pager で渡すことができる。
mysql> pager less -n -i -S
            上記例の -S
            オプションに注目。これは、結果を参照する際に非常に役立つ。このオプションを横方向の表示(\g
            または ‘;’
            でコマンドを終了)、および縦方向の表示(\G
            でコマンドを終了)で試してみるとわかる。非常に幅の広い結果セットは画面上で見にくい場合があり、-S
            オプションを less
            に設定することにより、対話式の
            less
            で、画面幅より長い行が次の行まで続くことなく、結果セットを左から右に表示することができる。この方法により、結果セットを非常に見やすくできる。対話式の
            less で、-S
            によりこのモードのオンオフを切り替えることができる。less
            に関する詳細については 'h' を参照のこと。
          
結果の処理には、非常に複雑な方法を組み合わせることができる。以下の例では、結果を、/dr1 と /dr2 にマウントされている 2 つの異なるハードディスク上の 2 つの異なるディレクトリにある 2 つのファイルに記録し、画面上では less で表示する。
mysql>pager cat | tee /dr1/tmp/res.txt | \tee /dr2/tmp/res2.txt | less -n -i -S
        上記の 2
        つの関数を組み合わせることも可能です。tee
        を有効にし、pager を 'less'
        に設定することにより、Unix 'less'
        で結果を参照しながら同時に 1
        つのファイルにすべてを記録することができます。pager
        で使用される Unix の tee と
        mysql クライアントの組み込み
        tee がありますが、組み込み
        tee は tee
        が利用できない場合でも使用できます。また、組み込み
        tee
        は画面で出力されたものすべてをログファイルに記録しますが、pager
        で使用される Unix tee
        はそれほど多くのことを記録しません。最後に、対話式
        tee
        の方がオン/オフを切り替えやすいという点があります。ファイルに何かを記録したいのだが、ときどき機能をオフにもしたいという場合に便利です。
      
        MySQL バージョン 4.0.2 から、mysql
        コマンドラインクライアントでプロンプトを変更できるようになりました。
      
以下のプロンプトオプションを使用できます。
| オプション | 説明 | 
| \v | mysqld バージョン | 
| \d | 使用中のデータベース | 
| \h | 接続ホスト | 
| \p | 接続ポート | 
| \u | ユーザ名 | 
| \U | 完全ユーザ名@ホスト | 
| \\ | ‘ \’ | 
| \n | 新規改行 | 
| \t | タブ | 
| \ | スペース | 
| \_ | スペース | 
| \R | 24 時間形式(0 〜 23) | 
| \r | 標準時間形式(1 〜 12) | 
| \m | 分 | 
| \y | 2 桁年 | 
| \Y | 4 桁年 | 
| \D | 完全日付形式 | 
| \s | 秒 | 
| \w | 3 文字形式での曜日(Mon、Tue など) | 
| \P | am/pm | 
| \o | 数字による月 | 
| \O | 3 文字形式での月(Jan、Feb など) | 
| \c | コマンド実行ごとにカウントするカウンタ | 
        ‘\’
        にそれ以外の文字が続くと、単にその文字になります。
      
プロンプトは以下の場所で設定できます。
環境変数
            MYSQL_PS1
            環境変数をプロンプト文字列に設定できる。次に例を示す。
          
shell> export MYSQL_PS1="(\u@\h) [\d]> "
            my.cnf
            ,
            .my.cnf
          
            MySQL 設定ファイルの mysql
            グループで prompt
            オプションを設定できる。次に例を示す。
          
[mysql] prompt=(\u@\h) [\d]>\_
コマンドライン
            mysql のコマンドラインで
            --prompt
            オプションを設定できる。 次に例を示す。
          
shell> mysql --prompt="(\u@\h) [\d]> "
(user@host) [database]> 
対話式
            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>
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

