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은 Oracle로 인수 된 Oracle 테이블입니다. 실제 테이블이 필요하지 않은 작업의 더미 테이블입니다. en.wikipedia.org/wiki/DUAL_table
Jan Thomä

11
@DigitalPrecision Oracle에서 많은 작업을 수행했다는 사실에서 비롯된 것입니다. 오라클은하지 않는 한 당신이 선택하는 것을 허용하지 않습니다 에서 그렇게 거기에 하나의 셀을 갖고 "DUAL"라는 특수 테이블이 뭔가. 생략 할 수 있습니다.
cwallenpoole

1
아마도 후손에 대한 기존의 대답을 유지하면서 SELECT DATABASE();"실제적인"대답으로 추가하여 이것을 편집해야 할 것입니다.
사용자

@ JanThomä이므로 DUAL 테이블에서 쿼리를 수행 할 수 있습니까?
Pardeep Jain

1
내 전문 영역 밖에있는 @PardeepJain은 cwallenpoole이 그 대답을 할 수 있습니다.
Jan Thomä

92
SELECT DATABASE();

추신 : 나는 이것이 @cwallenpoole의 답변을 자유롭게 수정하고 싶지 않다는 것을 이것이 Oracle 질문이 아니라 MySQL 질문이라는 사실을 반영하기 위해 필요합니다 DUAL.


5
오래된 습관은 열심히 죽습니다. 나는 아직도 가끔 2011 년 이후로는 오라클 감동하지 않은 경우에도 "DUAL로부터"생각
cwallenpoole

5
네. 2011 년 이후로 오라클에 연락하지 않았지만 여전히
DROM

9
또 나야 .. 아직도 생각하고있어.
cwallenpoole

2
@cwallenpoole 아직도 생각하고 있습니까?
Farhan.K

4
@cwallenpoole 지금은 어떻습니까?
Nordle

47

항상 STATUS 명령을 사용하여 현재 데이터베이스 및 현재 사용자 를 알 수 있습니다

여기에 이미지 설명을 입력하십시오


위의 출력에 반영되지 않았지만 내 시스템에는 TCP 포트가 표시되어 mysqld_multi를 실행하고 있기 때문에 편리합니다. 내가 말하는 인스턴스를 상기시켜줍니다.
Jeff

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를 요청하기 때문에. 실제로 질문을 읽었습니까?
Jan Thomä

1
고마워, 예. 원래는 비슷한 방법이있는 경우 PHP 전용 답변을 요청했습니다 mysql_current_db. 제목과 태그에서 "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
이것은 기존 답변의 반복입니다.
Pang

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.