同义词(synonym)是为模式对象起的别名,可以为表,视图,序列,过称,函数,和包等数据库模式对象创建同义词。同义词有两种:公有同义词和私有同义词。公有同义词对所有用户都可以用。创建公有同义词必须拥有系统权限CREATE PUBLIE SYNONYM;创建私有同义词需要create synonym。私有同义词只对拥有同义词的账号有效,但私有同义词也可以通过授权,使其对其他用户有效。同义词通过给本地或远程对象分配一个通用或简单的名称,隐藏了对象的拥有者和对象的真实名称,也简化了SQL语句。
如果同义词名称重名,识别顺序怎样呢,如果存在对象名,则优先识别,起床识别私有同义词,最后识别公有同义词。
同义词的创建和使用
create [public] synonym 同义词名
for [模式名.]对象名[@数据库链名];
其中:public代表公有同义词,若省略则创建私有同义词。模式名代表拥有对象的模式账号名,不加就代表当前用户。
删除同义词的语法
drop synonym 同义词名;
删除同义词的认必须是同义词的拥有者或有drop any synonym权限的人,删除同义词不会删除对应的对象。
同义词的查看
通过查询数据字典USER_OBJECTS和USER_SYNONYMS,可以查看同义词信息。
系统定义的同义词对象
同义词 | 对象名称 | 作用 |
---|---|---|
DICT | DICTIONARY | 数据字典 |
cat | user_catalog | 用户拥有的表,视图,同义词和序列 |
clu | user_clusters | 用户拥有的聚簇 |
ind | user_indexes | 用户拥有的索引 |
obj | user_objects | 用户拥有的对象 |
seq | user_sequences | 用户拥有的序列 |
syn | user_synonym | 用户拥有的同义词 |
cols | user_tab_columns | 用户拥有的表,视图和聚簇的列 |
tabs | user_tables | 用户拥有的表 |