Oracle中的同义词(Synonym)是一种数据库对象,它为其他数据库对象(如表、视图、序列、存储过程等)提供了一个别名 。同义词在数据库管理和开发中有诸多用途,主要体现在以下方面:
1. 同义词的类型
- 公有同义词(Public Synonym):由数据库管理员创建,数据库中所有用户都可以使用。常用于为一些公共对象(如常用的基础表、通用的存储过程等)创建别名,方便所有用户访问,而无需指定对象所属的用户名。
- 私有同义词(Private Synonym):由普通用户创建,只能在创建该同义词的用户模式(Schema)内使用。私有同义词为特定用户对自己模式内或有权限访问的其他模式内的对象提供了更便捷的访问方式。
2.创建同义词
- 创建公有同义词:需要具有
CREATE PUBLIC SYNONYM系统权限,通常由管理员执行。语法如下:
CREATE PUBLIC SYNONYM synonym_name FOR object_name;
例如,为 SCOTT 用户下的 EMP 表创建一个公有同义词:
CREATE PUBLIC SYNONYM emp_syn FOR scott.emp;
这样,所有用户都可以通过 emp_syn 来访问 SCOTT.EMP 表,无需使用 SCOTT.EMP 这种带用户名的完整名称。
- 创建私有同义词:用户只要有对目标对象的访问权限,就可以创建私有同义词。语法如下:
CREATE SYNONYM synonym_name FOR object_name;
例如,USER1 用户对 SCOTT.DEPT 表有访问权限,创建私有同义词:
CREATE SYNONYM dept_syn FOR scott.dept;
此后,USER1 用户可以通过 dept_syn 访问 SCOTT.DEPT 表。
3.使用同义词
使用同义词时,就如同使用原始对象一样。例如,查询前面创建的 emp_syn 同义词对应的表数据:
SELECT * FROM emp_syn;
这与直接查询 SCOTT.EMP 表的效果是一样的,但使用同义词可以简化对象的引用,尤其是在对象名称较长或涉及跨用户模式访问时。
4. 修改同义词
Oracle中不能直接修改同义词指向的对象。如果需要改变同义词的指向,只能先删除原同义词,再重新创建指向新对象的同义词。
5. 删除同义词
- 删除公有同义词:需要
DROP PUBLIC SYNONYM系统权限,通常由管理员操作。语法如下:
DROP PUBLIC SYNONYM synonym_name;
- 删除私有同义词:用户可自行删除自己创建的私有同义词,语法为:
DROP SYNONYM synonym_name;
6.同义词的优势
- 简化对象访问:对于复杂的对象名称(特别是跨用户模式的对象),同义词提供了一个简短易记的别名,方便用户在SQL语句中引用对象,减少输入错误。
- 提高可维护性:当对象的位置(如所属用户模式改变)或名称发生变化时,只需修改同义词的定义,而无需修改所有引用该对象的SQL语句,降低了系统维护成本。
- 数据安全与封装:通过同义词,可将敏感对象以更友好的名称呈现给用户,同时限制用户直接访问原始对象的细节,增强数据的安全性和封装性。


&spm=1001.2101.3001.5002&articleId=149017151&d=1&t=3&u=d5a1bdf4cfdd48068ecb418907ee66cc)
3277

被折叠的 条评论
为什么被折叠?



