USE DATABASE¶
指定会话的指定活动/当前数据库:
如果在会话中没有指定数据库,则在会话中执行的查询和其他 SQL 语句引用的任何对象都必须完全限定于对象的数据库和架构,也称为 *命名空间*(格式为
db_name.schema_name.object_name
)。有关完全限定对象名称的更多信息,请参阅 对象名称解析。如果在会话中指定了数据库但没有指定架构,则在会话中执行的查询和其他 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 |
+--------------+