Oracle的sql基本语法总结(3)-- Oracle synonym 同义词的创建、查看、删除、作用
目录
一、Oracle synonym 同义词
语法结构:
案例解析:
--基础准备与说明:
synonym 同义词创建:
创建同义词补充说明(远程操作)
二、Oracle synonym 同义词作用
一、Oracle synonym 同义词
Oracle synonym 同义词是数据库当前用户通过给另外一个用户的对象创建一个别名,然后可以通过对别名进行查询和操作,等价于直接操作该数据库对象。Oracle同义词常常是给表、视图、函数、过程、包等制定别名,可以通过CREATE 命令进行创建、ALTER 命令进行修改、DROP 命令执行删除操作。
Oracle synonym 同义词按照访问权限分为私有同义词、公有同义词。
- 私有同义词:私有同义词只能当前用户可以访问,前提:当前用户具有create synonym 权限。
- 公有同义词:公有同义词只能具有DBA角色(如:system)的用户才能进行创建,所有用户都可以访问的。
语法结构:
CREATE [OR REPLACE] [PUBLIC] SYSNONYM [当前用户.]synonym_name
FOR [其他用户.]object_name;
语法解析:
- 1.create [or replace] 命令创建,加上 or replace 表示如果存在就替换,慎用。
- 2.[public]:创建的是公有同义词,在实际开发过程中少用,创建公有就代表着任何用户都可以通过自己用户访问操作该对象,一般我们访问其他用户对象时,需要该用户进行授权给我们。
- 3.用户名.object_name:oralce用户对象的权限都是自己用户进行管理的,需要其他用户的某个对象的操作权限,只能通过对象拥有者(用户)进行授权给当前用户。或者当前用户具有系统管理员权限(DBA),即可通过用户名.object_name操作该对象
案例解析:
--基础准备与说明:
①创建一个普通用户jalen01
create user jalen01 identified by "a123456";
②授予连接登陆权限
grant create session to jalen01;
③连接jalen01用户测试,现在表空间里什么都没有,没有给该用户授权添加表空间的权限
④登录scott用户,把scott下的emp表的所有操作权限给jalen01用户
grant all on scott.emp to jalen01;
⑤这时候虽然没有给jalen01表空间权限,但是通过scott用户的授权,jalen01用户可以操作scott.emp表,但其他表依然无法操作(如scott.dept)。
⑥现在用管理员用户给jalen01授予操作表空间和表的权限,再次登陆jalen01看看就有scott.emp表存在
grant unlimited tablespace to jalen01;
grant create table to jalen01; --为了方便测试也给jalen01用户授予操作表的权限
synonym 同义词创建:
① 登陆到scott用户,给表emp和dept分别创建同义词
create synonym emp_copy for scott.emp; --私有同义词
create synonym dept_copy for scott.dept; --私有同义词
create public synonym dept_copy01 for scott.dept; --公有同意词
②在scott用户下访问同义词的三个表,均可以查询
select * from emp_copy;
select * from dept_copy;
select * from dept_copy01;
③登陆到jalen01用户下,查看这三个同义词表,结果发现普通用户不管是私有的还是共有的都没权访问
select * from emp_copy;
select * from dept_copy;
select * from dept_copy01;
④除了同义词,jalen01用户还需有对scott用户下表的访问权限,切换到管理员用户下授权
grant all on emp_copy to jalen01;
grant all on dept_copy to jalen01;
grant all on dept_copy01 to jalen01;
⑤再次登陆到jalen01用户下,查看这三个同义词表,这时候发现私有的同义词其他用户依然是不能访问的,但公有的同义词授权后其他用户可以访问。
select * from emp_copy;
select * from dept_copy;
select * from dept_copy01;
⑥只要是授予了create synonym 的用户均可以给其他(有访问权)的用户创建synonym,drop synonym同理
删除synonym的语法:DROP
[
PUBLIC
] SYNONYM [用户.]sysnonym_name;
创建同义词补充说明(远程操作)
如果要创建远程数据库上的一张表的同义词,需要先创建一个Database Link(数据库连接)来扩展访问,然后在使用如下语句创建数据库同义词:create synonym table_name for table_name@DB_Link;
必须给在user用户中给当前用户(jalen01)授权: 操作(增删改查)表、synonym的权限
创建同义词SQL语句:create [public] synonym table_name for jalen01.table_name;
二、Oracle synonym 同义词作用
oracle中对用户的管理是使用权限的方式来管理的,当前用户要使用数据库必须要有权限,有权限对表进行的操作时必须在表的前面所有者的名称,如select * from user1.table1,当我们建一个同义词后可以直接使用select * from table1对数据库表进行操作。于是,同义词有如下优点:
- 1)多用户协同开发中,可以屏蔽对象的名字及其持有者。如果没有同义词,当操作其他用户的表时,必须通过user名.object名的形式,采用了Oracle同义词之后就可以隐蔽掉user名,当然这里要注意的是:public同义词只是为数据库对象定义了一个公共的别名,其他用户能否通过这个别名访问这个数据库对象,还要看是否已经为这个用户授权。
- 2) 为用户简化sql语句。上面的一条其实就是一种简化sql的体现,同时如果自己建的表的名字很长,可以为这个表创建一个Oracle同义词来简化sql开发。
- 3)为分布式数据库的远程对象提供位置透明性。
Oracle的sql基本语法总结(3)-- Oracle synonym 同义词的创建、查看、删除、作用相关推荐
- Oracle PL/SQL基础语法学习13:比较运算符
系列文章目录 Oracle PL/SQL基础语法学习12:短路求值 Oracle PL/SQL基础语法学习13:比较运算符 Oracle PL/SQL基础语法学习14:BOOLEAN表达式 文章目录 ...
- [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)...
[强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天才在于积累!) --通过知识共享树立个人品牌. 继上七篇: [推荐]ORACLE P ...
- oracle同义词删除重建,Oracle同义词的创建与删除
用户可以在自己的模式中创建同义词,这需要具有CREATE SYNONYM这个系统权限.如果希望在其他用户的模式中创建同义词,则需要具有CREATE ANY SYNONYM这个系统权限.普通用户创建的同 ...
- oracle怎么给表建同义词_Oracle同义词的创建与删除
用户可以在自己的模式中创建同义词,这需要具有CREATE SYNONYM这个系统权限.如果希望在其他用户的模式中创建同义词,则需要具有CREATE ANY SYNONYM这个系统权限.普通用户创建的同 ...
- oracle防止sql注入proc,解密:Oracle怎么防SQL注入
昨天我们说了怎么绕过waf进行sql注入,今天我们继续这个话题,说说Oracle数据库本身在防sql注入方面做了哪些工作. Oracle从8i开始PL/SQL中涌现出了大量SQL注入漏洞,直至11.2 ...
- Oracle中sql中unload的用法,Oracle跟Informix中load、unload
当前位置:我的异常网» Informix » Oracle跟Informix中load.unload Oracle跟Informix中load.unload www.myexceptions.net ...
- oracle 隐藏视图定义,【学习笔记】show hidden parameter 创建查看隐藏参数视图
天萃荷净 分享一篇开发DBA常用的show hidden parameter,创建查看隐藏参数视图的案例步骤 1.创建查看隐藏参数视图(show_hidden_v$parameter) --conn ...
- 2019-7-26 [MySQL] 安装与介绍 语句分类/语法 数据类型 DDL数据定义:创建/查看/删除/使用 DML数据操作:增删改 主键约束 自动增长列 非空约束 默认值 Navicat
文章目录 0.知识回顾 1.数据库介绍 1.1 数据库概述 1.1.1 什么是数据库 1.1.2 什么是数据库管理系统 1.1.3 数据库与数据库管理系统的关系 1.2 数据库表 1.3 表数据 1. ...
- oracle学习 sql基本语法(三),Oracle数据库学习三
5.DML DML 语句 语句操作语言 INSERT UPDATE DELETE MERGE INSERT 方法: 按顺序列插入 按指定列插入 default值插入 子查询(代替values)结果插入 ...
- server数据库与oracle,浅析Oracle和SQL Server-数据库专栏,ORACLE
t-sql是sql server的语言引擎,而oracle的语言引擎却是plsql.这两种查询语言都对ansi sql-92标准进行了扩展以提供额外的支持力度.你所创建的应用程序几乎都要用到这些补充特 ...
最新文章
- JFrame中使用jpanel来布局
- nginx之Geoip读取地域信息模块
- 【JavaScript】理解与使用Javascript中的回调函数
- [蓝桥杯]算法提高 道路和航路(spfa+deque+快读优化)
- 【收集】Python 微优化
- ROLAP、MOLAP和HOLAP联机分析处理区别
- 可太惨了吧!乐视网临时股东大会仅两位董事会成员出席,6分钟内结束
- vue中的传参的两种方式
- 拓端tecdat|R语言使用Bass模型进行手机市场产品周期预测
- Xshell连接服务器编写代码(windows+Xshell+阿里云主机)
- 一名Android程序员的自我修养
- Python实例:小游戏20148
- matlab数字信号处理常用函数
- 01Linux之计算机硬件软件介绍
- regionserver.HRegionServerCommandLine: Region server exiting
- MT【129】常数变易法
- 分享电脑便捷妙招,电脑小白们快码住
- 做好自动化运维平台必备技能
- pycharm编辑器如何用鼠标滚轮随时放大缩小代码
- java 前后台json的传递