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에서 실행할 쿼리입니다. 코드 블록의 SQL 문은 원문 그대로 유지됩니다. 셸 명령 자체는 서버에 연결하거나 데이터베이스 이름을 반환하지 않습니다. 한정되지 않은 테이블 이름에 의존하는 작업을 실행하기 전에 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;을 실행한 다음 SELECT DATABASE();를 다시 실행해 선택 여부를 확인하세요. USE는 세션의 기본 데이터베이스를 설정하며, 해당 데이터베이스의 객체에 접근할 때 MySQL이 권한을 확인합니다.

데이터베이스를 선택한 상태로 연결하거나 필요에 따라 데이터베이스 이름으로 테이블을 한정할 수도 있습니다. 기본 데이터베이스를 선택하면 테이블 이름을 한정하지 않아도 되어 쿼리를 짧게 작성할 수 있습니다. 선택된 데이터베이스 없이 계속 작업하면 기본 스키마가 필요한 문이 실패할 수 있지만, SELECT DATABASE();처럼 테이블에 의존하지 않는 식으로 세션을 확인할 수 있습니다.