MySQL:選択されているデータベースを特定しますか?


242

mysql_select_dbデータベースを取得するために呼び出した後、現在選択されているデータベースの名前を後で出力する方法はありますか?これは非常に基本的なようですが、php.netやstackoverflowで何も見つかりませんでした(すべての結果は「データベースが選択されていません」の場合です)。

回答:


354

mysql_query(またはmysqli_query、さらに優れたPDOを使用する)を次のように使用するだけです。

SELECT DATABASE() FROM DUAL;

補遺:

これFROM DUALに含まれるべきか否かについては多くの議論があります。技術レベルでは、これはOracleからの引き継ぎであり、安全に削除できます。傾向がある場合は、代わりに以下を使用できます。

SELECT DATABASE();

いえ、FROM DUAL実際に何もしないものの、有効なMySQL構文であることに注意してください。厳密な観点から見ると、JavaScriptで条件付きの単一行に中括弧を含めても何も起こりません、それでも有効な方法です。


9
DUALは、MySQLに引き継がれたOracleテーブルです。これは、実際のテーブルを必要としない操作のダミーテーブルです。en.wikipedia.org/wiki/DUAL_table
JanThomä11年

11
@DigitalPrecisionこれは、私がOracleで多くの作業を行ってきたという事実からのホールドオーバーです。Oracleでは何かからでない限り選択できません。そのため、セルが1つしかない「DUAL」と呼ばれる特別なテーブルがあります。省略できます。
cwallenpoole

1
おそらく、これを編集して、後世のために既存の回答を維持しながらSELECT DATABASE();、「実際の」回答として追加する必要があります。
ユーザー

@JanThomäは、DUALテーブルで任意のクエリを実行できることを意味しますか?
Pardeep Jain

1
@PardeepJainは私の専門分野の範囲外です。おそらくcwallenpooleがそれに答えることができます。
JanThomä2018

92
SELECT DATABASE();

ps @cwallenpooleの回答を自由に変更して、これがMySQLの質問であり、Oracleの質問ではなく、必要ないという事実を反映したくありませんでしたDUAL


5
古い習慣は大変なものです。2011
。– cwallenpoole '20

5
うん。2011
。– cwallenpoole

9
これはまた私です…まだ考えています。
cwallenpoole 2017

2
@cwallenpooleまだ考えてる?
Farhan.K

4
@cwallenpooleいかがですか?
Nordle

47

いつでもSTATUSコマンドを使用して、現在のデータベースと現在のユーザーを知ることができます

ここに画像の説明を入力してください


上記の出力には反映されていませんが、私のシステムでは、TCPポートも表示されます。これは、mysqld_multiを実行しているので便利です。また、どのインスタンスに話しているのかを思い出させたいのです。
ジェフ

9

http://www.php.net/manual/de/function.mysql-db-name.phpのコメントで、ericpp%bigfoot.comからこれを見つけました:

現在のデータベース名だけが必要な場合は、MySQLのSELECT DATABASE()コマンドを使用できます。

<?php
function mysql_current_db() {
    $r = mysql_query("SELECT DATABASE()") or die(mysql_error());
    return mysql_result($r,0);
}
?>

1
OPがPHP関数「mysql_select_db」を使用し、PHPを要求するためです。実際に質問を読みましたか?
JanThomä2015年

1
おかげで、ええ、私はもともとmysql_current_db、何かのようなメソッドがある場合に備えて、PHP固有の回答を求めていました。誰かがそれを編集して、タイトルとタグから「php」を削除しました
andrewtweber

3
@mysql_result(mysql_query("SELECT DATABASE();"),0)

データベースが選択されていない場合、または接続されていNULLない場合は、選択されたデータベースの名前が返されます。


2

少しトピックから外れています(PHPの代わりにCLIを使用)。

mysql --prompt='\d> '
export MYSQL_PS1='\d> '

または一度中に

prompt \d>\_
\R \d>\_

1

SELECT DATABASE() PHPMyAdminで働いた。


3
これは、多かれ少なかれ、既存の答えの繰り返しにすぎません。
2017

1
任意の有効な回答に対する有効なコメントにすることができます:)
Pardeep Jain

1

特定の単語でデータベースをフィルタリングする別の方法。

SHOW DATABASES WHERE `Database` LIKE '<yourDatabasePrefixHere>%'
or
SHOW DATABASES LIKE '<yourDatabasePrefixHere>%';

例:

SHOW DATABASES WHERE `Database` LIKE 'foobar%'
foobar_animal
foobar_humans_gender
foobar_objects
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.