ORACLE-synonym用法场景
遇到眼前事、不会就百度
要求如下:对接的部门需要用我们的数据做查询,原本说好的接口,当我把接口查询做出来后,文档也写完了之后,发给对接部门之后,屁事就来了,又要求分页、有巴拉巴拉,我可QNMDB。本来对该部门对接就不想弄、原因是之前对接几张表数据、给我发了400多页的数据字典word文档,关键是文档还一点都不清晰。所以导致我一点想给他们弄的心思都没有。
吐槽归吐槽、思量下来,给他们建立一个数据库用户,只给他们查询权限,且用户下面不建立表了,直接将他们所需要的表分享到该用户下,不需要添加用户名就可以直接访问,于是百度了下,oracle里面也有个叫同义词/synonyms
,网上给的理解是:进行大型系统开发时,往往会涉及到多个子系统的开发。为了方便开发一般数据库都会存在同一个数据库实例中,方便数据共享。这种数据共享的方式在Oracle中叫"同义词/synonyms"。
😋 这就很赞了:
有两种方式创建:
第一种:直接新建
1.PL/SQL中的synonyms中右键新建
2.在弹出synonyms窗口中填写相关信息
为了别(害)出(人)心(害)裁(己)
同义词可以取别的不相干的字符
3.创建成功,可以在本用户下直接查询其他用户表
select * from “同义词表名”
第二种:语句执行
用户我是新建的:
- 所以 先登录sys或者拥有dba权限用户,创建用户B(用户名)
create user B identified by BB(密码自行修改);
grant connect to B;
- 对用户B要使用的A表进行授权,使得登录B用户可以访问A的表
所有权限赋予:
grant all on A.TABLE to B;(此时登录B用户,可以使用A用户的MMC表)。
单独权限赋予:
grant select on A.TABLE TO B; (赋予查询权限)
我这边操作的时候只赋予了查询的权限
- 这时候创建同义词
create synonym B.TABLE for A.TABLE ;
举个例子:我这边想把用户A的XZCF表分享给用户B。
create synonym B.xz for A.xzxk;
我如果这么执行的话,那我在用户B下面查询的表的时候,只能执行
select * from xz 才可以查询的到xzxk表
- 删除同义词
drop synonym B.TABLE;
- 查看所有同义词
select * from dba_synonyms