同義詞的概念:
同義詞是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視圖中