一、同义词概念
     Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系。它可以节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。在Oracle数据库中的大部分数据库对象,如表、视图、物化视图、序列、函数、存储过程、包、同义词等等,数据库管理员都可以根据实际情况为他们定义同义词。
二、同义词分类
    Oracle同义词有两种类型,分别是Oracle公用同义词与Oracle私有同义词。普通用户创建的同义词一般都是私有同义词,公有同义词一般由DBA创建,普通用户如果希望创建同义词,则需要CREATE PUBLIC SYNONYM这个系统权限。
      1)Oracle公用同义词:由一个特殊的用户组Public所拥有。顾名思义,数据库中所有的用户都可以使用公用同义词。公用同义词往往用来标示一些比较普通的数据库对象,这些对象往往大家都需要引用。
      2)Oracle私有同义词:它是跟公用同义词所对应,他是由创建他的用户所有。当然,这个同义词的创建者,可以通过授权控制其他用户是否有权使用属于自己的私有同义词。
三、同义词作用
      1) 多用户协同开发中,可以屏蔽对象的名字及其持有者。如果没有同义词,当操作其他用户的表时,必须通过user名.object名的形式,采用了Oracle同义词之后就可以隐蔽掉user名,当然这里要注意的是:public同义词只是为数据库对象定义了一个公共的别名,其他用户能否通过这个别名访问这个数据库对象,还要看是否已经为这个用户授权。
      2) 为用户简化sql语句。上面的一条其实就是一种简化sql的体现,同时如果自己建的表的名字很长,可以为这个表创建一个Oracle同义词来简化sql开发。比如,如果你的数据库有多个用户,USER_A要访问USER_B的TABLE1,只能使用USER_B.TABLE1,建一个同义词abc指向USER_B.TABLE1,那你就可以select * from abc了,而且public的同义词会直接出现在所有用户的面前,开发不就方便多了
      3)为分布式数据库的远程对象提供位置透明性。
      4)Oracle同义词在数据库链接中的作用
          数据库链接是一个命名的对象,说明一个数据库到另一个数据库的路径,通过其可以实现不同数据库之间的通信。
          Create database link 数据库链名 connect to user名 identified by 口令 using ‘Oracle连接串’; 访问对象要通过 object名@数据库链名。同义词在数据库链中的作用就是提供位置透明性。
四、同义词权限管理
     1、创建同义词synonym
        作用:可以隐藏表原来的信息
        分为:私有同义词 公共同义词
         //给表t_user创建一个私有同义词
        create synonym my_test
        for t_user;         
        //给用户briup授权可以查询my_test
        grant select  
        on my_test  
        to briup;  
        //收回用户briup查询my_test的权限
        revoke select  
        on my_test  
        from briup;         
        //利用数据字典查看同义词synonyms
        //用户创建的同义词有哪些
        select synonym_name
        from user_synonyms;
        //用户有权利查询的同义词有哪些
        select synonym_name
        from all_synonyms;
        //用户有权利查询的同义词有哪些是以字母D开头的
        //注意:表中的数据都是大写存在
        select synonym_name
        from all_synonyms
        where synonym_name like 'D%';
        结果可以看到我们常用的dual
    2.删除同义词synonym
        drop synonym name;
        例如:
        删除私有同义词
        drop synonym my_test;
        删除公共同义词
        drop public synonym your_test;    
    3.公共的同义词
        因为普通用户没有创建public synonym的权限,所以我们需要用dba的身份登录到数据库中去创建。
        sqlplus "/as sysdba"或者system用户登录
        create public synonym your_test
        for test.t_user;
        注:test.t_user表示的是test用户下面的t_user表
        //让所有人都有查询这个同义词的权限
        grant select on your_test to public;
        然后其他用户登录之后就可以通过这个公共的同义词来查询test用户下面的t_user表了

Oracle中的同义词synonym相关推荐

  1. Oracle中创建同义词

    Oracle中创建同义词语句: 我们都知道,在oracle中对用户的管理是使用权限的方式来管理的,也就是说,如果我们想使用数据库,我们就必须得有权限,但是如果是别人将权限授予了我们,我们也是能对数据库 ...

  2. 数据库中的同义词synonym

    这篇文章讲的是数据库中的同义词synonym,如有错误或不当之处,还望各位大神批评指正. 什么是同义词 同义词相当于是对象的小名,作用是缩短对象的长度,便于书写与访问. 同义词的创建 假设有表s_st ...

  3. oracle vs. SQL 同义词synonym 别名 alias

    oracle 同义词 synonym 为数据库对象建立同义词后,当dba对数据库对象(table,view,序列)做了一个简单改动之后,如名字或者结构改变,则不需要重新更改并编译应用.在数据库字典中有 ...

  4. oracle中private同义词和public同义词

    项目中遇到,遂从网上搜索了下,觉得如下解释较为通俗易懂: 假设oracle有以下两个用户: admin , visitor 我们在admin下建立了 testtable 这个表,并且对visitor用 ...

  5. Oracle数据库之同义词(SYNONYM)使用

    本教程用示例来说明在Oracle数据中如何创建和删除同义词(SYNONYM). 概念 同义词是指数据库对象(表.视图.序列.存储过程等数据库对象)用另一个名字来引用.比如: 建立一个同义词可以排除一个 ...

  6. Oracle数据库之同义词(SYNONYM)使用(转)

    最近在公司听到同义词,不是很懂,甚是尴尬,决定看了一看 从网上看了看资料 同义词是指数据库对象(表.视图.序列.存储过程等数据库对象)用另一个名字来引用.比如: 建立一个同义词可以排除一个对象名字的限 ...

  7. oracle中的同义词

    同义词是现有对象的一个别名,是为了简化SQL语句,亦或者是隐藏对象的名称和所有者,提供对象的公共访问等等. 1.同义词的类型 : 分为两大类 :私有同义词 synonym 只能在其模式内访问,不能与模 ...

  8. oracle中创建同义词(synonyms)表

    一.同义词概念和作用. Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系. 同义词作用之一:多用户的数据库中,有时候访问其他用户的表必须通过use ...

  9. oracle中同义词的用法,Oracle中使用同义词介绍

    一.背景 有两个sid:Asid,Bsid,在Asid下有两个用户Auser1,Auser2,在Bsid下有一个用户Buser1.其中Auser2和Buser1建立了dblink.现希望通过登录Bus ...

最新文章

  1. 对Android GPS获取位置信息的新研究.
  2. MySql随笔part3 表操作
  3. SpringMVC请求流程
  4. 拿下字节offer,这些面试题命中率高达90%以上
  5. 从Centos7升级到Centos8的教程(图文详解)
  6. 第一:MySQL安装和配置(超详细)
  7. 典型重构3 (Try/Catch)
  8. web 流程图工具_要什么第三方流程图制作软件,微软的Visio 2016不香吗?
  9. mysql书籍知识点梳理3(数据与表)
  10. Unity 窗口界面的简单介绍
  11. JavaScript设计模式——观察者模式
  12. VMware虚拟机装系统出现Units specified dont exist
  13. 一场雨我们的见证了什么?
  14. oracle ko16mswin949,PRM DUL Oracle数据库恢复的最后一步
  15. ABB机器人画圆编程_ABB机器人使用rapid编程中问号的用法及画整圆指令
  16. Excel的照相机功能(转载+亲自实践)
  17. 利用convert【ImageMagick】把pdf批量转换为图片踩坑(gs报错和清晰度问题)
  18. Java程序界面设计
  19. 【IoT】创业:如何设计强有力的价值主张?
  20. Android 展讯-关闭IP拨号功能

热门文章

  1. Maven工具栏消失的解决办法
  2. 转载 jacob Dispatch not hooked to windows memory 异常处理
  3. 安卓车机root改流浪地球_随时代替安卓!华为鸿蒙系统正式发布,你手机里早就有了.......
  4. eclipse theia_如何在Ubuntu 18.04上设置Eclipse Theia Cloud IDE平台
  5. 18.我在乐字节学习的第六天(Java)
  6. 防火墙,如何理解防火墙,他与堡垒机的差别
  7. 便民,合格证自助打印一体机投用,只花一分钟即可实现领取实体证
  8. v11.03 鸿蒙内核源码分析(内存分配) | 内存有哪些分配方式 | 百篇博客分析HarmonyOS源码
  9. 独家 | Google 资深软件工程师 LeetCode 刷题笔记首次公开
  10. 最长公共子序列【省选模拟赛】