USE DATABASE

指定会话的指定活动/当前数据库:

  • 如果在会话中没有指定数据库,则在会话中执行的查询和其他 SQL 语句引用的任何对象都必须完全限定于对象的数据库和架构,也称为 *命名空间*(格式为 db_name.schema_name.object_name)。有关完全限定对象名称的更多信息,请参阅 对象名称解析

  • 如果在会话中指定了数据库但没有指定架构,则在会话中执行的查询和其他 SQL 语句引用的任何对象都必须限定于对象的架构(格式为 schema_name.object_name)。

  • 如果为用户会话指定了数据库和架构,则允许在 SQL 语句和查询中使用不合格的对象名称。

另请参阅:

CREATE DATABASEALTER DATABASEDROP DATABASESHOW DATABASES

语法

USE [ DATABASE ] <name>
Copy

参数

name

指定用于会话的数据库的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

使用说明

  • 无需指定 DATABASE 关键字。

  • USE DATABASE 自动将 PUBLIC 指定为当前架构,除非 PUBLIC 架构不存在(例如,该架构已删除)。要为会话指定不同的架构,请使用 USE SCHEMA 命令。

示例

以下示例指定了用于后续 SQL 命令的数据库:

USE DATABASE mydb;
Copy

以下示例展示了在切换数据库的 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 |
+-------------------------------+--------------------+
Copy

执行 ​​USE​ 命令切换到 ​​``database_two``​​ 数据库后,​​SHOW SCHEMAS 命令输出的对象集合会发生变化:

USE DATABASE database_two;
SHOW SCHEMAS ->> SELECT "created_on", "name" FROM $1 ORDER BY "created_on";
Copy
+-------------------------------+--------------------+
| 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();
Copy

这些命令的输出显示了当前数据库值是如何变化的:

>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 |
+--------------+
语言: 中文