MySQL:确定选择哪个数据库?


242

调用mysql_select_db获取数据库后,有什么方法可以稍后输出当前所选数据库的名称?这似乎很基本,但是我在php.net或stackoverflow上找不到任何东西(所有结果都是针对“未选择数据库”)。

Answers:


354

只需使用mysql_query(或更好的mysqli_query,或最好使用PDO):

SELECT DATABASE() FROM DUAL;

附录:

关于是否FROM DUAL应包括在其中,有很多讨论。从技术上讲,它是Oracle的保留,可以安全地删除。如果您愿意,可以改用以下方法:

SELECT DATABASE();

就是说,可能需要注意的是,虽然FROM DUAL实际上什么也没,但它是有效的MySQL语法。从严格的角度来看,在JavaScript中以单行包含大括号也没有任何作用,但这仍然是一种有效的做法。


9
DUAL是一个Oracle表,已移交给MySQL。这是一个虚拟表,用于不需要实际表的操作。en.wikipedia.org/wiki/DUAL_table
JanThomä2011年

11
@DigitalPrecision这是我在Oracle上做了大量工作的事实的保留。Oracle不允许您进行选择,除非它来自某物,因此有一个称为“ DUAL”的特殊表,其中只有一个单元格。您可以忽略它。
cwallenpoole 2011年

1
可能应对此进行编辑,以保留现有答案以供后代使用,但应添加SELECT DATABASE();为“实际”答案。
用户

@JanThomä意味着我可以对DUAL表执行任何查询?
Pardeep Jain

1
@PardeepJain在我的专业领域之外,也许cwallenpoole可以回答。
JanThomä'18

92
SELECT DATABASE();

ps我不想随意修改@cwallenpoole的答案,以反映这是MySQL问题而不是Oracle问题并且不需要的事实DUAL


5
旧习难改。我仍然有时会想“FROM DUAL”即使我没有碰过甲骨文自2011年
cwallenpoole

5
是的 还在想着FROM DUAL即使我没有碰过甲骨文自2011年
cwallenpoole

9
这又是我……还在想。
cwallenpoole

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。你真的读过这个问题吗?
2015年

1
谢谢,是的,我最初要求提供特定于PHP的答案,以防出现类似之类的方法mysql_current_db。有人对其进行了编辑,以从标题和标签中删除“ php”
andrewtweber

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

如果没有选择数据库,或者没有连接,则返回NULL所选数据库的名称。


2

稍微偏离主题(使用CLI而不是PHP),但仍然值得了解:您可以使用以下任意一种方式设置显示默认数据库的提示

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

或一次

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


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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.