百度百科解释:
同义词(synonym /sine nim/)是指向其它数据库表的数据库指针。
同义词有两种类型:私有(private)和公共(public)。
私有的同义词是在指定的模式中创建并且只有创建者使用的模式访问。
公共同义词是由public 指定的模式访问,所有数据库模式(用户)都可以访问它。
对于同一服务器上的不同数据库,我们可以使用Synonym,将其他数据库中的表或view或sprocs及udf在本数据库中映射别名。这样,就可以不用更改连接字符串,而在当前对话数据库的情况下,获取其他数据库的数据,并对它进行,查询,更新,删除和插入工作。
----------------------------------------------------------------
oracle里synonym的作用是什么?
CREATE [PUBLIC]SYNONYM synonym For schema.object
隐藏对象的名称和所有者:
select count(*) from hr.employees;
create synonym emp for hr.employees; --默认属于donny用户,是donny的私有对象private
select count(*) from emp;
为分布式数据库的远程对象提供了位置透明性:
访问其他数据库时,要首先建立数据库连结:
CREATE DATABASE LINK test_link CONNECT TO username IDENTIFIED BY pass USING 'orabase';
Select count(*) from hr.employees@test_link;
create synonym link_emp for hr.employees@test_link;
select count(*) from link_emp;
提供对象的公共访问:
create public synonym pub_emp for hr.employees;
pub_emp属于public用户,数据库所有用户都可以访问。
同义词类型
–私有 emp 实际上donny.emp
–公用 pub_emp 所有用户都可以直接访问
当公有对象和私有对象同名时(因为数据不同的用户,所以可以),以私有对象优先。(类似于局部变量)
desc dba_synonyms/ user_synonyms/ all_synonyms 数据字典,复数
tab公有同义词
建立私有的tab表,查看效果。
删除同义词:
drop synonym donny.emp;
drop public synonym pub_emp;