Skip to content

DB2 - 别名

Db2 中的别名是数据库对象(例如表、视图、序列或另一个别名)的公共或私有替代名称。它们主要用于提供位置透明性,并为应用程序创建稳定、简化的接口,使其不受底层数据库模式变化的影响。

区分别名和视图很重要:

  • 别名只是一个指针或昵称。
  • 视图是一个存储的查询,可以连接表、选择特定列并包含业务逻辑。

创建别名的语法很简单。

语法:

CREATE ALIAS <alias_name> FOR <object_name>;

实际场景:假设您的应用程序代码旨在与名为 APP.CUSTOMERS 的表一起工作。然而,DBA 团队将实际数据存储在一个版本化的表 DATA_V1.CUSTOMER_MASTER 中。别名可以弥合这一差距。

示例:创建一个指向实际表的别名 APP.CUSTOMERS。

db2 "CREATE ALIAS APP.CUSTOMERS FOR DATA_V1.CUSTOMER_MASTER"

现在,应用程序可以在 APP.CUSTOMERS 上执行所有操作,而无需知道真实表的名称或位置。

创建后,别名可以在任何 SQL 语句中像使用原始对象名称一样使用。

示例:应用程序使用简单的别名查询数据。

db2 "SELECT CUST_ID, NAME FROM APP.CUSTOMERS WHERE REGION = 'North'"

Db2 自动将 APP.CUSTOMERS 解析为 DATA_V1.CUSTOMER_MASTER 并针对底层表执行查询。

  • 应用程序抽象:主要用例。如果 DBA 团队随后将数据迁移到 DATA_V2.CUSTOMER_MASTER_ARCHIVE,他们只需删除并重新创建别名即可。无需更改应用程序代码。
  • 位置透明性:别名可以指向不同联邦数据库中的对象,向最终用户或应用程序隐藏远程数据访问的复杂性。
  • 简化名称:为具有长名称或复杂名称的表创建更短、更方便的名称,尤其是在交互式查询会话中。
  • 权限:请注意,权限始终是针对底层对象而非别名本身进行检查的。用户必须对 DATA_V1.CUSTOMER_MASTER 具有 SELECT 权限才能从 APP.CUSTOMERS 中选择。

要删除别名,请使用 DROP ALIAS 命令。这不会以任何方式影响底层对象。

语法:

DROP ALIAS <alias_name>;

示例:

db2 "DROP ALIAS APP.CUSTOMERS"