新聞中心
oracle中什么是同義詞,它有幾種類型,不同類型同義詞的區(qū)別是什么?并寫出語法?
1、私有同義詞
創(chuàng)新互聯(lián)專注于丹寨企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站定制開發(fā)。丹寨網(wǎng)站建設(shè)公司,為丹寨等地區(qū)提供建站服務(wù)。全流程按需求定制開發(fā),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
只能被當(dāng)前用戶訪問.
2、公有同義詞
可被所有的數(shù)據(jù)庫用戶訪問.
創(chuàng)建同義詞語法:
create [or replace] [public]
synonym 同義詞名稱
for [用戶名.]對象名;
注釋:[]中表示可寫、或不寫;[or replace]表示如果已經(jīng)有了你要創(chuàng)建的同義詞就取代/替換原有的同義詞;[public]表示是否把同義詞公有
oracle 同義詞
Oracle的同義詞(synonyms)從字面上理解就是別名的意思,和視圖的功能類似,就是一種映射關(guān)系。它可以節(jié)省大量的數(shù)據(jù)庫空間,對不同用戶的操作同一張表沒有多少差別;它擴展了數(shù)據(jù)庫的使用范圍,能夠在不同的數(shù)據(jù)庫用戶之間實現(xiàn)無縫交互;Oracle數(shù)據(jù)庫中提供了同義詞管理的功能。同義詞是數(shù)據(jù)庫對象的一個別名,經(jīng)常用于簡化對象訪問和提高對象訪問的安全性。在使用同義詞時,Oracle數(shù)據(jù)庫將它翻譯成對應(yīng)方案對象的名字。與視圖類似,同義詞并不占用實際存儲空間,只有在數(shù)據(jù)字典中保存了同義詞的定義
創(chuàng)建同義詞
CREATE SYNONYM SYSN_TEST FOR TEST;
查看同義詞
SELECT * FROM USER_SYNONYMS
使用同義詞
SELECT * FROM SYSN_TEST;
刪除同義詞
DROP SYNONYM SYSN_TEST;
oracle同義詞是什么意思?
相當(dāng)于alias(別名),比如把user1.table1在user2中建一個同義詞table1
create synonym table1 for user1.table1;
這樣當(dāng)你在user2中查select * from table1時就相當(dāng)于查select * from user1.table1;
優(yōu)點自己總結(jié)吧。
例如:
在oracle中對用戶的管理是使用權(quán)限的方式來管理的,也就是說,如果我們想使用數(shù)據(jù)庫,我們就必須得有權(quán)限,但是如果是別人將權(quán)限授予了我們,我們也是能對數(shù)據(jù)庫進行操作的,但是我們必須要已授權(quán)的表的名稱前鍵入該表所有者的名稱,所以這就是比較麻煩的,遇到這種情況,我們該怎么辦呢?創(chuàng)建個同義詞吧!這樣我們就可以直接使用同義詞來使用表了。
如何寫oracle的同義詞?
要使用department用戶創(chuàng)建。
如果department和employee是同一個庫不同表空間。
/**?for?用戶名.表名?*/
create?public?synonym?synonym_name?for?department.部門表;
如果department和employee不是同一個庫。那么還需要加上部門所在庫的database link。
/**?for?用戶名.表名@資源連接?*/
create?public?synonym?synonym_name?for?department.部門表@link_name;
Oracle中使用同義詞介紹
一、背景
有兩個sid:Asid,Bsid,在Asid下有兩個用戶Auser1,Auser2,在Bsid下有一個用戶Buser1。其中Auser2和Buser1建立了dblink。現(xiàn)希望通過登錄Buser1訪問Auser1上的三張表table1,table2,table3信息和函數(shù)function1。
二、步驟
①登錄Auser1對Auser2授權(quán)(若需要刪除則加上)
grant ,select,on table1 to Auser2;
grant ,select,on table2 to Auser2;
grant ,select,on table3 to Auser2;
grant execute on function1 to Auser2;
②登錄Auser2建立同義詞
create synonym table1 for Auser1.table1;
create synonym table2 for Auser1.table1;
create synonym table3 for Auser1.table1;
create synonym function1 for Auser1.function1;
③登錄Buser1查找db_link名(例如查出來的db_link名為mydblink1)
select username,db_link from user_db_links
④建立Buser1的同義詞
create synonym table1 for Auser2.table1@mydblink1;
create synonym table2 for Auser2.table2@mydblink1;
create synonym table3 for Auser2.table3@mydblink1;
create synonym function1 for Auser2.function1@mydblink1;
⑤測試
此時登錄Buser1通過select * from table1就可以訪問table1了。
三、注意點
也可以建立procedure的`同義詞,但是這樣執(zhí)行的過程中不允許commit。如果要提交的話請在如JDBC中commit()。
網(wǎng)站題目:oracle同義詞怎么寫,oracle同義詞的用途
標(biāo)題來源:http://fisionsoft.com.cn/article/hsghhh.html