7.8 同义词

同义词是对象的备选名称,如果对象存在同义词,那么任何sql语句都能通过实际名称或通过同义词来访问该对象。同义词看上去似乎没什么作用,然而实际情况并非如此。使用同义词意味着应用程序可以对任何用户起作用,而不考虑哪个模式拥有视图和表,甚至不考虑表驻留在哪个数据库中。考察如下语句:

Select * from hr.employees@prod

发出该语句的用户必须知道员工表由数据库链接PROD标识的数据库中的HR模式拥有(不需要关心数据库连接的细节,它们是一种访问不是目前所登录数据库的其他数据库中对象的方式)。如果用如下语句创建公有同义词:

Create public synonym emp for hr.employee@prod;

那么所有用户都需要输入如下语句:

Select * from emp;

这个语句既提供了数据无关性,又提供了位置透明性。只要调整同义词,就可以在不修改代码的情况下重命名或定义表和视图。

与select语句一样,DML语句可以像访问同义词引用的对象一样访问同义词。

私有同义词是模式对象。它们要么必须在自己的模式中,要么必须用模式名限定。公有同义词的存在与模式无关。任何具有查看权限的用户都可以引用公有同义词,不需要用模式名限定。私有同义词必须在模式中有唯一的名称,而公有同义词可以与模式对象同名。当执行访问不带模式限定符的对象语句时,oracle会先在局部模式中查找对象,只有在局部模式中找不到时才会在公有模式中查找。因此在前面的示例中,如果用户碰巧拥有名为EMP的表,它看到的就是这个表--而不是公有同义词指向的名为EMP的表。

创建同义词的语法如下:

Create   synonym别名forobject;

需要为用户授权创建私有同义词的权限,并且进一步授予创建公有同义词的权限。通常,只有数据库管理员能够创建(或删除)公有同义词。这是因为是否存在公有同义词会影响每个用户。

考点:“公有同义词”中的“公有”意味着它不是模式对象,因此不能用模式名做前缀,这并不意味着每个人都具有对公有同义词的访问权限。

删除同义词的语法:

Drop  synonym别名;

如果同义词引用的对象(表或试图)被删除,同义词仍然存在。这时试图使用这样的同义词会返回一个错误。在这一方面,同义词的行为方式与视图相同。如果重新创建对象,那么在使用同义词前必须重新编译:

Alter synonym别名compile;

免责申明:本栏目所发资料信息部分来自网络,仅供大家学习、交流。我们尊重原创作者和单位,支持正版。若本文侵犯了您的权益,请直接点击提交联系我们,立刻删除!

oracle对同义词的解释,[原创]oracle同义词解释相关推荐

  1. Oracle(三):视图、序列、同义词、索引

    一.视图 (一)什么是视图 视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图所对应的数据并不真正地存储在视图中,而是存储在所引用的数据表中,视图的结构和数据是对数据表进行查询的果. ...

  2. oracle 未明确列义,案例:Oracle缺少同义词DDL语句无法执行 ORA-00604 ORA-00942

    天萃荷净 在执行DDL语句时无法执行,报错ORA 00604 ORA 00942,通过隐含参数来解决同义词问题 在最近的一个客户案例中,因为缺少dual同义词,导致ddl语句无法执行.这里_syste ...

  3. Oracle笔记(十三) 视图、同义词、索引

    一.视图 在之前所学习过的所有的SQL语法之中,查询操作是最麻烦的,如果程序开发人员将大量的精力都浪费在查询的编写上,则肯定影响代码的工作进度,所以一个好的数据库设计人员,除了根据业务的操作设计出数据 ...

  4. oracle导出导入同义词,使用datapump 导出导入同义词

    对于同义词的备份我们有多种方式来实现,如直接通过脚本生成同义词的创建脚本,或者使用dbms_metadata.get_ddl来提取同义词的定义脚本.然而在使用传统的exp或是datapump expd ...

  5. oracle 视图、索引、序列、同义词

    目录 1.视图对象 1.1创建视图 1)简单视图 2)建立只读视图 3)复杂视图 1.2管理视图 1)查看视图定义 2)修改视图定义 3)重新编译视图 4)删除视图 2.索引 2.1索引概述 2.2创 ...

  6. Oracle索引、视图、序列、同义词、事务、锁机制详解

    索引 什么是索引? -- 索引就类似于书的目录,根据目录查询内容会快很多,提高数据查询效率 创建索引有俩种方式 1.Oracle会自动为主键和唯一键创建索引 2.手动创建约束. 那么表中什么样的字段应 ...

  7. 简单介绍oracle执行计划,Oracle性能优化之oracle中常见的执行计划及其简单解释

    一.访问表执行计划 1.table access full:全表扫描.它会访问表中的每一条记录(读取高水位线以内的每一个数据块). 2.table access by user rowid:输入源ro ...

  8. Oracle中V$SESSION等各表的字段解释,Oracle官方解释

    https://www.cnblogs.com/grey-wolf/p/10119219.html Oracle中V$SESSION等各表的字段解释,Oracle官方解释 阅读目录 一.常用的视图 1 ...

  9. oracle整库的移植,Oracle数据库整机移植技术(原创)

    Oracle数据库整机移植技术 本文源自一次做Oracle9i DataGuard测试而产生的思路.前些时间有网友提出因为OS损坏,在硬盘没有损坏的情况下可否将数据库恢复至另一台机器上.现在不管从理论 ...

最新文章

  1. SELECT INTO 和 replace into SELECT 两种表复制语句
  2. 从Config文件中读取节点的配置信息
  3. CMM/CMMI的20年和敏捷十年
  4. 8.Java有关变量的面试题
  5. 关于Nocas的几个问题
  6. python矩阵元素排序,使用Python基于列表值对矩阵列进行排序
  7. python学习手记 pt1
  8. Android开发笔记(一百一十二)开发工具
  9. Struts 2.0 入门
  10. 麻省理工18年春软件构造课程阅读01“静态检查”
  11. SQL基本使用-查询表中的记录
  12. IDEA 远程调试war包
  13. [TJOI2007]路标设置
  14. 联想硬盘保护安装linux,【原创参赛】联想硬盘保护系统 (详细说明)
  15. Android 投屏集成记录
  16. VBA小程序_对于选中的单元格进行取消合并_选择空值向上填充
  17. 卷积神经网络 图像识别,卷积神经网络处理图片
  18. Docker、Docker、Docker
  19. NXP_RT1172 eFlexPWM 模块简介
  20. 五菱的“世界上最有名的颜色”系列海报,太令人上头了

热门文章

  1. 电商详情页系统实战(1) - 简介
  2. [CSP-S模拟测试]:涂色游戏(DP+组合数+矩阵快速幂)
  3. 希赛2012软考《网络工程师》笔记(第五部分:数据通信基础)
  4. 解决小游戏黑屏情况之一
  5. python:ezdxf——教程
  6. 最大流 hdu 4183
  7. 设计电梯软件部分的测试用例
  8. python学习笔记(六)——类的初始化(__init__)、类属性和类方法 和 对象
  9. 记一次ANR触发与分析
  10. STM32读取BQ40Z50的数据