同义词(Synonym)是数据库内对象的别名。数据库中的大部分数据库对象,如表、视图、物化视图、序列、函数、存储过程、包、同义词等等,均可以根据实际情况为他们定义同义词。
使用同义词可以在一定层度上降低应用开发者编写SQL的复杂度,用户可以不用关心一个Object的所属关系(例如table在哪个database下),直接使用同义词即可。同义词带来的好处并不仅仅是别名这么简单,例如研发同学写了一条SQL,其中涉及到生产系统中的table,如果使用同义词,在测试初期可以先将该同义词指向一个mock table,测试通过后再重新将该同义词指向生产系统中的表。这样既避免了对代码的更改,又较少了生产系统的影响。
格式
CREATE [OR REPLACE] [PUBLIC] SYNONYM
[DATABASE.]synonym_name
FOR [DATABASE.]object_name;
通过CREATE SYNONYM语法来创建同义词,当用户创建同义词时无需对同义词指向的对象具有权限,而是需要具有在指定Database下创建同义词的权限。如果指定PUBLIC关键词,该同义词不属于任何一个Database,因此该同义词不与其他Database共享Namespace,其属于PUBLIC的Namespace。