MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLコマンドラインクライアント(mysql)の使い方と基本操作

mysqlは、入力行編集機能を備えたシンプルなSQLシェルです。対話型と非対話型の両方の利用方法をサポートしており、MySQLデータベースを操作する際の基本的なツールとして広く使われています。

出力フォーマットの特徴

対話モードで使用した場合、クエリの実行結果はASCIIテーブル形式で整形されて表示されます。一方、フィルタのようにパイプやリダイレクトと組み合わせて非対話的に使用した場合は、結果がタブ区切り形式で出力されます。

この出力形式は、コマンドラインオプションを使って自由に変更することが可能です。

--quickオプションによるメモリの節約

大量の結果セットを扱う際にメモリ不足で問題が発生する場合は、--quickオプションが有効です。このオプションを指定すると、mysqlは結果セット全体を一度に取得してメモリ上にバッファリングしてから表示するのではなく、サーバーから1行ずつ結果を取得するようになります。

これは内部的には、クライアント/サーバーライブラリに含まれるC API関数のうち、mysql_store_result()の代わりにmysql_use_result()を使用することで実現されています。

mysqlの起動方法

mysqlの起動は非常に簡単で、ユーザーのコマンドインタプリタ(シェル)のプロンプトから呼び出すだけです。以下のように実行します。

shell> mysql db_name

または、ユーザー名とパスワードを明示的に指定して起動することもできます。

shell> mysql --user=user_name --password db_name

ログイン時の出力例

Enter password: your_password

SQLステートメントの入力と終了

ログイン後は、SQLステートメントを入力し、以下のいずれかの方法で文の終わりを示します。

  • ;(セミコロン)
  • \g
  • \G(縦方向に整形して表示)

また、Control+Cを押すと、実行中のステートメントがあればそれが中断され、実行中のステートメントがない場合は、入力途中の行がキャンセルされます。

スクリプトファイルからの実行

SQLステートメントは、スクリプトファイル(バッチファイル)にまとめて一括実行することもできます。以下のように、入力リダイレクトと出力リダイレクトを組み合わせるのが一般的です。

shell> mysql db_name < script.sql > output.tab

この例では、script.sql内のSQLステートメントが順番に実行され、その結果がoutput.tabファイルに出力されます。定期的なバッチ処理や大量データの投入などに便利な手法です。

履歴ファイルへの自動記録

Unix系OSでは、mysqlクライアントは対話モードで実行されたステートメントを自動的に履歴ファイルに記録します。これにより、過去に実行したコマンドを上下キーで呼び出したり、再利用したりすることができ、作業効率が大幅に向上します。

  1. MySQLクライアントのログ機能を徹底解説!履歴ファイルとsyslogの基本

    MySQLクライアントのロギングとはMySQLのmysqlクライアントは、実行されたステートメントに対してさまざまな種類のロギングを行うことができます。ロギングの動作は、対話形式で実行した場合と、それ以外の場合で異なります。ここでは、プラットフォームごとのロギングの挙動と、その仕組みについて詳しく解説します。UNIXでのロギングUNIX環境では、mysqlは実行したステートメントを履歴ファイルに書き込みます。デフォルトでは、このファイルはユーザーのホームディレクトリ内の「.mysql_history」という名前で保存されます。別のファイル名を指定したい場合は、環境変数「MYSQL_HISTFI

  2. MySQLクライアントの接続方法(TCP/IP・ソケットなど)を確認する方法

    MySQLの接続にどの接続方式が使われているかを調べたい場合、以下のコマンドを実行することで確認できます。netstat -ln | grep mysqlなお、Unix系OSでは、MySQLプログラムはホスト名「localhost」を特別な方法で扱います。そのため、一般的に期待される動作とは異なる挙動を示す点に注意が必要です。接続タイプの確認方法mysqlコマンドラインクライアント(CLI)内から現在の接続タイプを知りたい場合は、次のコマンドを使用します。mysql> \s実行結果の出力例は以下のとおりです。Connection: 127.0.0.1 via TCP/IP または Con