同义词是现有对象的一个别名,是为了简化SQL语句,亦或者是隐藏对象的名称和所有者,提供对象的公共访问等等。
1、同义词的类型 :
分为两大类 :私有同义词 synonym 只能在其模式内访问,不能与模式内对象同名。
公有同义词 public synonym 可被所有数据库用户访问。
2、同义词的建立
first step : 同义词的创建需要有创建同义词的权利。
system 赋予你: grant create (public) synonym to 用户名;
second:create [ or replace ] synonym 同义词名 for 同义词指代内容;
create [ or replace ] public synonym 同义词名 for 同义词指代内容;
3、删除同义词
删除同义词也要有删除同义词的权限 drop (public)synonym;
删除私有同义词:drop synonym 同义词名;
删除公有同义词:drop public synonym 同义词名;
4、举个栗子
create or replace public synonym syn_emp for scott.emp;
create users test1 identified by test1 ;
grant connect session to test1;
select * from syn_emp; -- syn_emp 是预先创建好的公有同义词。
报错,原因如下
在上述例子中,test1用户不具有访问scott用户的emp表的权限,故其也同样不具有以scott用户的emp表作为基表的公有同义词。 如果我们赋予test1访问该表的权限,那么我们也就具有了访问指代该表同义词的权限。
常见的公有同义词 著名的 select * from tab;