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:創建一個用戶sytest,該用戶擁有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 sytest IDENTIFIED BY tiger;  
User created 
SQL> GRANT CONNECT,resource TO sytest
Grant succeeded 
SQL> GRANT CREATE SYNONYM TO XiaoMei; 
Grant succeeded
SQL> CONN sytest/tiger@ORCL;
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 
Connected as sytest 
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 sytest;  
Grant succeeded 
SQL> CONNECT  sytest/tiger @ORCL;
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 
Connected as sttest
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
代碼解析:
① 在管理員用戶下創建用戶 sytest,對用戶sytest授予CONNECTRESOURCE角色。爲了 sytest能夠創建序列,必須授予系統權限:CREATE SYNONYM
②  sytest用戶下,爲SCOTT.EMP創建私有同義詞MyEmp,同義詞MyEmp只能在 sytest用戶下使用。訪問MyEmp就是訪問SCOTT.EMP對象。
③ 訪問MyEmp對象出錯:對象不存在。因爲 sytest如果訪問MyEmp,就相當於訪問SCOTT.EMP對象,那麼SCOTT用戶必須對 sytest授予相應的權限。
④ SCOTT用戶下,把EMP表的所有權限(增刪改查)授予 sytest
⑤ MyEmp執行查詢操作。MyEmp就可以像在本地的表一樣使用。
刪除同義詞使用的語法是:
語法結構:刪除同義詞
DROP [PUBLIC] SYNONYM [schema.]sysnonym_name 
語法解析:
① PUBLIC:刪除公共同義詞。
② 同義詞的刪除只能被擁有同義詞對象的用戶或者管理員刪除。
③ 此命令只能刪除同義詞,不能刪除同義詞下的源對象。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章