目录

一、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 同义词的创建、查看、删除、作用相关推荐

  1. Oracle PL/SQL基础语法学习13:比较运算符

    系列文章目录 Oracle PL/SQL基础语法学习12:短路求值 Oracle PL/SQL基础语法学习13:比较运算符 Oracle PL/SQL基础语法学习14:BOOLEAN表达式 文章目录 ...

  2. [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)...

    [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天才在于积累!) --通过知识共享树立个人品牌.   继上七篇:            [推荐]ORACLE P ...

  3. oracle同义词删除重建,Oracle同义词的创建与删除

    用户可以在自己的模式中创建同义词,这需要具有CREATE SYNONYM这个系统权限.如果希望在其他用户的模式中创建同义词,则需要具有CREATE ANY SYNONYM这个系统权限.普通用户创建的同 ...

  4. oracle怎么给表建同义词_Oracle同义词的创建与删除

    用户可以在自己的模式中创建同义词,这需要具有CREATE SYNONYM这个系统权限.如果希望在其他用户的模式中创建同义词,则需要具有CREATE ANY SYNONYM这个系统权限.普通用户创建的同 ...

  5. oracle防止sql注入proc,解密:Oracle怎么防SQL注入

    昨天我们说了怎么绕过waf进行sql注入,今天我们继续这个话题,说说Oracle数据库本身在防sql注入方面做了哪些工作. Oracle从8i开始PL/SQL中涌现出了大量SQL注入漏洞,直至11.2 ...

  6. Oracle中sql中unload的用法,Oracle跟Informix中load、unload

    当前位置:我的异常网» Informix » Oracle跟Informix中load.unload Oracle跟Informix中load.unload www.myexceptions.net  ...

  7. oracle 隐藏视图定义,【学习笔记】show hidden parameter 创建查看隐藏参数视图

    天萃荷净 分享一篇开发DBA常用的show hidden parameter,创建查看隐藏参数视图的案例步骤 1.创建查看隐藏参数视图(show_hidden_v$parameter) --conn ...

  8. 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. ...

  9. oracle学习 sql基本语法(三),Oracle数据库学习三

    5.DML DML 语句 语句操作语言 INSERT UPDATE DELETE MERGE INSERT 方法: 按顺序列插入 按指定列插入 default值插入 子查询(代替values)结果插入 ...

  10. server数据库与oracle,浅析Oracle和SQL Server-数据库专栏,ORACLE

    t-sql是sql server的语言引擎,而oracle的语言引擎却是plsql.这两种查询语言都对ansi sql-92标准进行了扩展以提供额外的支持力度.你所创建的应用程序几乎都要用到这些补充特 ...

最新文章

  1. JFrame中使用jpanel来布局
  2. nginx之Geoip读取地域信息模块
  3. 【JavaScript】理解与使用Javascript中的回调函数
  4. [蓝桥杯]算法提高 道路和航路(spfa+deque+快读优化)
  5. 【收集】Python 微优化
  6. ROLAP、MOLAP和HOLAP联机分析处理区别
  7. 可太惨了吧!乐视网临时股东大会仅两位董事会成员出席,6分钟内结束
  8. vue中的传参的两种方式
  9. 拓端tecdat|R语言使用Bass模型进行手机市场产品周期预测
  10. Xshell连接服务器编写代码(windows+Xshell+阿里云主机)
  11. 一名Android程序员的自我修养
  12. Python实例:小游戏20148
  13. matlab数字信号处理常用函数
  14. 01Linux之计算机硬件软件介绍
  15. regionserver.HRegionServerCommandLine: Region server exiting
  16. MT【129】常数变易法
  17. 分享电脑便捷妙招,电脑小白们快码住
  18. 做好自动化运维平台必备技能
  19. pycharm编辑器如何用鼠标滚轮随时放大缩小代码
  20. java 前后台json的传递

热门文章

  1. 计算机技术对艺术设计的影响,计算机对艺术设计有何影响
  2. SQL数据库连接失败
  3. Allegro PCB导入网表后,PCB规则变化怎么办?
  4. JS获取浏览器版本号
  5. python 从useragent中获取操作系统版本号以及浏览器的版本信息
  6. GEE|影像可视化|导出分类结果图像
  7. 电脑端实现微信双开(登录两个微信)
  8. java SE复习笔记61
  9. oracle db studay
  10. 不可用来编辑html的文件,Word2016