第五章 數(shù)據(jù)庫中的其他對象_第1頁
第五章 數(shù)據(jù)庫中的其他對象_第2頁
第五章 數(shù)據(jù)庫中的其他對象_第3頁
第五章 數(shù)據(jù)庫中的其他對象_第4頁
第五章 數(shù)據(jù)庫中的其他對象_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第五章:數(shù)據(jù)庫中的對象對象描述表基本的數(shù)據(jù)存儲(chǔ)集合,由行和列組成視圖從表中抽出的邏輯上相關(guān)的數(shù)據(jù)集合序列提供有規(guī)律的數(shù)值索引提高查詢的效率同義詞給對象起別名數(shù)據(jù)庫中常見對象在數(shù)據(jù)庫中最重要和最基本的對象就是“表”,之前所學(xué)習(xí)的所有操作:數(shù)據(jù)的增加、刪除、修改、查詢都是操作表進(jìn)行實(shí)現(xiàn)的。回顧:表什么是視圖?基于一張表或多張表或另外一個(gè)視圖的邏輯表。基表(basetable):

獨(dú)立存在的實(shí)體,用于存儲(chǔ)數(shù)據(jù)的基本結(jié)構(gòu)。視圖只是一種定義,對應(yīng)一個(gè)查詢語句。視圖的數(shù)據(jù)來自基表。通過視圖來查看表,就像從不同角度觀察一個(gè)或多個(gè)表。視圖一經(jīng)定義便存儲(chǔ)在數(shù)據(jù)庫中,對視圖的操作與對表的操作一樣,可以對其進(jìn)行查詢、修改(有一定限制)和刪除。優(yōu)點(diǎn):簡化查詢。經(jīng)常使用的查詢可以定義為視圖,從而使得用戶不必為以后的操作每次指定全部的條件。控制數(shù)據(jù)訪問。通過視圖用戶只能查詢和修改他們所能見到的數(shù)據(jù)。數(shù)據(jù)庫授權(quán)命令可以使每個(gè)用戶對數(shù)據(jù)庫的檢索限制到特定的數(shù)據(jù)庫對象上。數(shù)據(jù)獨(dú)立性。視圖可幫助用戶屏蔽真實(shí)表結(jié)構(gòu)變化帶來的影響。為什么使用視圖特性簡單視圖復(fù)雜視圖表的數(shù)量一個(gè)一個(gè)或多個(gè)函數(shù)沒有有分組沒有有DML操作可以有時(shí)可以簡單視圖和復(fù)雜視圖創(chuàng)建視圖在CREATEVIEW語句中嵌入子查詢CREATE[ORREPLACE][FORCE|NOFORCE]VIEW[Schema.]view_name[(column_name…)]Asselect_statement[WITHCHECKOPTION][CONSTRAINT][WITHREADONLY][CONSTRAINT]子查詢可以使復(fù)雜的SELECT語句創(chuàng)建視圖舉例CREATEVIEWemp10Asselectempno,ename,salFromempWheredeptno=10;描述視圖結(jié)構(gòu)DESCemp10創(chuàng)建視圖創(chuàng)建視圖時(shí)在子查詢中給列定義別名CREATEVIEWemp20Asselectempnoempid,enamename,sal*12ann_salaryFromempWheredeptno=20;在選擇視圖中的列時(shí)應(yīng)使用別名查詢視圖select*Fromemp20;查詢視圖select*Fromemp10;SQL*PLUSOracleServerUSER_VIEWSEmp10selectempno,ename,salFromempWheredeptno=10;emp修改視圖使用CREATEORREPLACEVIEW子句修改視圖CREATEORREPLACEVIEWemp10(empno,ename,sal,deptno)Asselectempno,ename||’salaryis‘||salary,deptnoFromempWheredeptno=10;CREATEVIEW子句中各列的別名應(yīng)和子查詢中各列相對應(yīng)創(chuàng)建復(fù)雜視圖復(fù)雜視圖舉例CREATEVIEWdept_sum_avg(ename,minsal,maxsal,avgsal)Asselectd.dname,MIN(e.sal),MAX(e.sal),AVG(e.sal)Fromempe,deptdWheree.deptno=d.deptnoGroupbyd.dname;創(chuàng)建復(fù)雜視圖查詢剛創(chuàng)建的視圖視圖中使用DML的規(guī)定可以在簡單視圖中執(zhí)行DML操作當(dāng)視圖定義中包含以下元素之一時(shí)不能使用delete:組函數(shù)GROUPBY子句DISTINCT關(guān)鍵字ROWNUM偽列視圖中使用DML的規(guī)定當(dāng)視圖定義中包含以下元素之一時(shí)不能使用update:組函數(shù)GROUPBY子句DISTINCT關(guān)鍵字ROWNUM偽列列的定義為表達(dá)式視圖中使用DML的規(guī)定可以在簡單視圖中執(zhí)行DML操作當(dāng)視圖定義中包含以下元素之一時(shí)不能使用insert:組函數(shù)GROUPBY子句DISTINCT關(guān)鍵字ROWNUM偽列列的定義為表達(dá)式表中非空的列在視圖定義中未包括WITHCHECKOPTION子句CREATEORREPLACEVIEWempvu20ASSELECT*FROMempWHEREdeptno=20WITHCHECKOPTIONCONSTRAINTemp_ck;使用WITHCHECKOPTION子句確保DML只能在特定的范圍內(nèi)執(zhí)行任何違反WITHCHECKOPTION約束的請求都會(huì)失敗屏蔽DML操作任何DML操作都會(huì)返回一個(gè)ORACLESERVER錯(cuò)誤可使用WITHREADONLY選項(xiàng)屏蔽對視圖的DML操作CREATEORREPLACEVIEWempvu10

(emp_number,emp_name,job_title)ASSELECTempno,ename,jobFROMempWHEREdeptno=10WITHREADONLY;刪除視圖刪除視圖只是刪除視圖的定義,并不會(huì)刪除基表的數(shù)據(jù)DROPVIEWview_name;DROPVIEWemp20;臨時(shí)視圖臨時(shí)視圖可以是嵌套在SQL語句中的子查詢在FROM子句中的子查詢是臨時(shí)視圖臨時(shí)視圖不是數(shù)據(jù)庫對象Top-N分析Top-N分析查詢一個(gè)列中最大或最小的n個(gè)值:銷售量最高的十種產(chǎn)品是什么?銷售量最差的十種產(chǎn)品是什么?最大和最小的值的集合是Top-N分析所關(guān)心的查詢最大的幾個(gè)值的Top-N分析SELECT[column_name],ROWNUMFROM(select[column_name]fromtable_nameorderbytop-n_column)WHEREROWNUM<=N;Top-N分析查詢工資最高的三名員工:SELECTROWNUMasRANK,ename,salFROM(selectename,salfromemporderbysaldesc)WHEREROWNUM<=3;總結(jié)通過本章學(xué)習(xí),您已了解視圖的優(yōu)點(diǎn)和基本應(yīng)用:控制數(shù)據(jù)訪問簡化查詢數(shù)據(jù)獨(dú)立性刪除時(shí)不刪除數(shù)據(jù)子查詢是臨時(shí)視圖的一種Top-N分析其他數(shù)據(jù)庫對象通過本章學(xué)習(xí),您將可以:創(chuàng)建,維護(hù)和使用序列創(chuàng)建和維護(hù)索引創(chuàng)建私有和公有同義詞目標(biāo)什么是序列序列號(hào)生成器,可以為表中的行自動(dòng)生成序列號(hào)自動(dòng)提供唯一的數(shù)值主要用于提供主鍵值代替應(yīng)用代碼將序列值裝入內(nèi)存可以提高訪問效率目標(biāo)CREATESEQUENCE語句CREATESEQUENCEsequence_name[INCREMENTByn]//定義序列步長,默認(rèn)為1[STARTWITHn]]//定義序列初始值,默認(rèn)為1[{MAXVALUEn|NOMAXVALUE}]]//定義序列生成器能產(chǎn)生的最大值,遞增序列最大值為10的27次方[{MINVALUEn|NOMINVALUE}]//遞減序列最小值為1[{CYCLE|NOCYCLE}]//序列達(dá)到限制后是否循環(huán)[{CACHEn|NOCACHE}];//定義存放序列的內(nèi)存塊大小,默認(rèn)為20定義序列創(chuàng)建序列CREATESEQUENCEdept_deptid_seqINCREMENTBy10STARTWITH40MAXVALUE99NOCYCLENOCACHE;創(chuàng)建序列dept_deptid_seq為表dept提供主鍵不使用CYCLE選項(xiàng)查詢序列SELECTsequence_name,min_value,max_value,increment_by,last_numberFROMuser_sequences;查詢數(shù)據(jù)字典視圖USER_SEQUENCES獲取序列定義信息,不使用CYCLE選項(xiàng)如果指定NOCACHE選項(xiàng),則列l(wèi)ast_number顯示序列中下一個(gè)有效的值NEXTVAL和CURRVAL偽列NEXTVAL返回序列中下一個(gè)有效的值,任何用戶都可以引用CURRVAL中存放序列的當(dāng)前值NEXTVAL應(yīng)在CURRVAL之前指定,二者應(yīng)同時(shí)有效序列應(yīng)用舉例INSERTINTOdept(deptno,dname,loc)VALUES(dept_deptid_seq.NEXTVAL,'support','beijing');SELECTdept_deptid_seq.CURRVALFROMdual;序列dept_deptid_seq的當(dāng)前值使用序列將序列值裝入內(nèi)存可提高訪問效率序列在下列情況下出現(xiàn)裂縫:回滾系統(tǒng)異常多個(gè)表同時(shí)使用同一序列如果不將序列的值裝入內(nèi)存(nocache),可使用表USER_SEQUENCES查看序列當(dāng)前的有效值修改序列修改序列的增量,最大值,最小值,循環(huán)選項(xiàng),或是否裝入內(nèi)存ALTERSEQUENCEdept_deptid_seqINCREMENTBY20MAXVALUE999//僅示例,超出范圍NOCACHENOCYCLE;修改序列的注意事項(xiàng)必須是序列的擁有者或?qū)π蛄杏蠥LTER權(quán)限只有將來的序列值會(huì)被改變改變序列的初始值只能通過刪除序列之后重建序列的方法實(shí)現(xiàn)刪除序列使用DROPSEQUENCE語句刪除序列刪除之后,序列不能再次被引用DROPSEQUENCEdept_deptid_seq;索引一種數(shù)據(jù)庫對象通過指針加速Oracle服務(wù)器的查詢速度通過快速定位數(shù)據(jù)的方法,減少磁盤I/O索引與表互相獨(dú)立Oracle服務(wù)器自動(dòng)使用和維護(hù)索引創(chuàng)建索引自動(dòng)創(chuàng)建:

在定義PRIMARYKEY或UNIQUE約束后系統(tǒng)自動(dòng)在相應(yīng)的列上創(chuàng)建唯一性索引手動(dòng)創(chuàng)建:

用戶可以在其他列上創(chuàng)建非唯一的索引,以加速查詢創(chuàng)建索引在表EMP的列ENAME上創(chuàng)建索引

CREATEINDEXemp_ename_idxONemp(ename);什么時(shí)候創(chuàng)建索引以下情況可以創(chuàng)建索引

列中數(shù)據(jù)值分布范圍很廣列中包含大量空值列經(jīng)常在WHERE子句或連接條件中出現(xiàn)表經(jīng)常被訪問而且數(shù)據(jù)量很大,訪問的數(shù)據(jù)大概占數(shù)據(jù)總量的2%到4%什么時(shí)候不要?jiǎng)?chuàng)建索引以下情況不要?jiǎng)?chuàng)建索引

表很小列不經(jīng)常作為連接條件或出現(xiàn)在WHERE子句中查詢的數(shù)據(jù)大于2%到4%表經(jīng)常更新加索引的列包含在表達(dá)式中查詢索引可以使用數(shù)據(jù)字典視圖USER_INDEXES和USER_IND_COLUMNS查看索引的信息SELECTic.index_name,ic.column_name,ic.column_positioncol_pos,ix.uniquenessFROMuser_indexesix,user_ind_columnsicWHEREic.index_name=ix.index_nameANDic.table_name='emp';基于函數(shù)的索引基于函數(shù)的索引是一個(gè)基于表達(dá)式的索引索引表達(dá)式由列,常量,SQL函數(shù)和用戶

自定的函數(shù)CREATEINDEXupper_dept_name_idxONdept(upper(dname));SELECT*FROMdeptWHEREupper(dname)='SALES';刪除索引使用DROPINDEX命令刪除索引

DROPINDEXindex_name;DROPINDEXUPPER_ENAME_IDX;刪除索引UPPER_ENAME_IDX只有索引的擁有者或擁有DROPANYINDEX權(quán)限的用戶才可以刪除索引

同義詞使

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論