Oracle synonym 同义词
Oracle synonym 同義詞
1、Oracle synonym 同義詞是數據庫當前用戶通過給另外一個用戶的對象創建一個別名,然后可以通過對別名進行查詢和操作,等價于直接操作該數據庫對象。
2、Oracle同義詞常常是給表、視圖、函數、過程、包等制定別名,可以通過CREATE 命令進行創建、ALTER 命令進行修改、DROP 命令執行刪除操作。
3、Oracle synonym 同義詞按照訪問權限分為私有同義詞、公有同義詞。
4、私有同義詞:私有同義詞只能當前用戶可以訪問,前提:當前用戶具有create synonym 權限。
5、公有同義詞:公有同義詞只能具有DBA用戶才能進行創建,所有用戶都可以訪問的。
語法結構:
CREATE [OR REPLACE] [PUBLIC] SYSNONYM [當前用戶.]synonym_nameFOR [其他用戶.]object_name;
解析:
1、create [or replace] 命令create建表命令一樣,當當前用戶下同義詞對象名已經存在的時候,就會刪除原來的同義詞,用新的同義詞替代上。
2、[public]:創建的是公有同義詞,在實際開發過程中比較少用,因為創建就代表著任何用戶都可以通過自己用戶訪問操作該對象,一般我們訪問其他用戶對象時,需要該用戶進行授權給我們。
3、用戶名.object_name:oralce用戶對象的權限都是自己用戶進行管理的,需要其他用戶的某個對象的操作權限,只能通過對象擁有者(用戶)進行授權給當前用戶。或者當前用戶具有系統管理員權限(DBA),即可通過用戶名.object_name操作該對象。
案例分析:
我們在school用戶下也創建了一張學生信息表(stuinfo),該信息表只存在一個學生信息“張三”。由于我們當前用戶student用戶不具有school.stuino的權限,因此要需要該用戶授權,然后才能訪問。
操作如下:
1、--未授權之前查詢(提示表不存在,沒有操作權限)select * from school.stuinfo;
2、--登錄jsq_copy用戶進行授權?conn school/123456;??grant all on stuinfo to student;
3、--授權后再次查詢該表數據?conn student/123456;??select * from school.stuinfo;?
同義詞創建
我們現在為school.stuinfo創建同義詞stuinfo_copy,然后通過當前用戶student直接操作同義詞stuinfo_copy查詢school.stuinfo表數據。
代碼如下:
create synonym stuinfo_copy for school.stuinfo;
創建同義詞之后,即可使用select *from?stuinfo_copy 進行查詢,效果等同于select *from?school.stuinfo。同義詞刪除
同義詞刪除只能通過同義詞擁有者的用戶或者具有DBA權限的用戶才能刪除。
語法結構:
DROP [PUBLIC] SYNONYM [用戶.]sysnonym_name;
轉載于:https://www.cnblogs.com/sinosoft/p/10767210.html
總結
以上是生活随笔為你收集整理的Oracle synonym 同义词的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从入侵到变现——“黑洞”下的黑帽SEO分
- 下一篇: nginx配置文件详细解读