oracle mysql 同义词_Oracle中的同义词SYNONYM
同义词实质上是指定方案对象的一个别名。通过屏蔽对象的名称和所有者以及对分布式数据库的远程对象提供位置透明性,同义词可以提供一定程度的安全性。同时,同义词的易用性较好,降低了数据库用户的SQL语句复杂度。
同义词允许基对象重命名或者移动,这时,只需对同义词进行重定义,基于同义词的应用程序可以继续运行而无需修改。
你可以创建公共同义词和私有同义词。其中,公共同义词属于PUBLIC特殊用户组,数据库的所有用户都能访问;而私有同义词包含在特定用户的方案中,只允许特定用户或者有基对象访问权限的用户进行访问。
同义词本身不涉及安全,当你赋予一个同义词对象权限时,你实质上是在给同义词的基对象赋予权限,同义词只是基对象的一个别名。
创建同义词
在你自己的方案中创建私有同义词时,你必须拥有CREATE SYNONYM权限;在其他方案中创建私有同义词时,你必须拥有CREATE ANY SYNONYM权限;创建公共同义词,你必须拥有CREATE PUBLIC SYNONYM系统权限。
我们通过CREATE
SYNONYM语句来创建一个同义词,需要注意的是,为了成功创建同义词,我们既不需要基对象一定存在,也不需要拥有访问基对象的权限。下面的语句创建了jward用户下emp表的公共同义词public_emp。
点击(此处)折叠或打开
CREATE PUBLIC SYNONYM public_emp FOR jward.emp
当你为远程的过程或者函数创建同义词时,你必须限定远程对象的方案名称;相应的,你可以为驻留在本地数据库的远程对象创建本地公共同义词,在这种情况下,在后续调用存储过程或者函数时必须包含数据库链接。
在DML语句中使用同义词
你可以使用方案内部的所有私有同义词;另外,只要你拥有访问基对象的必要权限,或者明确地通过特定角色,再或者通过PUBLIC,你就可以访问任意的公共同义词。你也可以访问其他方案的私有同义词,前提是你被赋予了访问相应基对象的权限。
只要你被赋予了基对象权限,你就可以使用其他用户的私有同义词。例如,你只拥有jward.emp表的SELECT权限,jward.emp表有一个同义词jward.employee,这时,你就只能对jward.employee同义词进行查询操作,而不能使用它进行插入数据。
在DML语句中,同义词的使用方式和基对象的使用方式完全相同。例如,一个名称为employee的同义词,下面语句是有效的:
点击(此处)折叠或打开
INSERT INTO employee (empno, ename, job)
VALUES (emp_sequence.NEXTVAL, 'SMITH', 'CLERK');
如果fire_emp是一个独立的程序或程序包的同义词,你就可以执行以下命令:
点击(此处)折叠或打开
EXECUTE Fire_emp(7344);
删除同义词
你可以删除本方案中的任一私有同义词;如果你要删除其他用户方案的私有同义词,你必须拥有DROP ANY SYNONYM系统权限;如果你要删除公共同义词,你必须拥有DROP PUBLIC SYNONYM系统权限。
你可以通过DROP
SYNONYM语句来删除一个不再需要的同义词,当删除私有同义词时,省略PUBLIC关键字;当删除公共同义词时,需要包含PUBLIC关键字。
例如,下面语句删除名为emp的同义词:
点击(此处)折叠或打开
DROP SYNONYM emp;
下面的语句删除名为public_emp的公共同义词:
点击(此处)折叠或打开
DROP PUBLIC SYNONYM public_emp;
当你删除一个同义词时,它的定义就会从数据字典中移除。与此同时,与之相关的所有对象依然存在,但是,他们的状态都变为无效(不可用)。
oracle mysql 同义词_Oracle中的同义词SYNONYM相关推荐
- oracle sql为null值,在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办
在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办? 1.MSSQL: ISNULL() 语法 ISNULL ( check_expression , replacem ...
- oracle mysql 卸载_Oracle完全卸载详解
Oracle数据库的安装这里就不说了,网上应该有很多,但是oracle数据库的卸载却找不到一个比较详细的完整卸载的说明.很多卸载不完全,会有遗留数据,影响后续的安装.所以自己整理一份以前上学的时候学习 ...
- oracle mysql 同义词_Oracle数据库创建同义词(synonym)详细讲解
1.1数据库创建同义词(synonym) Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系.它可以节省大量的数据库空间,对不同用户的操作同一张表没 ...
- oracle mysql 安全性_oracle mysql语句
一.oracle 常用相关sql 语句 1. 连接数据库 su - oracle -c " sqlsplus 用户/密码 注:首次登陆用 sqlplus / as sysdba 注 ...
- oracle mysql 适配器_Oracle协议适配器错误解决办法
在Oracle中新建了一个数据库,今天把它删了之后再登录SQL*PLUS就登不上去了,出现ORA-12560:TNS:协议适配器错误. ORA-12560: TNS: 协议适配器错误的解决方法 造成O ...
- oracle mysql 付费_oracle数据库要钱的吗?
展开全部 Oracle软件本身是免费的,所以任何人都可以从Oracle官方32313133353236313431303231363533e59b9ee7ad9431333431366365网站下载并 ...
- rono在oracle的作用_oracle中rownum作用及用法
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀 ...
- date oracle 显示毫秒_Oracle中根据Date型转换成Java对应的long型毫秒数
在Java开发中,很多时候我们为了方便会直接使用long型来保存时间,可以通过System.currentTimeMillis()或者是java.util.Date.getTime()来获取:取值为当 ...
- Plsql运行mysql脚本_oracle中PLSQL语句
1.set autot off 禁止使用autotrace命令 set autot on 这个命令包括exp 和 stat(执行语句.生成explain plan.生成统计信息) set autot ...
- oracle mysql 字段_Oracle和MySQL修改字段
一.修改字段名: Oracle: ALTER TABLE tableName RENAME COLUMN oldColumnName TO newColumnName; eg: ALTER TABLE ...
最新文章
- YML(2)yml 语法
- Paper2:Fast 3D Line Segment Detection From Unorganized Point Cloud
- IntelliJ IDEA 2020.2.4款 神级超级牛逼插件推荐
- windows下使用cmake编译zlib与libpng libjpeg 留此备份
- apache httpclient 工具类_Httpclient实现文件上传、文件下载看这篇文章就够了
- 遇见那个对的人,便是爱情
- Sublime Text2 常用快捷键
- 进击的UI------------网络判断
- 8051系列单片机汇编语言指令速查表(汇编语言的111条指
- 如何在 ASP.NET Core 中使用 URL Rewriting 中间件
- MiseringThread.java 解析页面线程
- 构造函数及其参数列表初始化问题
- 真心干货:一起学习阿里巴巴数据中台实践!首次公开!
- php递归函数理解,详解php递归函数
- 临时邮箱,20分钟,30分钟,60分钟
- embed实现PDF文件预览
- 学习平面设计的去哪学,平面设计一般学多久:夏雨老师
- 安警官的IP地址是怎样定位到莽村附近的?
- 学习django教程一
- N1盒子单臂路由设置