oracle同义词


1.什么是同义词?

就是给数据库方案起一个别名

为什么要起别名?用本身名字不好吗?

比如说最近大家很喜欢的演员迪丽热巴,人家全名叫迪丽热巴·迪力木拉提 ,长不长,叫起来累不累,所以起了个小名叫胖迪,简不简单,好不好记,叫起来也容易吧,所以同义词就是这个意思,同义词的存在就是为了使用方便,简化操作,不用打那么长的原名,可以用简短的小名


2.怎么建同义词?

(1)首先要看你目前登陆的用户有没有建同义词的权限,

查看方法:登陆sys,然后select * from session_privs;

但是出来的结果我并不能看懂,尴尬,所以直接创建同义词,如果报没有权限的错,就再授权,简单直接,我喜欢


(2)授予当前用户创建同义词的权限,以scott为例,先登陆system,再授权,scott不能授权给自己

授权语句:

grant create any synonym to scott;

grant create public synonym to scott;


取消授权语句:

revoke create any synoym from scott;

revoke create public synoym from scott;


创建私有同义词语句:

create synonym 别名 for scott.表名;或者create synonym 同义词 for 表名,因为登陆了scott,所以不说也

例如我scott下有一个表叫queshengzhi,现在起一个同义词q,语句就是:create synonym q for scott.queshengzhi;

再查询queshengzhi这个表的内容时就可以用这样的查询语句:select * from  q;或者是select * from queshengzhi;这两种查询方法是一样的

这个别名只有scott自己可以用,别人想用必须scott.q才行,也就是说别人想用这个私有同义词需要scott.同义词


删除私有同义词:

drop synonym 同义词

例如 drop synonym  q;


创建共有同义词:

create public synonym 同义词 for user.表名

例如create public sysnonym que for scott.queshengzhi;

这样有查找scott下的表的权利的用户就可以用这个同义词了,并且不用scott.同义词,直接select * from que;就可以


删除共有同义词:

drop public synonym 同义词;

例如 drop publicsynonym que;


3.同义词转换不再有效怎么办

可以检查创建时的语句是否有问题

可以检查登陆的用户是否能看到你创建同义词的用户的表

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值