同义词是方案对象的别名,它不占储存的空间,目的是在Oracle中为表或者视图、序列、PL/SQL程序单元、用户自定义对象或其他的同义词创建友好的名称。
一、同义词的作用
同义词的主要作用是简化对目标对象的访问,或者是因为某些私密的原因必须要隐藏Oracle对象的一些命名。同义词也是一种数据方案的对象,因此创建的同义词会存储到数据字典中,但是同义词仅仅是目标对象的一个别名,因此实际上本身并没有太多的意义。在Oracle中,多数的方案对象比如表、试图、同义词、序列、存储过程、包等都可以创建同义词。
通过同义词的这一层隔离,当删除或重命名一个底层的对象是,只需要重新定义同义词,所有使用同义词的其他对象都不需要进行更改。
二、创建和使用同义词
同义词分为俩种
1、私有同义词,与要用来创建同义词的Oracle对象必须位于同一个方案中,只有其所有者对其可用性具有控制权。
2、公共同义词,这种类型的同义词由名为PUBLIC的用户组所有,可以被数据库的所以用户访问。
同义词创建语法
CREATE [ OR REPLACE ] [ PUBLIC ] SYNONYM [ schema. ] synonym
FOR [ schema. ] object [ $ dblink ];
OR REPLACE,如果一个同义词已经存在,将会删除并重新创建,使用这个子句可以更改同义词的定义而不用先行移除同义词。不能对已经具有依赖的表或具有依赖关系的用户自定义队形类型使用OR REPLACE子句。
PUBLIC,使用次关键子表示创建的公共同义词,公共同义词是对所有的用户可访问,但是使用该同义词的用户必须也必须具有对于同义词底层对象的权限。如果省略掉该子句,表示创建的是一个私有同义词,私有同义词在方案中必须具有唯一命名。
[schema. ] synonym 指定同义词所在的方案和同义词的名称,如果不指定方案名称,表示将在当前登录的用户所在的方案下创建同义词。
FOR 子句,指定要为那个对象创建同义词,可以使表,对象,试图或对象试图、序列、存储过程,函数或包、物化视图、Java类方案对象、用户自定义对象类型或者其他的同义词。其中schema用于指定要创建同义词的对象所在方的案,dblink指定链接到远程数据库服务器的数据库链接。
创建私有同义词,用户必须具有CREATE SYNONYM的权限,
在其他方案下创建私有同义词,用户必须具有CREATE ANY SYNONYM的权限,
创建公共同义词,用户必须具有CREATE PUBLIC SYNONYM。
创建公共同义词
访问同义词
三、删除同义词
DROP [ PUBLIC ] SYNONYM [ schema. ] synonym [ FORCE ] ;
四、查看同义词
可以通过all_synonyms,user_synonyms或dba_synonyms数据字典试图查询到同义词的信息。
DESC 同义词;