# 同义词(Synonym)是什么
可以把它理解为视图,都是对表的映射, 同义词不占用数据存储空间。
对于不同Schema下的表,可以映射为一个同义词。易于引用其他用户所拥有的表。还可以缩短冗长的表名和对象名。
<br><br>
# 同义词的分类
1. 公有同义词 Public Synonym
数据库中所有的用户都可以使用公用的同义词,公用的同义词往往用来表示一些比较常用的数据对象。

2. 私有同义词 Synonym
由创建它的用户所有。同义词的创建者可以通过授权控制其他用户是否有权访问属于自己对象的权限来使用私有同义词。
<br><br>

# 私有同义词

## 创建私有同义词
CREATE SYNONYM 同义词名 FOR 表名;
“`
CREATE SYNONYM HR_EMP FOR hr.employees;
SELECT * FROM hr_emp;
“`

## 给与用户创建同义词的权限
GRANT CREATE SYNONYM TO 用户名

“`
SQL> show user;
USER is “SYS”
SQL> GRANT CREATE SYNONYM TO scott;
“`

给与其他用户访问同义词对象的权限
GRANT SELECT, UPDATE ON 同义词对象名 TO 用户名
“`
SCOTT用户下:
GRANT SELECT,UPDATE ON hr_emp2 TO hr;

HR用户下:
SELECT * FROM scott.hr_emp2;
“`

## 删除同义词
DROP SYNONYM 同义词名;
“`
DROP SYNONYM hr_emp2;
Output: Synonym HR_EMP2 dropped.
“`
<br><br>

# 公有同义词

## 创建公有同义词
CREATE PUBLIC SYNONYM 同义词名 FOR 表名;

用户需要有CREATE PUBLIC SYNONYM的权限才能创建公有同义词。

“`
sys用户:
GRANT CREATE PUBLIC SYNONYM TO HR;

hr用户:
CREATE PUBLIC SYNONYM HR_EMP FOR employees;
“`

## 给予用户对于公有同义词对象的权限
GRANT 对象权限名 ON 公有同义词名 TO 用户;
实际上等于给予用户对于同义词指向对象的SELECT权限。
“`
hr用户:
GRANT SELECT ON hr_emp TO LEO;

Leo用户:
SQL> SET LINESIZE 200
SQL> SET PAGESIZE 200
SQL> COL GRANTEE FOR a20;
SQL> COL OWNER FOR a20;
SQL> COL TABLE_NAME FOR a20;
SQL> COL PRIVILEGE FOR a20;
SQL> select grantee, owner, table_name, privilege
2 FROM user_tab_privs
3 WHERE grantee=’LEO’;

GRANTEE OWNER TABLE_NAME PRIVILEGE
——————– ——————– ——————– ——————–
LEO HR EMPLOYEES SELECT

“`

## 删除公有同义词
DROP PUBLIC SYNONYM 同义词名;

需要有删除公有同义词的权限才能删除。(DROP PUBLIC SYNONYM)

“`
SYS用户下:
GRANT DROP PUBLIC SYNONYM TO HR;

hr用户下:

DROP PUBLIC SYNONYM hr_emp;
“`
<br><br>

# 公有同义词和私有同义词的不同
公有同义词可以直接通过同义词的名称进行访问。私有同义词需要加入用户名称才能访问。

原文地址:http://www.cnblogs.com/slqleozhang/p/16846011.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性