概念:同义词是现有对象的一个别名。
作用:
- 简化SQL语句
- 隐藏对象的名称和所有者
- 提供对对象的公共访问
公有同义词
可被所有的数据库用户访问。
私有同义词
只能在其模式内访问,且不能与当前模式的对象同名。
1.创建同义词
-- 建立私有同义词
create synonym syn_emp for scott.emp;
-- 建立共有同义词
create synonym pub_syn_emp for scott.emp;
2.删除同义词
-- 删除私有同义词
drop synonym syn_emp;
-- 删除公有同义词
drop public synonym pub_syn_emp;
3.授权用户scott创建同义词
-- 授权创建私有同义词
grant create synonym to scott;
-- 授权创建公有同义词
grant create public synonym to scott;
新建用户是否能访问已经创建好的同义词呢?
新创建的用户,如果没有访问基表的权限,则无法访问同义词。例如:新建用户test,刚创建好的用户是无法访问scott的dept表的,此时也无法访问dept表的同义词,如果需要访问同义词,则先为表dept授权即可访问。
4.特殊的TAB表
select owner,object_name.object_type from all_objects a where a.object_name='TAB';
select * from all_synonyms u where u.synonym_name='TAB'
任何一个用户都有tab这个表,任何用户都可以通过tab来访问到本用户下的所有表,该表是sys.tab的同义词