(一)同義詞的概念
同義詞是數據庫中表、視圖、索引或其他模式對象的別名,與視圖相似,同義詞不占用實際的存儲空間,在數據字典中只存同義詞的定義。
在開發數據庫時,應盡量避免直接引用表、視圖或其他數據庫對象,否則,當表的結構發生了改變,就會影響應用程序的使用,這個時候需要重新編譯程序,如果為數據庫對象創建了同義詞,就可以在程序中使用同義詞,這樣表的結構發生變化,也不會影響到應用程序。此外,運用同義詞還可以隱藏數據庫對象名稱以及對象所有者的信息,還可以簡化對數據庫對象的訪問。
(二)同義詞分類
同義詞分為私有同義詞和公有同義詞,私有同義詞只能被創建他的用戶擁有,該用戶可以控制其他用戶對其同義詞的使用權。公有同義詞被用戶組PUBLIC所擁有,數據庫所有用戶都可以使用共有同義詞。
(三)同義詞相關權限
(1)系統權限:
SYSTEM PRIVILEGE | MARK |
CREATE SYNONYM | 在當前Schema中創建私有同義詞。同時可以修改、刪除同義詞 |
CREATE PUBLIC SYNONYM | 在當前 Schema中創建公有同義詞 |
CREATE ANY SYNONYM | 在任意Schema中創建私有同義詞 |
DROP ANY SYNONYM | 刪除任意Schema中的私有同義詞 |
DROP PUBLIC SYNONYM | 刪除當前Schema中的公有同義詞 |
(2)對象權限
無(不確定)
(四)同義詞的使用
(1)創建同義詞
CREATE [OR REPLACE] [PUBLIC] SYNONYM synonym_name FOR [Schema.]object;
(2)使用同義詞
用戶可以使用自己Schema中的同義詞,也可以使用PUBLIC同義詞,還可以使用其他Schema中的同義詞,但是用戶還必須具有與同義詞對應的數據庫對象的操作權限。
(3)刪除同義詞
DROP [PUBLIC] SYNONYM synonym_name
*用戶可以刪除自己Schema下的私有同義詞,要刪除公有同義詞,需具有DROP PUBLIC SYNONYM權限,要刪除其它Schema中的同義詞,需要具有DROP ANY SYNONYM權限。
(5)與同義詞相關的數據字典
VIEW | MARK |
DBA_SYNONYMS | 查看數據庫全部同義詞 |
ALL_SYNONYMS | 查看當前用戶可以看到的全部同義詞 |
USER_SYNONYMS | 查看當前用戶擁有的同義詞 |