HOWTO · MySQL

MySQL の現在のデータベースを表示する

このチュートリアルでは、MySQL で現在のデータベースを表示する方法を示します。

このページの内容

デフォルトスキーマに依存するクエリを実行する前に、MySQL セッションでどのデータベースが選択されているか確認しましょう。SQL で直接確認するには SELECT DATABASE(); を実行します。選択中のデータベース名が返され、セッションで何も選択されていない場合は NULL が返されます。MySQL Workbench などの SQL エディターで実行できるほか、対話型の mysql コマンドラインクライアントでセッションの状態を確認することもできます。

SELECT DATABASE() で現在のデータベースを表示する

SQL エディターまたは MySQL のプロンプトで SELECT DATABASE(); を実行します。この関数は、その接続でデフォルトとして選択されているデータベースを返します。値はセッションによって決まるため、接続によって異なる場合があります。別々の接続で同じデータベースが選択されていることもあります。これはスカラー値を返すクエリで、テーブルの行は読み取りません。MySQL では FROM DUAL を省略できるため、SELECT DATABASE() FROM DUAL; でも同じ種類の値が返されます。

シェルからクエリをコピーする場合は、次の自己完結したコマンドで SQL 文を表示できます。

このセクションのコードと表示されるラベルや出力は英語のままです。

printf '%s\n' 'SELECT DATABASE();'
SELECT DATABASE();

表示された行が MySQL で実行するクエリです。シェルコマンド自体はサーバーに接続せず、データベース名も返しません。修飾されていないテーブル名を使う処理を始める前に、MySQL が返した値を確認し、接続先のコンテキストを把握してください。

MySQL Workbench でクエリを実行する

Workbench で MySQL サーバーに接続し、その接続用の SQL エディタータブを開いて SELECT DATABASE(); を実行します。結果グリッドに表示された値を確認してください。スキーマナビゲーターに表示されているデータベースは参照できますが、そこに表示されているだけでは、現在のセッションで選択されているとは限りません。選択中かどうかは、クエリの結果で直接確認できます。

このクエリの結果は、実行した接続に対応します。エディタータブや接続を複数開いている場合は、アプリケーション用のクエリを実行する接続と同じ接続で確認してください。必要であれば Workbench で SELECT DATABASE() FROM DUAL; も実行できますが、MySQL では DUAL は不要です。

MySQL コマンドラインクライアントで現在のデータベースを確認する

対話型の mysql クライアントのプロンプトで status を入力し、接続情報の概要にある Current database フィールドを確認します。status は SQL 文ではなくクライアントコマンドなので、末尾に SQL のセミコロンを付けないでください。概要にはホスト、ユーザー、文字セットなどの接続固有の情報が含まれる場合もありますが、その値は環境によって異なります。SQL の結果としてデータベース名を確認するには、プロンプトで SELECT DATABASE(); を実行します。

この方法で確認できるのは、現在のクライアント接続です。再接続したり、別のクライアントセッションを開いたりした場合は、そのセッションでも確認してください。選択されているデータベースが異なる可能性があります。

データベースが選択されていないセッションに対処する

SELECT DATABASE(); の結果が NULL なら、そのセッションではデフォルトデータベースが選択されていません。これはサーバーにデータベースが存在しないという意味ではありません。SHOW DATABASES; はアカウントから参照できるデータベースを一覧表示しますが、データベースを選択する操作ではありません。使いたいデータベースを USE database_name; で選択します。database_name は実際のデータベース名に置き換えてください。その後、SELECT DATABASE(); をもう一度実行して選択を確認します。USE はセッションのデフォルトデータベースを設定します。そのデータベース内のオブジェクトにアクセスするとき、MySQL は権限を確認します。

データベースを選択した状態で接続する方法や、必要に応じてテーブル名にデータベース名を付ける方法もあります。デフォルトを選択しておくと、テーブル名だけを使った短いクエリを書けます。データベースを選択しないまま作業を続けると、デフォルトスキーマを必要とする文が失敗することがあります。一方、SELECT DATABASE(); のようにテーブルに依存しない式を使えば、セッションの状態を確認できます。