同义词概述

同义词是一个模式对象的别名。例如,您可以为一个表或视图、 序列、 PL/SQL 程序单元、 用户定义的对象类型、或另一个同义词等创建同义词。因为同义词只是一个别名,因此除了要在数据字典存储其定义之外,不需要其它存储。

同义词可以为数据库用户简化 SQL 语句。同义词也可以用于隐藏底层模式对象的标识和位置如果必须重命名或移动底层对象,仅需要重新定义同义词。基于同义词的应用程序,可以无需修改而继续工作。

您可以创建私有同义词和公共同义词。私有同义词与其所有者在同一个模式中,只有其所有者对其可用性具有控制权公共同义词由名为PUBLIC的用户组所有,并且能被每一个数据库用户访问

在示例 4-9 中,数据库管理员为 hr.employees 表创建了一个叫做people的公共同义词。然后,用户连接到 oe 模式,并计算通过同义词引用的表中的行的数目。

SQL> CREATE PUBLIC SYNONYM people FOR hr.employees;
Synonym created.
SQL> CONNECT oe
Enter password: password
Connected.
SQL> SELECT COUNT(*) FROM people;
COUNT(*)
----------
107

请尽量少用公共同义词,因为它们使数据库整合更困难。如 4-9 例中所示,如果另一个管理员尝试创建people公共同义词,则会创建失败,因为在一个数据库中只能存在一个叫做people的公共同义词。过度使用公共同义词会导致应用程序之间的命名空间冲突

SQL> CREATE PUBLIC SYNONYM people FOR oe.customers;
CREATE PUBLIC SYNONYM people FOR oe.customers
                      *
ERROR at line 1:
ORA-00955: name is already used by an existing object

SQL> select owner, synonym_name, table_owner, table_name from dba_synonyms where synonym_name = 'PEOPLE';

OWNER                  SYNONYM_NAME
------------------------------ ------------------------------
TABLE_OWNER            TABLE_NAME
------------------------------ ------------------------------
PUBLIC                 PEOPLE
HR                 EMPLOYEES
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值