`
阅读更多

Oralce中的synonym同义词

Posted on 2010-12-31 16:14 chinaifne 阅读(44) 评论(0) 编辑 收藏

设定同义词,方便使用
select * from emp;等用于select * from abc;
建立共有的同义词
如果用户的等级不够建立public同义词,可以在system下授权:
grant create any synonym to scott;
grant create public synonym to scott;
取消授权:
revoke create any synoym from scott;
revoke create public synoym from scott;
取消同义词:
drop public synonym abc;
授权取消同义词:
grant dorp public synonym to scott;
取消授权:
revoke drop public synonym to scott;
15.9 引入同义词(Synonym)的原因
在一些商业数据库中,有时信息系统的设计或开发者为了增加易读性,故意定义一些很长的表名(也可能是其它的对象)。这样虽然增加了易读性,但在引用这些表 或对象时就不那么方便,也容易产生输入错误。另外在实际的商业公司里,一些用户觉得某一个对象名有意义也很好记,但另一些用户可能觉得另一个名字更有意 义。
ORACLE系统提供的同义词(Synonym)就是用来解决以上的难题的。设想一下在您的日常工作中您每天都要使用supplier表许多次,而且您的英文打字的水平并不高。在这种情形下,您就可以借助于同义词(Synonym)来帮助您提高生产力。
15.10 怎样创建同义词(Synonym)
现在您就可以使用如下的CREATE SYNONYM语句(例15-38)为表supplier建了一个同义词(别名)s。
例15-38
SQL> CREATE SYNONYM s
2 FOR supplier;
例15-38结果
同义词已创建。
现在您就可以把同义词(别名)s当成supplier来使用。您可以使用如下的查寻语句(例15-39)来验证这一点。
例15-39
SQL> SELECT *
2 FROM s;
例15-39结果
S_CODE SNAME CONTACT PHONE FAX
---------- ------------------------- --------------- --------------- -------
2000 仙客来百货 张根发 4444944 4444844
2010 心太软小商品 石铁心 1741741 1741742
2021 食为天餐具 金元宝 1671671 1671674
2032 食为先餐具 陆合彩 1681684 1681684
那您可能会问,您怎样才能知道您到底拥有哪些同义词(Synonym)呢?
还记得数据字典user_objects吗?既然同义词(Synonym)是对象,它们在这个数据字典中就一定有记载。因此您可以使用如下的查寻语句(例 15-41)从数据字典user_objects中得到您所拥有的全部同义词(Synonym)的信息。当然为了使SQL*PLUS的显示输出更加清晰您 应该先使用如下的SQL*PLUS格式化命令(例15-40)。
例15-40
SQL> col object_name for a20
例15-41
SQL> SELECT object_name, object_type, created, status
2 FROM user_objects
3 WHERE object_type LIKE 'SYN%';
例15-41结果
OBJECT_NAME OBJECT_TYPE CREATED STATUS
-------------------- ------------------ ---------- ------
S SYNONYM 28-4月 -03 VALID
例15-41显示的结果表明:在您的模式(用户)下只有一个同义词(Synonym),那就是您刚刚建立的同义词(Synonym)s。
但是例15-41显示的结果并没有告诉您这个同义词(Synonym)到底是基于那个表的及表的主人是谁。如果您有一个这样同义词(Synonym)时, 这方面的信息也许就显得特别重要了。您可以使用如下的查寻语句(例15-43)从数据字典user_synonyms中得到这方面的信息。当然为了使 SQL*PLUS的显示输出更加清晰您应该先使用如下的SQL*PLUS格式化命令
(例15-42)。
例15-42
SQL> col table_owner for a12
SQL> col table_name for a12
例15-43
SQL> SELECT synonym_name, table_owner, table_name
2 FROM user_synonyms;
例15-43结果
SYNONYM_NAME TABLE_OWNER TABLE_NAME
------------------------------ ------------ ----------
S SCOTT SUPPLIER
例15-43显示的结果表明:在您的模式(用户)下只有一个同义词(Synonym),那就是您刚刚建立的同义词(Synonym)s。该同义词(Synonym)是基于表supplier,而这个表的主人是SCOTT。
创建同义词(Synonym)的语句格式如下:
CREATE [PUBLIC] SYNONYM 同义词的名字
FOR 对象名;
其中:
Ø PUBLIC: 系统中所有的用户都可以访问所创建的同义词
Ø 同义词的名字: 所创建的同义词的名字
Ø 对象名: 创建的同义词所基于的对象名
在创建同义词时要注意的事项:
Ø 所基于的对象不能包含在任何软件包中
Ø 一个私有的同义词不能与任何该用户下的其它对象重名
您刚刚创建的同义词(Synonym)s是一个私有的同义词,即只能在您的用户(SCOTT)下直接引用,如果其它用户引用它就必需冠以用户名.(既 scott.s的方式引用)。这样作很不方便。如果您所建的表supplier是一个所有用户共享并经常使用的表,您应该怎样处理这一问题呢?
15.11 创建公用同义词(Synonym)
您可以为supplier表创建一个公用同义词(Synonym)。为了演示方便,您应该从当前的SCOTT用户切换到另一个用户下,如SYSTEM。您可以使用如下的SQL*PLUS命令(例15-44)来完成用户的切换。
例15-44
SQL> CONNECT SYSTEM/MANAGER
例15-44结果
已连接。
现在您如果使用如下的查寻语句(例15-45),您是不会得到您想要的信息的。
例15-45
SQL> SELECT *
2 FROM s;
例15-45结果
FROM s
*
ERROR 位于第 2 行:
ORA-00942: 表或视图不存在
您如果再使用如下的查寻语句(例15-46),您也同样不会得到您想要的信息的。
例15-46
SQL> SELECT *
2 FROM supplier;
例15-46结果
FROM supplier
*
ERROR 位于第 2 行:
ORA-00942: 表或视图不存在
如果您在同义词(Synonym)s之前冠以用户名.(scott.),您就可以得到您所需要的信息了。如下面的查寻语句(例15-47)。
例15-47
SQL> SELECT *
2 FROM scott.s;
例15-47结果
S_CODE SNAME CONTACT PHONE FAX
---------- ------------------------- --------------- --------------- -------
2000 仙客来百货 张根发 4444944 4444844
2010 心太软小商品 石铁心 1741741 1741742
2021 食为天餐具 金元宝 1671671 1671674
2032 食为先餐具 陆合彩 1681684 1681684
由于其它用户在引用这一同义词(Synonym)s时必须冠以您的用户名(.).,这样很不方便,而且也容易产生输入错误,所以您可以使用如下的DDL语句(例15-48)为scott用户下的supplier建立一个公用的同义词(Synonym)ss。
例15-48
SQL> CREATE PUBLIC SYNONYM ss
2 FOR scott.supplier;
例15-48结果
同义词已创建。
现在您就可以利用您刚刚创建的公用的同义词(Synonym)ss来获得您所希望得到的信息。您可以使用如下的查寻语句(例15-49)。
例15-49
SQL> SELECT *
2 FROM ss;
例15-49结果
S_CODE SNAME CONTACT PHONE FAX
---------- ------------------------- --------------- --------------- -------
2000 仙客来百货 张根发 4444944 4444844
2010 心太软小商品 石铁心 1741741 1741742
2021 食为天餐具 金元宝 1671671 1671674
2032 食为先餐具 陆合彩 1681684 1681684
您也可能会问,其它用户是否也可以使用同样的方法访问同义词(Synonym)ss。答案是肯定的。如果您还有疑问的话,您可以试着以如下的SQL*PLUS命令(例15-50)以SYS用户登录进入ORACLE数据库。
例15-50
SQL> CONNECT SYS/ORACLE AS SYSDBA;
例15-50结果
已连接。
现在您就可以利用公共同义词(Synonym)ss来获得您所希望得到的信息。您可以使用如下的查寻语句(例15-51)。
例15-51
SQL> SELECT *
2 FROM ss;
例15-51结果
S_CODE SNAME CONTACT PHONE FAX
---------- ------------------------- --------------- --------------- -------
2000 仙客来百货 张根发 4444944 4444844
2010 心太软小商品 石铁心 1741741 1741742
2021 食为天餐具 金元宝 1671671 1671674
2032 食为先餐具 陆合彩 1681684 1681684
ORACLE并没有提供修改同义词(Synonym)的命令。如果您要修改某一同义词(Synonym)的话,您要先把它删除掉,之后再重新建立这个同义词(Synonym)。
15.12 删除同义词(Synonym)
如果经过了一段时间,您发现同义词(Synonym)s已经没什么用处了,您就可以使用如下的DDL语句(例15-53)将它删除掉。不过在这之前您可能得先使用如下的SQL*PLUS命令(例15-52)重新注册到SCOTT用户下。
例15-52
SQL> CONNECT SCOTT/TIGER
例15-52结果
已连接。
例15-53
SQL> DROP SYNONYM s;
例15-53结果
同义词已丢弃。
虽然例15-53结果已经显示:“同义词已丢弃。”,但是为了谨慎起见,您还是应该使用如下的查寻语句(例15-54)查看一下数据字典user_objects。
例15-54
SQL> SELECT object_name, object_type, created, status
2 FROM user_objects
3 WHERE object_type LIKE 'SYN%';
例15-54结果
未选定行
或者您应该使用如下的查寻语句(例15-55)查看一下数据字典user_ synonyms。
例15-55
SQL> SELECT synonym_name, table_owner, table_name
2 FROM user_synonyms;
例15-55结果
未选定行
例15-54和例15-55显示的结果进一步证实了您已经将同义词(Synonym)s成功地从系统中删除掉。
删除同义词(Synonym)语句的格式如下:
DROP SYNONYM 同义词的名字;

<script type="text/javascript"></script>
分享到:
评论

相关推荐

    ORACLE中一个用户操作另一个用户的某些表 oracle同义词

    Oracle 同义词在用户间的应用 Oracle 同义词是 Oracle 中的一种机制,允许用户创建一个别名,以便简化数据库对象的访问。同义词可以应用于多种情况,例如,在不同用户之间共享表、视图、序列、程序单元等数据库对象...

    Oracle 同义词

    Oracle 同义词 Oracle 同义词是指在 Oracle 数据库中创建的别名,用于简化对数据库对象的访问。同义词可以是公开的,也可以是私有的。公开的同义词可以被所有用户访问,而私有的同义词只能被对象的拥有者或被授予...

    Oracle 同义词和视图

    在Oracle数据库中,同义词(Synonyms)和视图(Views)是两种非常重要的对象,它们都提供了数据访问和管理的便捷方式。下面将详细解释这两种概念以及它们在实际应用中的作用。 **同义词** 同义词是Oracle数据库提供...

    oracle同义词和序列

    Oracle 同义词和序列 Oracle 数据库中同义词和序列是两个重要概念,然而同义词的概念往往被人忽略。这篇文章将详细讲解同义词和序列的概念,并对其进行详细的介绍。 同义词是指表、视图、序列、过程、函数和包的...

    Oracle中定义以及使用同义词的方法

    总的来说,Oracle同义词是数据库管理和协作中不可或缺的一部分,它通过提供对象的替代名称,简化了SQL语句,增强了安全性,并在分布式环境中的数据访问上提供了灵活性。理解和正确使用同义词,可以极大地提升数据库...

    21.Oracle同义词1

    在Oracle数据库系统中,同义...总之,Oracle同义词是数据库管理和维护中不可或缺的一部分,它为用户提供了一种方便且安全的方式来引用和操作数据库中的各种对象。正确使用同义词,可以提升数据库的可维护性和用户体验。

    oracle 同义词学习资料

    oracle 同义词学习资料

    利用oracle同义词技术加强对MIS系统数据接口管理控制.pdf

    利用Oracle同义词技术,MIS系统可以更好地控制数据接口的安全性,提高数据对象的透明度,并简化分布式接口的访问。通过这种方式,不仅可以降低安全风险,还可以提升系统的整体管理效率,为企业的信息化建设提供有力...

    oracle 同义词和序列

    本文将详细探讨四个关键概念:索引、视图、同义词和序列。 首先,索引是提升查询性能的关键工具。它们为表的特定列提供额外的数据结构,允许数据库更快地定位和检索数据。创建索引分为两种主要方式:企业管理器和...

    实用的数据库赋权和同义词的存储过程,用于oracle

    在Oracle数据库管理中,权限控制和同义词的使用是两个关键的概念,它们对于系统的安全性、易用性和可维护性至关重要。本存储过程集旨在提供一个实用的解决方案,以简化和优化这两个领域的操作。 首先,让我们深入...

    oracle实验9-10-索引与视图-序列和同义词的创建.doc

    Oracle 实验报告 - 索引、视图、序列和同义词的创建 本实验报告旨在介绍 Oracle 中的索引、视图、序列和同义词的概念和应用。通过实验,掌握创建索引、视图、序列和同义词的命令,并理解它们在数据库中的作用。 一...

    Oracle的同义词(synonyms)总结

    ### Oracle的同义词(Synonyms)总结 #### 一、引言 在数据库管理领域,Oracle是一款广泛使用的数据库管理系统。为了提高数据访问的安全性和便捷性,Oracle引入了同义词(Synonyms)这一概念。同义词可以视为对表...

    ORACLE跨库向41服务器同步以及同义词

    ### ORACLE跨库向41服务器同步以及同义词 #### 概述 本文将详细介绍如何在Oracle环境中实现跨库数据同步至特定服务器,并通过创建同义词来简化跨库查询的操作流程。整个过程分为五个步骤:配置TNS名称、创建数据库...

    oracle作业视图和同义词

    ### Oracle作业视图和同义词 #### 视图(Views) 在Oracle数据库中,视图是一种虚拟表,它不实际存储数据,而是保存一条SELECT语句,该语句定义了视图的数据来源。视图可以简化数据访问,提供安全机制,并使用户能够...

    同义词oracle

    这是一个ppt。可以用来学习基本的知识。希望可以帮到大家。

    Oracle Dblink and synonym(同义词)

    Oracle Dblink and synonym(同义词) 授权 创建 以及使用

    MLDN魔乐科技_Oracle课堂22_序列、同义词

    在Oracle数据库系统中,"序列"(Sequences)和"同义词"(Synonyms)是两个非常重要的概念,它们对于数据库的管理和数据操作起到关键作用。本堂Oracle课堂将深入探讨这两个主题。 首先,我们来理解序列。序列在...

    利用同义词构建SQLserver与Oracle数据库之间的访问接口

    在进行数据分析时,优势需要关联分析Oracle与SQL server中的数据。一般做法是利用OLEDB将数据导入到一个数据库中,也可以在SQL server中建立一个虚拟连接,将Oracle中数据表虚拟到SQL server中,视同本地表使用,极...

    oracle表分区PPT学习教案.pptx

    Oracle表分区是数据库管理系统中的一种高级特性,用于提高大规模数据的查询性能和管理效率。...通过本教程,你可以深入了解Oracle同义词的各个方面,并将其应用到实际工作中,提升数据库系统的性能和安全性。

    Oracle学习笔记(序列和同义词)

    Oracle学习笔记(序列和同义词),有具体的序列和同义词的代码案例

Global site tag (gtag.js) - Google Analytics