oracle数据库对象-同义词

同义词(synonym)是数据库对象,相当于给表起一个别名。

通过创建同义词可以简化对象的访问,使用同义词可以:
1)更方便的引用其他用户拥有的表
2)缩短冗长的对象名

例子:

SQL> select object_name, object_type, owner from dba_objects where object_name='DUAL';

OBJECT_NAME   OBJECT_TYPE   OWNER
------------- ------------- -------------
DUAL          TABLE         SYS
DUAL          SYNONYM       PUBLIC


从例子中看到SYS用户有DUAL表,为了让其它用户能引用DUAL表,建立了一个公共的同义词。

1、创建同义词

CREATE [PUBLIC] SYNONYM synonym_name FOR object_name;

2、删除同义词

DROP SYNONYM synonym_name;

3、查看所有同义词

select * from dba_synonyms;

4、权限
CREATE SYNONYM权限:创建自己私有同义词
CREATE ANY SYNONYM权限:创建其它用户的私有同义词
CREATE PUBLIC SYNONYM权限:创建自己公有同义词

5、授权其它用户访问公共同义词
公共同义词并不是所有的用户都可以访问它,必须被授权后才能访问。私有同义词只有自己用户能访问。

在hr用户下建立公共同义词:

create public synonym hr_test for test_t;

hr用户下执行授权liu用户:

grant select hr_test to liu;

同样如果授予insert/update/delete权限,也可以对同义词做增删改操作。

参考资料:
http://blog.csdn.net/indexman/article/details/37507197