日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Oracle 原理: 公有同义词 和 私有同义词

發(fā)布時(shí)間:2024/10/14 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 原理: 公有同义词 和 私有同义词 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

同義詞是現(xiàn)有對(duì)象的一個(gè)別名,和 C++ 里面的typedef關(guān)鍵字很像。同義詞都能簡(jiǎn)化SQL語(yǔ)句,隱藏對(duì)象的名稱和所有者,也可以提供對(duì)對(duì)象的公共訪問(wèn)。?在Oracle中,同義詞分為公有同義詞和私有同義詞。公有同義詞可被所有數(shù)據(jù)庫(kù)用戶訪問(wèn)。私有同義詞只能再其模式內(nèi)訪問(wèn),且不能與當(dāng)前模式的對(duì)象同名。

CREATE? [PUBLIC]?SYNONYM ?[同義詞名] FOR [對(duì)象名];

如果不寫 PUBLIC 那創(chuàng)建的同義詞就是私有同義詞,寫了 PUBLIC 就是公有同義詞。

創(chuàng)建同義詞需要權(quán)限

GRANT CREATE? [PUBLIC]?SYNONYM TO [用戶名]

刪除同義詞(刪除同義詞也是需要權(quán)限的)

DROP? [PUBLIC]?SYNONYM? [同義詞名];

替換同義詞(要權(quán)限):

CREATE OR REPLACE SYNONYM ?[新同義詞名] FOR [對(duì)象名];

私有同義詞,由于每個(gè)模式私有的,可以在不同模式中創(chuàng)建同名的私有同義詞,互不影響;

?

-------創(chuàng)建表結(jié)構(gòu) create table salary_tbl(employer_nm varchar(20),department varchar(20) not null,salary number not null,leader_nm varchar(20) ); -----插入測(cè)試數(shù)據(jù)---- truncate table salary_tbl; beginfor i in 1..100loopinsert into salary_tbl values('雇傭者'||i,'部門'||Mod(i,6),100*POWER(10000,i*0.01),'雇傭者'||Mod(i,6)); end loop; end; / commit; --------創(chuàng)建私有同義詞--------- CREATE SYNONYM s_tbl FOR SALARY_TBL; --------用私有同義詞來(lái)查詢----------- select * from s_tbl s where s.employer_nm ='雇傭者1'; --------刪除私有同義詞---------- DROP SYNONYM s_tbl;

我們知道查找表信息可以用如下SQL:?select * from tab; 那么這里 tab 是表名嗎?

我可以查看對(duì)象表,來(lái)查找對(duì)象信息

select * from all_objects where object_name='TAB';

可以看見(jiàn) TAB 這個(gè)對(duì)象在SYS里是一個(gè)視圖,而在公共里是一個(gè)同義詞,這里的TAB并不是一張表;

我們可以查看同義詞信息:

select * from all_synonyms where SYNONYM_NAME='TAB';

我們可以看見(jiàn)不管OWNER是 公共還是SYSTEM,TAB同義詞對(duì)應(yīng)的都是SYS模式(用戶)下的TAB表;

select * from tab ; 是根據(jù)同義詞查找 ,和查詢表 select * from sys.tab; 是一樣的

?

總結(jié)

以上是生活随笔為你收集整理的Oracle 原理: 公有同义词 和 私有同义词的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。