Oracle数据库之同义词(SYNONYM)使用(转)

最近在公司听到同义词,不是很懂,甚是尴尬,决定看了一看

从网上看了看资料

同义词是指数据库对象(表、视图、序列、存储过程等数据库对象)用另一个名字来引用。比如:

建立一个同义词可以排除一个对象名字的限制. 
如果你的数据库有多个用户,USER_A要访问USER_B的TABLE1,只能使用USER_B.TABLE1 
建一个同义词abc指向USER_B.TABLE1,那你就可以select * from abc了,而且public的同义词会直接出现在所有用户的面前

 

 

一、Oracle数据只有一个实例(简单理解就是Oracle 只能建立一个数据库,不像MySQL,它下面可以创建N个库),那么Oracle是根据用户灵活去管理的;这点读起来、理解 
    起来也不那么难,但是除非自己亲自实现一把才理解深入点,刚接触数据库可能不是很理解这些;
二、Oracle中可以建立多个用户,那么这些用户刚建立是得授权的,不让没有权限做任何事情,(举个栗子:用户 ‘AA’ 是授权的DBA用户,此用户下面有 N 张表,如果再创建
   一个用户 “BB” ,那么 “BB” 是没有权限读取 “AA” 中表的,有人可能就会说给他授权不就行了么,给 “BB” 授予超级权限,抱歉,那也不行,你同样么有机会访问 “AA” 
   中的表的,你虽然授予了超级权限,那是在你名下的,在 “AA” 起不了作用),是不是很是揪心,同一个库下两个 超级用户 还不能访问。
三、是不是在 “BB” 用户下在把 “AA” 下的表 复制一遍不就好了,没错,这样也能实现,但是这样会浪费很多资源,而且不能同步数据;这种情况下 同义词 就有用武之地了,
    其实  同义词 也相当于一个视图 可以这个么理解,可以进行对表的 增删改查,(省资源,数据同步);

 

 

创建同义词

语法:

CREATE [OR REPLACE] [PUBLIC] SYNONYM [schema.] synonym_name FOR [schema.] object_name [@dblink];

语法说明:
OR REPLACE: 在不使用DROP的前提下容许你重新创建(如果同义词已经存在)。

PUBLIC: 所创建的同义词是全局的同义词,所有数据库用户都可以使用。

schema: 要创建同义词的对象所在的schema,如果省略,则默认的应用对象在当前schema下。

object_name: 要创建同义词的对象,它可以是以下几种类型:

TABLE
VIEW
SEQUENCE
STORED PROCEDURE
FUNCTION
PACKAGE
MATERIALIZED VIEW
JAVA CLASS SCHEMA OBJECT
USER-DEFINED OBJECT
SYNONYM
例子:

CREATE PUBLIC SYNONYM suppliers FOR app.suppliers;

 删除同义词

DROP [PUBLIC] SYNONYM [schema.] synonym_name [FORCE];

说明:

PUBLIC: 容许删除PUBLIC同义词, 如果使用了PUBLIC关键字,则可以省略schema。

FORCE:用来强制删除同义词,即使它在数据库中有其它的依赖。

DROP PUBLIC SYNONYM suppliers;

原文:https://blog.csdn.net/jssg_tzw/article/details/42300581 

           https://www.cnblogs.com/tstttos/p/6262164.html

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值