1、同义词用途
① 同义词是现有对象的一个别名
② 简化SQL语句
③ 隐藏对象的名称和所有者
④ 提供对对象的公共访问
2、同义词分类
模式:一个用户即一个模式
1、私有同义词
只能在其模式内访问,且不能与当前模式的对象同名
①当前模式下创建私有同义词:用户必须拥有CREATE SYNONYM系统权限
②其他用户模式下创建私有同义词:用户必须拥有CREATE ANY SYNONYM系统权限
语法
CREATE [OR REPLACE] SYNONYM [schema.]synonym_name
FOR [schema.]object_name;
OR REPLACE: 表示在同义词存在的情况下替换该同义词
synonym_name:表示要创建的同义词的名称
object_name: 指定要为之创建同义词的对象的名称
2、公有同义词
可被所有的数据库用户访问
语法
CREATE [OR REPLACE] PUBLIC SYNONYM [schema.]synonym_name
FOR [schema.]object_name;
示例
create public synonym public_emp1 for scott.emp;
3、查询同义词
select * from dba_synonyms d where d.synonym_name like '%PUBLIC_EMP1%';
注意:输入的同义词必须是大写。
4、删除同义词
语法
DROP [PUBLIC] SYNONYM [schema.]synonym_name;
1、删除私有同义词
drop synonym public_emp1
2、删除公有同义词
drop public synonym public_emp1
5、如何让新用户查询公有同义词
第一步:创建公有同义词
--创建一个公有同义词
create public synonym fengjunhong for scott.emp;
第二步:创建测试用户
--创建测试用户
create user bdqn1
identified by bdqn1
default tablespace tp_orders
temporary tablespace temp;
--只给用户登录的权限(connect)
grant connect to bdqn1
第三步:给测试用户赋权
方式一:给用户单独赋权
--给刚才创建的用户赋予查询scott.emp的权限
grant select on scott.emp to bdqn1
方式二:给所有用户赋权
--直接使用public,给所有能够登录的用户赋权
grant select on scott.emp to public