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;
更多Oracle相關資訊見 Oracle 專題頁面 https://www.linuxidc.com/topicnews.aspx?tid=12
Linux公社的RSS地址 :https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址:https://www.linuxidc.com/Linux/2019-04/158340.htm