不愿长大,好多人如此,其实这是一种逃避责任没有担当的表象。
同义词
从字面上理解就是别名的意思,和视图的功能类似,就是一张映射关系。
私有同义词:一般是普通用户自己建立的同义词,创建者需要create synonym权限
grant create synonym to scott;
create synonym abc for emp;
公有同义词:一般是由DBA创建,所有用户可以使用,创建者需要create public synonym权限
create public synonym to scott;
create public synonym xyz for emp;
drop public synonym xyz;
1.简单同义词实现
在sysdba中先解锁HR,等会儿要用:
1.1 私有同义词
先给scott分配创建私有同义词的权限:
创建私有同义词
使用同义词sym_emp:
发生上述错误(同义词失效)的原因是emp表根本不存在,因为我还在sys(dba)下,而不是sott下,sys下并没有emp这张表。我刚才在sys下创建sym_emp这个同义词并没有报错,可见在创建同义词的时候oracle并不会去检查表是否存在。。。
切换到scott下重新建同义词,再试一下同义词使用效果:
可见和直接查询emp的结果是一样的
1.2 公有同义词
切换到sysdba,给scott分配创建公有同义词的权限:
再回到scott下创建公有同义词:
分配select权限给hr:
到hr下使用刚才创建的同义词: