USE SCHEMA

指定会话的活动/当前架构:

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

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

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

另请参阅:

CREATE SCHEMAALTER SCHEMADROP SCHEMASHOW SCHEMAS

语法

USE [ SCHEMA ] [<db_name>.]<name>
Copy

参数

[db_name.]name

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

如果架构名称是完全限定的(格式为 db_name.schema_name),则 SCHEMA 关键字是可选的。

如果在用户会话指定了数据库且包含 SCHEMA 关键字,则数据库名称 (db_name) 为可选。

示例

使用用户会话中指定的数据库 myschema 架构:

USE SCHEMA myschema;
Copy

使用 mydb 数据库中的 myschema 架构:

USE mydb.myschema;
Copy

以下示例展示了在切换架构的 USE 命令后,使用非限定名称引用对象的命令如何产生不同的输出结果。不同架构中的表、表数据、视图、用户定义的函数等可能各不相同。

当在 ​​``schema_one``​​ 的上下文中执行​​​ SHOW TABLES 命令时,输出的结果会反映该架构中的对象。

USE SCHEMA schema_one;
SHOW TABLES ->> SELECT "created_on", "name" FROM $1 ORDER BY "created_on";
Copy
+-------------------------------+-----------+
| created_on                    | name      |
|-------------------------------+-----------|
| 2025-07-13 23:48:49.129 -0700 | TABLE_ABC |
| 2025-07-13 23:49:50.329 -0700 | TABLE_DEF |
+-------------------------------+-----------+

执行 ​​USE​ 命令切换到 ​​``schema_two``​​ 架构后,​​SHOW TABLES​​ 命令输出的对象集合会发生变化:

USE SCHEMA schema_two;
SHOW TABLES ->> SELECT "created_on", "name" FROM $1 ORDER BY "created_on";
Copy
+-------------------------------+-----------+
| created_on                    | name      |
|-------------------------------+-----------|
| 2025-07-13 23:52:06.144 -0700 | TABLE_IJK |
| 2025-07-13 23:53:29.851 -0700 | TABLE_XYZ |
+-------------------------------+-----------+

以下示例从一种架构更改为另一种架构,然后变回原始架构。原始架构的名称存储在变量中。请运行以下命令:

SELECT CURRENT_SCHEMA();
SET original_schema = (SELECT CURRENT_SCHEMA());
USE SCHEMA schema_two;
SELECT CURRENT_SCHEMA();
USE SCHEMA IDENTIFIER($original_schema);
SELECT CURRENT_SCHEMA();
Copy

这些命令的输出显示了当前架构值的变化:

>SELECT CURRENT_SCHEMA();
+------------+
| SCHEMA_ONE |
+------------+

>SET original_schema = (SELECT CURRENT_SCHEMA());

>USE SCHEMA schema_two;
>SELECT CURRENT_SCHEMA();
+------------+
| SCHEMA_TWO |
+------------+

>USE SCHEMA IDENTIFIER($original_schema);
>SELECT CURRENT_SCHEMA();
+------------+
| SCHEMA_ONE |
+------------+
语言: 中文