USE DATABASE
USE DATABASE
세션의 활성/현재 데이터베이스를 지정하는 명령이에요.
출처: 문서
본문
세션의 활성/현재 데이터베이스를 지정해요:
- 세션에 데이터베이스가 지정되지 않으면, 세션에서 실행되는 쿼리와 다른 SQL 문에서 참조되는 모든 객체는 객체의 데이터베이스와 스키마(네임스페이스라고도 함)로 정규화되어야 해요(db_name.schema_name.object_name 형태). 정규화된 객체 이름에 대한 자세한 내용은 객체 이름 해석(Object name resolution)을 참고해요.
- 세션에 데이터베이스가 지정되었지만 스키마가 지정되지 않으면, 세션에서 실행되는 쿼리와 다른 SQL 문에서 참조되는 모든 객체는 객체의 스키마로 정규화되어야 해요(schema_name.object_name 형태).
- 사용자 세션에 데이터베이스와 스키마가 모두 지정되면, SQL 문과 쿼리에서 정규화되지 않은 객체 이름이 허용돼요.
구문
USE [ DATABASE ] <name>
매개변수
name
세션에서 사용할 데이터베이스의 식별자를 지정해요. 식별자에 공백이나 특수 문자가 포함되면 전체 문자열을 큰따옴표로 묶어야 해요. 큰따옴표로 묶은 식별자는 대소문자를 구분해요.
사용 메모
- DATABASE 키워드는 지정하지 않아도 돼요.
- USE DATABASE는 PUBLIC 스키마가 존재하지 않는 경우(예: 드롭된 경우)를 제외하고 자동으로 PUBLIC을 현재 스키마로 지정해요. 세션에 다른 스키마를 지정하려면 USE SCHEMA 명령을 사용해요.
예제
다음 예제는 이후 SQL 명령에 사용할 데이터베이스를 지정해요:
USE DATABASE mydb;
다음 예제는 정규화되지 않은 이름으로 객체를 참조하는 명령이 USE 명령으로 데이터베이스를 전환한 후 다른 출력을 만들어 내는 방법을 보여 줘요. 스키마, 테이블, 테이블 데이터 등은 데이터베이스마다 다를 수 있어요.
database_one 컨텍스트에서 SHOW SCHEMAS 명령을 실행하면 그 데이터베이스의 객체를 반영한 출력이 생성돼요:
USE DATABASE database_one;
SHOW SCHEMAS ->> SELECT "created_on", "name" FROM $1 ORDER BY "created_on";
+-------------------------------+--------------------+
| 2025-07-11 14:34:24.386 -0700 | PUBLIC |
| 2025-07-11 14:42:23.509 -0700 | TEST_SCHEMA |
| 2025-07-11 14:42:29.158 -0700 | STAGING_SCHEMA |
| 2025-07-11 14:45:43.124 -0700 | INFORMATION_SCHEMA |
+-------------------------------+--------------------+
USE 명령이 database_two 데이터베이스로 전환한 후 SHOW SCHEMAS 명령은 다른 객체 집합을 반영한 출력을 생성해요:
USE DATABASE database_two;
SHOW SCHEMAS ->> SELECT "created_on", "name" FROM $1 ORDER BY "created_on";
+-------------------------------+--------------------+
| 2025-07-11 14:34:31.496 -0700 | PUBLIC |
| 2025-07-11 14:43:04.394 -0700 | PRODUCTION_SCHEMA |
| 2025-07-11 14:44:23.006 -0700 | DASHBOARDS_SCHEMA |
| 2025-07-11 14:45:54.372 -0700 | INFORMATION_SCHEMA |
+-------------------------------+--------------------+
다음 예제는 한 데이터베이스에서 다른 데이터베이스로 변경한 후 원래 데이터베이스로 돌아가요. 원래 데이터베이스의 이름은 변수에 저장돼요. 다음 명령들을 실행해요:
SELECT CURRENT_DATABASE();
SET original_database = (SELECT CURRENT_DATABASE());
USE DATABASE database_two;
SELECT CURRENT_DATABASE();
USE DATABASE IDENTIFIER($original_database);
SELECT CURRENT_DATABASE();
이 명령들에 대한 출력은 현재 데이터베이스 값이 어떻게 변하는지 보여 줘요:
>SELECT CURRENT_DATABASE();
+--------------+
| DATABASE_ONE |
+--------------+
>SET original_database = (SELECT CURRENT_DATABASE());
>USE DATABASE database_two;
>SELECT CURRENT_DATABASE();
+--------------+
| DATABASE_TWO |
+--------------+
>USE DATABASE IDENTIFIER($original_database);
>SELECT CURRENT_DATABASE();
+--------------+
| DATABASE_ONE |
+--------------+
더 알아보기 (Learn more)
- See also: CREATE DATABASE, ALTER DATABASE, DROP DATABASE, SHOW DATABASES