目录
定义
同义词可以是任意表、视图、序列等对象的别名
Use the CREATE SYNONYM statement to create a synonym, which is an alternative name for a table, view, sequence, operator, procedure, stored function, package, materialized view, Java class schema object, user-defined object type, or another synonym. A synonym places a dependency on its target object and becomes invalid if the target object is changed or dropped.
一般用可以创建私有同义词,仅供自己使用
sys可以给一般用户创建私有同义词,也可以建共有同义词(public)
创建同义词 CREATE SYNONYM
创建同义词需要授权SYNONYM
创建测试表
SQL> create table XXXXXXXXXXX as select * from dept; |
给scott用户授权
SQL> conn / as sysdba |
私有同义词
使用scott用户创建私有同义词
SQL> conn scott/tiger; |
可以象查看表一样查看同义词
SQL> select * from dept_syn; |
创建一个一般用户
SQL> conn / as sysdba |
一般用户如果没有所有者或sys授权的话,是不能访问同义词的
SQL> conn tiger/scott; |
给tiger用户授权
SQL> conn scott/tiger; SQL> conn tiger/scott; SQL> select * from scott.XXXXXXXXXXX; |
SQL> conn scott/tiger; |
可以看出来,只要被授权用户有同义词或者表二者之一任意的select权限,就可以使用同义词
查询同义词的信息user_synonyms
SQL> select SYNONYM_NAME,TABLE_OWNER,TABLE_NAME from user_synonyms; |
公有同义词
使用scott用户创建测试表
SQL> conn scott/tiger; SQL> create table YYYYYYYYYYY as select * from SALGRADE; |
使用sys用户创建公有同义词
SQL> conn / as sysdba |
既然是公有同义词,想必tiger用户一定可以访问了
SQL> conn tiger/scott;
|
。。。。。
虽然是同义词是公有的,但是依旧需要该表或同义词的select权限
SQL> grant select on salgrade_syn to tiger; |
并且公有同义词不可以加用户名,否则啥都不显示
SQL> select * from scott.salgrade_syn; |
查询该同义词信息dba_synonym
SQL> select OWNER,SYNONYM_NAME,TABLE_OWNER,TABLE_NAME from dba_synonyms where table_name='YYYYYYYYYYY'; |
删除同义词DROP SYNONYM
删除私有同义词,可以使用sys或者拥有的用户
SQL> conn / as sysdba |
删除公有同义词
SQL> conn / as sysdba |