首页 > 代码库 > SQL基础--同义词

SQL基础--同义词

同义词的概念:

   同义词是Oracle对象的别名,使用同义词访问相同的对象

    可以为表、视图、存储过程、函数或另一同义词等对象创建同义词

    方便访问其它用户的对象,隐藏了对象的身份

    缩短对象名字的长度

 

同义词创建语法:

  CREATE [PUBLIC] SYNONYM synonym_name  FOR  object;

 

创建和删除同义词的权限:

  •    CREATE ANY SYNONYM
  •        CREATE PUBLIC SYNONYM
  •    DROP PUBLIC SYNONYM
  •         DROP ANY SYNONYM

 

创建同义词举例:

SQL> conn / as sysdba
已连接。

SQL> grant create public synonym to scott;

授权成功。

SQL> grant create any synonym to scott;

授权成功。

SQL> conn scott/tiger
已连接。
  
SQL> create public synonym mydept for dept;    ##创建公有同义词,其它用户也可以访问

同义词已创建。

SQL> create  synonym mydept for dept;      ##创建私有同义词,只有Scott才可以访问,与公共同义词同名,并没有报错

同义词已创建。

 

 

删除同义词:

 

SQL> drop public synonym mydept;

同义词已删除。

SQL> select * from mydept;   ##删除共有同义词,私有的还在

    DEPTNO DNAME      LOC
---------- -------------- -------------
    10 ACCOUNTING      NEW YORK
    20 RESEARCH      DALLAS
    30 SALES      CHICAGO
    40 OPERATIONS      BOSTON

SQL> drop synonym mydept;
同义词已删除。
SQL
> select * from mydept; select * from mydept *1 行出现错误: ORA-00942: 表或视图不存在

 

 

 

 

查看同义词视图:

SQL> select * from user_synonyms;

SYNONYM_NAME               TABLE_OWNER              TABLE_NAME
------------------------------ ------------------------------ ------------------------------
DB_LINK
------------------------------------------------------------------------------------------------------------------------
MYDEPT                   SCOTT                  DEPT

SQL> conn / as sysdba
已连接。

SQL> SELECT synonym_name,table_owner,table_name FROM dba_synonyms  WHERE table_name = DEPT;

SYNONYM_NAME               TABLE_OWNER              TABLE_NAME
------------------------------ ------------------------------ ------------------------------
MYDEPT                   SCOTT                      DEPT
MYDEPT                   SCOTT                       DEPT

 注意:创建的公共同义词没有出现在user_synonyms视图中

 

 

SQL基础--同义词