oracle同义词

来源:互联网 发布:马自达cx4 知乎 编辑:程序博客网 时间:2024/06/03 15:43

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.同义词转换不再有效怎么办

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

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

原创粉丝点击