课程表

Oracle 基础教程

Oracle 进阶教程

Oracle PL/SQL

Oracle OEM

Oracle 备份和恢复

Oracle RAC

工具箱
速查手册

Oracle synonym 同义词

当前位置:免费教程 » 数据库/运维 » Oracle

Oracle synonym 同义词是数据库当前用户通过给另外一个用户的对象创建一个别名,然后可以通过对别名进行查询和操作,等价于直接操作该数据库对象。Oracle同义词常常是给表、视图、函数、过程、包等制定别名,可以通过CREATE 命令进行创建、ALTER 命令进行修改、DROP 命令执行删除操作。 

Oracle synonym 同义词按照访问权限分为私有同义词、公有同义词。

私有同义词:私有同义词只能当前用户可以访问,前提:当前用户具有create synonym 权限。

公有同义词:公有同义词只能具有DBA用户才能进行创建,所有用户都可以访问的。

语法结构:

  1. CREATE [OR REPLACE] [PUBLIC] SYSNONYM [当前用户.]synonym_name
  2.  
  3. FOR [其他用户.]object_name;

解析:

1、create [or replace] 命令create建表命令一样,当当前用户下同义词对象名已经存在的时候,就会删除原来的同义词,用新的同义词替代上。

2、[public]:创建的是公有同义词,在实际开发过程中比较少用,因为创建就代表着任何用户都可以通过自己用户访问操作该对象,一般我们访问其他用户对象时,需要该用户进行授权给我们。

3、用户名.object_name:oralce用户对象的权限都是自己用户进行管理的,需要其他用户的某个对象的操作权限,只能通过对象拥有者(用户)进行授权给当前用户。或者当前用户具有系统管理员权限(DBA),即可通过用户名.object_name操作该对象。

案例分析:

我们在jsq_copy用户下也创建了一张学生信息表(stuinfo),该信息表只存在一个学生信息“张三丰”。由于我们当前用户student用户不具有jsq_copy.stuino的权限,因此要需要该用户授权,然后才能访问。代码如下:

  1. --未授权之前查询(提示表不存在,没有操作权限)
  2. select * from jsq_copy.stuinfo;
  3.  
  4. --登录jsq_copy用户进行授权
  5. conn  jsq_copy/123456;
  6. grant all on stuinfo to student;
  7.  
  8. --授权后再次查询该表数据
  9. conn student/123456;
  10. select * from jsq_copy.stuinfo;

结果:

1.jpg


我们现在为jsq_copy.stuinfo创建同义词stuinfo_copy,然后通过当前用户student直接操作同义词stuinfo_copy查询jsq_copy.stuinfo表数据。代码如下:

  1. create synonym stuinfo_copy for jsq_copy.stuinfo;

结果:

2.jpg


同义词删除

        同义词删除只能通过同义词拥有者的用户或者具有DBA权限的用户才能删除。

语法结构:

  1. DROP [PUBLIC] SYNONYM [用户.]sysnonym_name;


转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号