1.9 同义词
同义词是一种数据库对象,它是为一个数据库对象定义的别名,使用同义词的主要目的是为了简化SQL语句的书写。
1.9.1 同义词的概念和类型
利用同义词可以为用户的一个对象,或者其他用户的一个对象定义别名,从而简化命令或程序的书写,在命令或程序中可以直接使用同义词代替原来的对象。
可以为表、视图、存储程序、序列等对象建立同义词,也可以为一个同义词再建立同义词,甚至可以为一个不存在的对象建立同义词,系统仅仅在使用同义词时才验证它所代表的对象是否存在。
同义词本身并不包含原对象中的数据或代码,它的作用仅仅相当于一个指针。在使用同义词时,系统根据同义词的定义查找它所指向的对象,将对同义词的访问转化为对原对象的访问。同义词的作用仅仅是为了方便用户操作数据库对象。
Oracle支持两种类型的同义词,即私有同义词和公共同义词。私有同义词由普通用户创建,在默认情况下只能由用户本人使用。公有同义词一般由DBA创建,可以由所有用户使用。
公共同义词的意义在于它代表了一个大家都可以访问的对象。例如,程序包DBMS_OUTPUT是属于特权用户SYS的,但是任何一个用户都可以直接使用它,而不用指定它所在的模式。普通用户能够使用的名称DBMS_OUTPUT显然是一个公共同义词。
用户可以随意为其他用户的一个对象创建一个同义词,但这并不意味着这个这个用户就具有了访问其他用户的对象的权限。如果要通过同义词访问其他用户的对象,还需要具有相应的权限。只有在使用同义词时,系统才验证用户是否有相应的访问权限。