SQL语句(9)--- 同义词

1. 私有同义词:普通用户在自己模式下创建的同义词

       SQL> create synonym SYNONYMNAME for TABLE;

私有同义词需要授权给其他用户,其他用户才可以查看,授权后,其他用户不仅可以访问同义词,也可以访问基表,反之亦然。

2. 共有同义词:管理员创建,需要有 CREATE PUBLIC SYNONYM权限

          SQL> create public synonym SYNONYMNAME for TABLE;

共有同义词需要授权给其他用户,其他用户才可以查看,授权后,其他用户不仅可以访问同义词,也可以访问基表,反之亦然。

3. 如果存在私有同义词和共有同义词同名的情况,则优先访问私有同义词。

SQL> conn sys/oracle@erp as sysdba
Connected.

SQL> create table temp as select empno,ename from scott.emp where deptno=10;

Table created.

SQL> create table temp1 as select empno,ename from scott.emp where deptno=20;

Table created.

SQL> create synonym a for temp;

Synonym created.

SQL> create public synonym a for temp1;

Synonym created.

SQL> select OWNER,SYNONYM_NAME,TABLE_NAME from dba_synonyms where SYNONYM_NAME='A' ;

OWNER SYNONYM_NA TABLE_NAME
----------    ----------              ----------
SCOTT     A                 EMP
SYS          A                        TEMP
PUBLIC    A                        TEMP1

SQL> select * from a;

EMPNO ENAME
---------- --------------------
7782   CLARK
7839   KING
7934   MILLER

SQL> select * from temp;

EMPNO ENAME
---------- --------------------
7782   CLARK
7839   KING
7934   MILLER

SQL>

原文地址:https://www.cnblogs.com/eniniemand/p/14054646.html