版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第第頁(yè)oracl中視圖和同義詞的區(qū)別
一、視圖
在之前所學(xué)習(xí)過(guò)的全部的SQL語(yǔ)法之中,查詢(xún)操作是最麻煩的,假如程序開(kāi)發(fā)人員將大量的精力都糜費(fèi)在查詢(xún)的編寫(xiě)上,那么確定影響代碼的工作進(jìn)度,所以一個(gè)好的數(shù)據(jù)庫(kù)設(shè)計(jì)人員,除了依據(jù)業(yè)務(wù)的操作設(shè)計(jì)出數(shù)據(jù)表之外,還需要為用戶(hù)提供假設(shè)干個(gè)視圖,而每一個(gè)視圖包裝了一條條繁復(fù)的SQL語(yǔ)句,視圖的創(chuàng)建語(yǔ)法如下:
CREATE[ORREPLACE]VIEW視圖名稱(chēng)
AS子查詢(xún);
范例:創(chuàng)建一張視圖
CREATEVIEWmyviewASSELECTd.deptno,d.dname,d.loc,COUNT(e.empno)count,AVG(e.sal)avgFROMempe,deptd
WHEREe.deptno(+)=d.deptnoGROUPBYd.deptno,d.dname,d.loc;
現(xiàn)在已經(jīng)創(chuàng)建好了一張視圖,名稱(chēng)為myview,所以現(xiàn)在查詢(xún)myview:
SELECT*FROMmyview;
此時(shí)通過(guò)一個(gè)簡(jiǎn)約的視圖查詢(xún)操作,就可以完成之前的繁復(fù)SQL語(yǔ)句的功能,所以視圖就是包裝了SQL查詢(xún)操作。
范例:創(chuàng)建一張包含簡(jiǎn)約查詢(xún)語(yǔ)句的視圖
DROPVIEWmyview;CREATEVIEWmyviewASSELECT*FROMempWHEREdeptno=20;
可是以上的操作事實(shí)上是屬于一個(gè)視圖的替換操作,所以此時(shí)也可以運(yùn)用另外一種語(yǔ)法:
CREATEORREPLACEVIEWmyviewASSELECT*FROMempWHEREdeptno=20;
此時(shí)表示的是,假如視圖存在那么替換,不存在那么創(chuàng)建一張新的視圖,視圖的概念雖然好理解,但是在創(chuàng)建視圖的時(shí)候存在兩個(gè)選項(xiàng)。
選項(xiàng)一:WITHCHECKOPTION
上面所創(chuàng)建的視圖,是存在一個(gè)創(chuàng)建條件的“WHEREdeptno=20”,那么假如現(xiàn)在更新視圖中的這個(gè)條件呢?
UPDATEmyviewSETdeptno=30WHEREempno=7369;
此時(shí)更新的是一張視圖,但是視圖本身并不是一個(gè)詳細(xì)的數(shù)據(jù)表,而且現(xiàn)在更新的操作又是視圖的創(chuàng)建條件,很明顯這樣的做法不可取,所以此時(shí)為了解決這個(gè)問(wèn)題,可以加入WITHCHECKOPTION;
CREATEORREPLACEVIEWmyviewASSELECT*FROMempWHEREdeptno=20WITHCHECKOPTION;
此時(shí)再次執(zhí)行視圖的更新操作,涌現(xiàn)以下錯(cuò)誤提示:
ORA-01402:視圖WITHCHECKOPTIDNwhere子句違規(guī)
意味著現(xiàn)在根本就不能去更新視圖的創(chuàng)建條件。
選項(xiàng)二:WITHREADONLY
雖然運(yùn)用WITHCHECKOPTION可以保證視圖的創(chuàng)建條件不被更新,但是其他的字段卻允許更新。
UPDATEmyviewSETsal=9000WHEREempno=7369;
與之前的問(wèn)題一樣,視圖本身不是詳細(xì)的真實(shí)數(shù)據(jù),而是一些查詢(xún)語(yǔ)句,所以這樣的更新并不合理,那么在創(chuàng)建視圖的時(shí)候建議將其設(shè)置為只讀視圖:
CREATEORREPLACEVIEWmyviewASSELECT*FROMempWHEREdeptno=20WITHREADONLY;
此時(shí)再次發(fā)出更新的操作,那么徑直提示如下錯(cuò)誤:
ORA-01733:此處不允許虛擬列
而且肯定要留意的是,以上給出的是一個(gè)簡(jiǎn)約的操作語(yǔ)句視圖,假如現(xiàn)在視圖中的查詢(xún)語(yǔ)句是統(tǒng)計(jì)操作,那么根本就不可能更新。
CREATEORREPLACEVIEWmyviewASSELECTd.deptno,d.dname,d.loc,COUNT(e.empno)count,AVG(e.sal)avgFROMempe,deptdWHEREe.deptno(+)=d.deptnoGROUPBYd.deptno,d.dname,d.loc;
現(xiàn)在的信息是統(tǒng)計(jì)而來(lái)的,根本就不可能更新。
在一個(gè)項(xiàng)目之中,視圖的`數(shù)量有可能超過(guò)表的數(shù)量,由于查詢(xún)語(yǔ)句會(huì)許多的。
二、同義詞
同義詞就是意思相近的一組詞語(yǔ),對(duì)于同義詞的操作之前一貫在運(yùn)用,例如,現(xiàn)在有如下一個(gè)查詢(xún)語(yǔ)句:
SELECTSYSDATEFROMdual;
在之前說(shuō)過(guò)“dual”是一張?zhí)摂M表,但是虛擬表也確定應(yīng)當(dāng)有它的用戶(hù),經(jīng)過(guò)查詢(xún)可以發(fā)覺(jué),這張表是屬于SYS用戶(hù)的,但是這個(gè)時(shí)候就涌現(xiàn)一個(gè)問(wèn)題,在之前講解過(guò),不同的用戶(hù)要想訪問(wèn)其他用戶(hù)的表,那么需要寫(xiě)上“用戶(hù).表名稱(chēng)”,那么為什么此時(shí)scott用戶(hù)訪問(wèn)的時(shí)候徑直運(yùn)用dual即可,而不是運(yùn)用“sys.dual”呢,這個(gè)事實(shí)上就是同義詞的應(yīng)用,dual表示的是sys.dual的同義詞,而同義詞在Oracle之中稱(chēng)為SYNONYM,同義詞的創(chuàng)建語(yǔ)法如下:
CREATE[PUBLIC]SYSNONYM同義詞的名稱(chēng)FOR用戶(hù)名.表名稱(chēng);
范例:下面創(chuàng)建一個(gè)同義詞為myemp,此同義詞指向scott.emp
CREATESYNONYMmyempFORscott.emp;
此時(shí)創(chuàng)建勝利之后,以后在sys用戶(hù)中就可以運(yùn)用myemp這個(gè)同義詞的名稱(chēng)了,但是這個(gè)同義詞只適合sys用戶(hù)一個(gè)人運(yùn)用,其他用戶(hù)無(wú)法運(yùn)用,由于創(chuàng)建的時(shí)候沒(méi)有運(yùn)用PUBLIC,假如沒(méi)有運(yùn)用,那么表示創(chuàng)建的不是公共同義詞。
范例:創(chuàng)建公共同義詞
SYNONYMmyemp;SYNONYMmyempscott.emp;
CONNsystem/manager;SELECT*FROMmyemp;
但是同義詞也只是Oracle自己的概念,知道就行了。
三、索引
索引的主要功能就是用于提升數(shù)據(jù)庫(kù)的操作性能。
下面通過(guò)代碼分析一個(gè)最簡(jiǎn)約的索引操作的問(wèn)題;
例如,在之前曾經(jīng)寫(xiě)過(guò)如下的操作語(yǔ)句:
SELECT*FROMempWHEREsal1500;
此時(shí)由于在sal上沒(méi)有設(shè)置索引,所以它的查詢(xún)過(guò)程是采納逐行判斷的方式完成的,這種操作隨著數(shù)據(jù)量的上升,那么性能會(huì)涌現(xiàn)越來(lái)越多的問(wèn)題,但是假如說(shuō)將數(shù)據(jù)排列一下呢?
例如,現(xiàn)在將工作在內(nèi)存之中形成這樣的一種數(shù)據(jù)結(jié)構(gòu);
假如現(xiàn)在假設(shè)全部的數(shù)據(jù)都排列成以上的樹(shù)形結(jié)構(gòu)的話(huà),同樣的查詢(xún),現(xiàn)在還會(huì)查詢(xún)?nèi)坑涗泦??只?huì)查詢(xún)部分。
在Oracle之中創(chuàng)建索引有以下兩種方式:
主鍵約束:假如一張表中的列上存在了主鍵約束的話(huà),自動(dòng)創(chuàng)建索引;
手工創(chuàng)建:在某一個(gè)操作列上指定一個(gè)索引;
范例:在emp.sal字段上創(chuàng)建索引
CREATEINDE*emp_sal_indONemp(sal);
雖然索引創(chuàng)建完成了,但是要想觀測(cè)出特點(diǎn)基本上是不可能的。
但是這種索引有一個(gè)最大的問(wèn)題,即:假如要想實(shí)現(xiàn)性能的提高,那么需要始終維持以上的一棵樹(shù),那么假如說(shuō)現(xiàn)在這棵樹(shù)上的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電氣安全監(jiān)控與預(yù)警系統(tǒng)考核試卷
- 2024至2030年中國(guó)紙塑熱壓復(fù)合機(jī)行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2024-2030年中國(guó)民航機(jī)場(chǎng)行業(yè)運(yùn)營(yíng)現(xiàn)狀分析發(fā)展規(guī)劃研究報(bào)告
- 《草莓組培苗種質(zhì)資源離體保存的研究》
- 2024至2030年中國(guó)狐臭凈行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 《毛蚶對(duì)石油烴脅迫響應(yīng)的研究》
- 《雙孢菇菇柄制備高吸水樹(shù)脂及其應(yīng)用》
- 復(fù)產(chǎn)季新年度安全培訓(xùn)考核試卷
- 2024-2030年中國(guó)暖風(fēng)電動(dòng)機(jī)產(chǎn)業(yè)未來(lái)發(fā)展趨勢(shì)及投資策略分析報(bào)告
- 2024-2030年中國(guó)無(wú)軌堆垛機(jī)行業(yè)發(fā)展前景預(yù)測(cè)和投融資分析報(bào)告
- 2023年副主任醫(yī)師(副高)-中醫(yī)骨傷科學(xué)(副高)考試歷年真題摘選帶答案
- 《紅星照耀中國(guó)》PPT只是分享
- 污水處理站安全培訓(xùn)課件
- 消毒供應(yīng)中心質(zhì)量管理課件
- 大型幕墻施工工程重點(diǎn)難點(diǎn)分析
- 六年級(jí)寫(xiě)自己典型事例300字范文(6篇)
- 干膜介紹及干膜工藝詳解
- 2023年高考作文素材積累:欲得千里駒需搭青云梯、縱浪大化中淡定且從容、因時(shí)而變奔赴山海
- 九年級(jí)滬教版 Unit5 Reading Skiing An Unforgettable Experience公開(kāi)課學(xué)案
- 百萬(wàn)英鎊英語(yǔ)臺(tái)詞
- YY/T 0578-2005沙門(mén)、志賀菌屬瓊脂培養(yǎng)基
評(píng)論
0/150
提交評(píng)論