zoukankan      html  css  js  c++  java
  • Oracle同义词(Synonym)创建删除

    Oracle对象知识:同义词(Synonym)创建删除,同义词(Synonym)是数据库对象的一个别名,Oracle可以为表、视图、序列、过程、函数、程序包等指定一个别名。同义词有两种类型:

    `私有同义词:拥有CREATE SYNONYM权限的用户(包括非管理员用户)即可创建私有同义词,创建的私有同义词只能由当前用户使用。

    `公有同义词:系统管理员可以创建公有同义词,公有同义词可以被所有用户访问。

    创建同义词的语法是:

    语法结构:同义词

    CREATE [OR REPLACE] [PUBLIC] SYSNONYM [schema.]synonym_name

    FOR [schema.]object_name

    语法解析:

    ① CREATE [OR REPLACE:]表示在创建同义词时,如果该同义词已经存在,那么就用新创建的同义词代替旧同义词。

    ② PULBIC:创建公有同义词时使用的关键字,一般情况下不需要创建公有同义词。

    ③ Oracle中一个用户可以创建表、视图等多种数据库对象,一个用户和该用户下的所有数据库对象的集合称为Schema(中文称为模式或者方案),用户名就是Schema名。一个数据库对象的全称是:用户名.对象名,即schema.object_name。

    如果一个用户有权限访问其他用户对象时,就可以使用全称来访问。比如:

    代码演示:System用户访问Scott用户的Emp表

    SQL> conn system/manager@orcl;

    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0

    Connected as system

     

    SQL>  SELECT ENAME,JOB,SAL FROM SCOTT.EMP WHERE SAL>2000;  ①

     ENAME

    JOB

    SAL

    JONES

    MANAGER

    2975

    BLAKE

    MANAGER

    2850

    CLARK

    MANAGER

    2450

    SCOTT

    ANALYST

    3000

    KING

    PRESIDENT

    5000

    FORD

    ANALYST

    3000

     6 rows selected

    代码解析:

    ① 管理员用户可以访问任何用户的数据库对象,SYSTEM用户访问SCOTT用户的EMP表时,必须使用SCOTT.EMP。

    案例1:创建一个用户XiaoMei,该用户拥有CONNECT角色和RESOURCE角色。为SCOTT用户的EMP表创建同义词,并通过同义词访问该EMP表。

    代码演示:创建同义词并访问

    SQL> CONN system/manager@orcl;

    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0

    Connected as system

    SQL> CREATE USER XiaoMei IDENTIFIED BY XiaoMei;  ①

    User created

    SQL> GRANT CONNECT TO XiaoMei;

    Grant succeeded

    SQL> GRANT RESOURCE TO XiaoMei;

    Grant succeeded

    SQL> GRANT CREATE SYNONYM TO XiaoMei;

    Grant succeeded

     

    SQL> CONN XiaoMei/XiaoMei@ORCL;

    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0

    Connected as XiaoMei

     

    SQL> CREATE SYNONYM MyEmp FOR SCOTT.EMP;  ②

    Synonym created

    SQL> SELECT * FROM MYEMP;  ③

    SELECT * FROM MYEMP

    ORA-00942: 表或视图不存在

     

    SQL> CONNECT SCOTT/tiger@ORCL

    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0

    Connected as SCOTT

     

    SQL> GRANT ALL ON EMP TO XiaoMei;  ④

    Grant succeeded

     

    SQL> CONNECT XiaoMei/XiaoMei@ORCL;

    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0

    Connected as XiaoMei

     

    SQL>  SELECT ENAME,JOB,SAL FROM MyEmp WHERE SAL>2000;  ⑤

     ENAME

    JOB

    SAL

    JONES

    MANAGER

    2975

    BLAKE

    MANAGER

    2850

    CLARK

    MANAGER

    2450

    SCOTT

    ANALYST

    3000

    KING

    PRESIDENT

    5000

    FORD

    ANALYST

    3000

     6 rows selected

    代码解析:

    ① 在管理员用户下创建用户XiaoMei,对用户XiaoMei授予CONNECT和RESOURCE角色。为了XiaoMei能够创建序列,必须授予系统权限:CREATE SYNONYM。

    ② 在XiaoMei用户下,为SCOTT.EMP创建私有同义词MyEmp,同义词MyEmp只能在XiaoMei用户下使用。访问MyEmp就是访问SCOTT.EMP对象。

    ③ 访问MyEmp对象出错:对象不存在。因为XiaoMei如果访问MyEmp,就相当于访问SCOTT.EMP对象,那么SCOTT用户必须对XiaoMei授予相应的权限。

    ④ SCOTT用户下,把EMP表的所有权限(增删改查)授予XiaoMei。

    ⑤ 对MyEmp执行查询操作。MyEmp就可以像在本地的表一样使用。

    删除同义词使用的语法是:

    语法结构:删除同义词

    DROP [PUBLIC] SYNONYM [schema.]sysnonym_name

    语法解析:

    ① PUBLIC:删除公共同义词。

    ② 同义词的删除只能被拥有同义词对象的用户或者管理员删除。

    ③ 此命令只能删除同义词,不能删除同义词下的源对象。

    转自:https://www.cnblogs.com/oraclestudy/articles/5779180.html

  • 相关阅读:
    Java实现 LeetCode 649 Dota2 参议院(暴力大法)
    Java实现 LeetCode 648 单词替换(字典树)
    Java实现 LeetCode 648 单词替换(字典树)
    php getimagesize 函数
    PHP gd_info
    PHP 5 时区
    PHP zip_read() 函数
    PHP zip_open() 函数
    滚动界限终点 | scroll-snap-destination (Scroll Snap)
    滚动界限种类 | scroll-snap-type (Scroll Snap)
  • 原文地址:https://www.cnblogs.com/turnip/p/12786919.html
Copyright © 2011-2022 走看看