- 浏览: 118587 次
- 性别:
- 来自: 上海
文章分类
最新评论
设定同义词,方便使用
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 同义词的名字;
发表评论
-
获取oracle数据库中表中记录行数,不使用select count()方式
2014-05-23 15:56 1498逐个表统计数据行数,使用Select count语句统计,比较 ... -
修改Oracle10g的默认8080端口
2013-12-03 01:07 470Oracle10g在安装完成后,默认占用8080端口,而这个 ... -
Oracle的分页查询语句优化
2013-08-07 16:56 758Oracle的分页查询语句基本上可以按照本文给出的格式来进行套 ... -
oracle 回收站管理
2013-04-12 17:02 644oracle10g,在pl/sql中选中删除后会出现类似:BI ... -
plsql中的异常
2013-03-21 17:51 1213如果没有异常,在程序中,应当检查每个命令的成功还是失败,使用异 ... -
sqlldr常规应用 (总结篇)
2012-11-27 15:45 1598标例: load data ... -
在oracle中通过connect by prior来实现递归查询
2012-11-05 22:36 1092Start with...Connect By子句递归查询一般 ... -
分页.
2012-05-25 15:59 608select * from (select rownum as ... -
Oracle维护常用SQL语句
2012-05-11 14:34 7171:查看表空间的名称及大小 select t.ta ... -
SQL语句优化技术分析
2012-05-25 16:00 689SQL语句优化技术分析- - 操作符优化 ... -
有关sqlldr的一个具体应用
2012-04-09 15:59 1104今天接到生管给的生产报表,需要删除2000台SEQ状态下 ... -
oracle11g密码区分大小写问题
2012-03-26 14:05 1377自11g开始,oracle缺省区分帐号的密码大小写(ca ... -
shell远程获取文件
2012-03-26 14:06 976根据输入的参数(文件名称),逐个获取远程主机制定目录的文 ... -
自动取远程服务器的文件到本地的脚本
2012-03-26 14:06 906自动取远程服务器的文件到本地,中间无需人工参与 a. ... -
如何删除所有目录下与目录同名的文件?
2012-03-26 14:06 1189#!/bin/bash for i in $(f ... -
Linux 脚本编写基础
2012-03-22 11:03 18441. Linux 脚本编写基础1.1 语法基本介绍1.1.1 ... -
shell脚本实现查找目录下同名但不同后缀名的文件
2012-03-22 10:59 2506原创作品,允许转载,转载时请务必以超链接形式标明文章 原 ... -
shell获取目录下最新的文件,文件是以日期命名
2012-03-22 10:56 4969shell编程:一个目录下面有很多文件,这些文件都是以日 ... -
PL/SQL教程
2012-03-22 10:55 940课程 一 PL/SQL 基本查 ... -
ORACLE 查询数字串拼接
2011-08-26 17:07 815在SQL server 2000等中,我们常用的字符串拼接方 ...
相关推荐
Oracle Dblink and synonym(同义词) 授权 创建 以及使用
Oracle的同义词(synonyms)总结
主要是Oracle数据库的同义词和数据库连接的一些应用,在不同实例之间进行连接!
可以帮助oracle开发!Oracle中创建,删除同义词 Synonym
一、同义词的概念同义词(synonym)就是数据库对象的别名,这里的数据库对象包括表、视图、序列、存储过程、包等 二、创建同义词1、创建同义词的权限用dba权限
1.3.6 同义词(Synonym) 19 1.3.7 序列(Sequence) 19 1.3.8 数据库链(Database Link) 20 第2章 管理ORACLE数据库 21 2.1 基本概念 21 2.1.1 数据字典 21 2.1.2 事务管理 23 2.1.3 数据库管理员(DBA) 24 2.1.4 ...
前几天编写一个存储过程,需要访问远程数据库的字段,于是建立一个dbLink并建了同义词: CREATE PUBLIC DATABASE LINK orcl@dbc CONNECT TO orcl IDENTIFIED BY orcl USING 'orcl'; CREATE SYNONYM mtb FOR mytable...
elasticsearch同义词插件,基于数据库的热加载,可以实现从数据库实时查询分词,支持mysql和oracle两种数据库,只需要将插件解压到ES安装目录下的插件目录下即可,解压之后删除安装包
1、在联接视图中,当( )时,该基表被称为键保留表。...3、要以自身的模式创建私有同义词,用户必须拥有( )系统权限 A.CREATE PRIVATE SYNONYM B.CREATE PUBLIC SYNONYM C.CREATE SYNONYM D.CREATE ANY SYNONYM
ORACLE用户是学习ORACLE数据库中的基础知识,下面就介绍下类系统常用的默认ORACLE用户: 1. sys用户:超级用户,完全是个SYSDBA(管理数据库的人)。拥有dba,sysdba,sysoper等角色或权限。是oracle权限最高的用户,...
dictionary 全部数据字典表的名称和解释,它有一个同义词dict dict_column 全部数据字典表里字段名称和解释 如果我们想查询跟索引有关的数据字典时,可以用下面这条SQL语句: SQL>select * from dictionary ...
假如Oracle中有两个用户A和B,那么如果A要访问B拥有的表... 除了一楼的创建同义词外,还要授予A用户访问改同意词的权限. 代码如下: drop synonym tablename ; 1 可以使用查询生成sql语句,比如 代码如下: select ‘CREATE
1.3.6 同义词(Synonym) 19 1.3.7 序列(Sequence) 19 1.3.8 数据库链(Database Link) 20 第2章 管理ORACLE数据库 21 2.1 基本概念 21 2.1.1 数据字典 21 2.1.2 事务管理 23 2.1.3 数据库管理员(DBA) 24 2.1.4 ...
作为初学者,整理学习文档是个好习惯,这篇小记是关于oracle权限操作,方案,序列,同义词,序列的基本语法
同义词(synonym) 6.序列(sequence) 7.约束(constraint) 8.视图(view) 9.索引(index) 10.数据类型 11.基本查询 12.查寻常用操作 13.语言四大类 14.聚合函数 15.函数 16.操作符 17.多表查询 18.子查询 ...
1.3.5 同义词(Synonym) 16 1.3.6 序列(Sequence) 17 1.3.7 数据库链(Database Link) 17 第2章 管理ORACLE数据库 19 2.1 启动与关闭 19 2.1.1 权限 19 2.1.2 ORACLE的四中状态 20 2.1.3 启动数据库 20 2.1.4 ...
18 1.3.5 索引(Index) 18 1.3.6 同义词(Synonym) 19 1.3.7 序列(Sequence) 19 1.3.8 数据库链(Database Link) 20 第2章 管理ORACLE数据库 21 2.1 基本概念 21 2.1.1 数据字典 21 2.1.2 事务管理 23 2.1.3 ...
§4.5 视图、同义词和序列有关的数据字典 149 第五章 簇与分区 150 §5.1 簇( cluster ) 150 §5.1.0 簇概念 150 §5.1.1 建立簇 152 §5.1.2 改变簇 155 §5.1.3 删除簇 155 §5.1.4 删除簇索引 156 §5.1.5 收集簇...
dictionary 全部数据字典表的名称和解释,它有一个同义词dict dict_column 全部数据字典表里字段名称和解释 如果我们想查询跟索引有关的数据字典时,可以用下面这条SQL语句: SQL>select * from dictionary ...