同义词理解

个人理解,如有不正确的地方请指正。

前期准备:

首先要赋予用户创建同义词的权限。
管理员打开 命令提示符窗口。输入:sqlplus / as sysdba。
以管理员的身份登录数据库,然后赋予权限:
要想可以创建公共同义词,需要赋予第二个 public 权限
grant create synonym to user_name

grant create public synonym to scott;

问题思考

数据库中有两个用户,A、B,A中有表At,如何在B中访问到At

当然,你可以在B中把表重新建立一次。
上边的方法自然不可取。此时就要用到同义词的思想。可以理解为给At创建一个可以供外界访问的通道。不仅仅可以对表创建同义词,在Oracle数据库中的大部分数据库对象,如表、视图、同义词、序列、存储过程、包等等,数据库管理员都可以根据实际情况为他们定义同义词。

同义词的优点。

使用同义词优点:避免当管理员对数据库对象做出修改和变动之后,必须重新编译应用程序。使用同义词后,即使引用的对象发生变化,也只需要在数据库中对同义词进行修改,而不对应用程序做任何修改。

同义词分类:公有同义词、私有同义词。

  1. 公有同义词由public用户组拥有,数据库中的所有用户都可以使用公有同义词。公用同义词往往用来标示一些比较普通的数据库对象,这些对象往往大家都需要引用。
  2. 私有同义词只被创建它的用户所拥有,只能由该用户以及被授权的其他用户使用。这个同义词的创建者,可以通过授权控制其他用户是否有权使用属于自己的私有同义词。

如何使用(实例)

B表访问A表内容

scott用户中存在一张emp表。
scott中的emp表
guojy用户想要访问emp表。直接无法访问。
在这里插入图片描述
此时在guojy中对scott中的emp表创建别名。
CREATE OR REPLACE SYNONYM emp_symo FOR scott.emp;
此时利用同义词在guojy中进行查询。
SELECT t.* FROM emp_symo t;
在这里插入图片描述

C表访问A表中的At

问题思考:其他用户也要访问这个表呢?
当然可以在C中也为At建立别名。但是最好的方式是建立公共别名。public

首先我们先看,在guojy1中访问表或者刚才建立的别名会发生什么。
在这里插入图片描述在这里插入图片描述
此时均查不到信息。因为,emp_symo 数据guojy这个用户私有访问,其他的用户无法访问。

在scott建立公共同义词。

CREATE OR REPLACE PUBLIC SYNONYM emp_symo_public FOR emp;
此时登陆guojy1 用户再查询。
在这里插入图片描述

经过以上应该会对与同义词有一个基本的概念了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值