oracle 第10章模式對(duì)象_第1頁(yè)
oracle 第10章模式對(duì)象_第2頁(yè)
oracle 第10章模式對(duì)象_第3頁(yè)
oracle 第10章模式對(duì)象_第4頁(yè)
oracle 第10章模式對(duì)象_第5頁(yè)
已閱讀5頁(yè),還剩155頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2009第10章 模式對(duì)象Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007本章內(nèi)容本章內(nèi)容p模式概念p表管理p索引管理p索引化表管理p分區(qū)表與分區(qū)索引的管理p簇、視圖、序列、同義詞、數(shù)據(jù)庫(kù)鏈接管理Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007本章要求本章要求p掌握表的管理p掌握索引的管理p掌握索引化表的概念及其管理p掌握分區(qū)的概念及分區(qū)管理p了解簇、視圖、序列、同義詞、數(shù)據(jù)庫(kù)鏈接等的管理Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程200710.1模式模式p模式概念p模式與用戶(hù)的關(guān)系p模式選擇與切換Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p模式概念n是指一系列邏輯數(shù)據(jù)結(jié)構(gòu)或?qū)ο蟮募?。是指一系列邏輯?shù)據(jù)結(jié)構(gòu)或

2、對(duì)象的集合。 p模式與用戶(hù)的關(guān)系n模式與用戶(hù)相對(duì)應(yīng),一個(gè)模式只能被一個(gè)數(shù)據(jù)庫(kù)用戶(hù)模式與用戶(hù)相對(duì)應(yīng),一個(gè)模式只能被一個(gè)數(shù)據(jù)庫(kù)用戶(hù)所擁有,并且模式的名稱(chēng)與這個(gè)用戶(hù)的名稱(chēng)相同。所擁有,并且模式的名稱(chēng)與這個(gè)用戶(hù)的名稱(chēng)相同。n通常情況下,用戶(hù)所創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象都保存在與自己通常情況下,用戶(hù)所創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象都保存在與自己同名的模式中。同名的模式中。n同一模式中數(shù)據(jù)庫(kù)對(duì)象的名稱(chēng)必須惟一,而在不同模同一模式中數(shù)據(jù)庫(kù)對(duì)象的名稱(chēng)必須惟一,而在不同模式中的數(shù)據(jù)庫(kù)對(duì)象可以同名。式中的數(shù)據(jù)庫(kù)對(duì)象可以同名。n默認(rèn)情況下,用戶(hù)引用的對(duì)象是與自己同名模式中的默認(rèn)情況下,用戶(hù)引用的對(duì)象是與自己同名模式中的對(duì)象,如果要引用其他模式

3、中的對(duì)象,需要在該對(duì)象對(duì)象,如果要引用其他模式中的對(duì)象,需要在該對(duì)象名之前指明對(duì)象所屬模式。名之前指明對(duì)象所屬模式。 Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p模式選擇與切換n如果用戶(hù)以如果用戶(hù)以NORMAL身份登錄,則進(jìn)入同名模式;身份登錄,則進(jìn)入同名模式;n若以若以SYSDBA身份登錄,則進(jìn)入身份登錄,則進(jìn)入SYS模式;模式;n如果以如果以SYSOPER身份登錄,則進(jìn)入身份登錄,則進(jìn)入PUBLIC模式。模式。Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程200710.2表表pOracle常用數(shù)據(jù)類(lèi)型 p表的創(chuàng)建p表中約束的管理 p表參數(shù)設(shè)置 p表的修改 p表的刪除 p利用OEM管理表Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程

4、2007pCREATE TABLE table_namen(column_name datatype column_level_constraintn,column_name datatype column_level_constraintn,table_level_constraint) nparameter_list 直接創(chuàng)建表直接創(chuàng)建表Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007pCREATE TABLE employee(pempno NUMBER(5) PRIMARY KEY,pename VARCHAR2(15),pdeptno NUMBER(3) NOT NULL CONSTRAINT

5、fk_emp REFERENCES deptp)pTABLESPACE USERSpPCTFREE 10 PCTUSED 40pSTORAGE(INITIAL 50K NEXT 50K MAXEXTENTS 10 PCTINCREASE 25); Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p表名(table_name)n必須是合法標(biāo)識(shí)符,長(zhǎng)度為必須是合法標(biāo)識(shí)符,長(zhǎng)度為130 字節(jié),并且以字母字節(jié),并且以字母開(kāi)頭,可以包含字母開(kāi)頭,可以包含字母(AZ,az)、數(shù)字(、數(shù)字(09),),下劃線(xiàn)(下劃線(xiàn)(_)、美元符號(hào)()、美元符號(hào)($)和井號(hào)()和井號(hào)(#)。此外,)。此外,表名稱(chēng)不能是表名稱(chēng)不能是Or

6、acle數(shù)據(jù)庫(kù)的保留字?jǐn)?shù)據(jù)庫(kù)的保留字 p數(shù)據(jù)類(lèi)型(datatype) n字符類(lèi)型字符類(lèi)型n數(shù)字類(lèi)型數(shù)字類(lèi)型n日期類(lèi)型日期類(lèi)型n大對(duì)象類(lèi)型大對(duì)象類(lèi)型n其他類(lèi)型其他類(lèi)型Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007pCHAR(n)n定長(zhǎng)字符串,n的取值范圍為1-2000字節(jié)pVARCHAR2(n)n可變字符串,n取值范圍為1-4000字節(jié)n自動(dòng)調(diào)整數(shù)據(jù)長(zhǎng)度pNCHAR(n)n用來(lái)存儲(chǔ)Unicode類(lèi)型字符串。pNVARCHAR2(n) n它用來(lái)存儲(chǔ)它用來(lái)存儲(chǔ)Unicode類(lèi)型字符串。類(lèi)型字符串。pLONGn可變長(zhǎng)字符列,最大長(zhǎng)度為2GBn用于不需設(shè)置成索引的字符,不常用字符類(lèi)型字符類(lèi)型Oracle 數(shù)據(jù)庫(kù)基

7、礎(chǔ)教程2007數(shù)字?jǐn)?shù)據(jù)類(lèi)型數(shù)字?jǐn)?shù)據(jù)類(lèi)型pNUMBER(m,n) 可變長(zhǎng)的數(shù)值列,m是所有有效數(shù)字的位數(shù),n為小數(shù)點(diǎn)后的位數(shù)Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007日期數(shù)據(jù)類(lèi)型日期數(shù)據(jù)類(lèi)型pDATEn公元前公元前4712年年1月月1日到公元日到公元4712年年1月月1日日n默認(rèn)格式:默認(rèn)格式:DD-MON-YYn習(xí)慣格式:習(xí)慣格式:YYYY-MM-DD HH:MM:SSOracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007大對(duì)象數(shù)據(jù)類(lèi)型大對(duì)象數(shù)據(jù)類(lèi)型pBLOB、CLOB、NCLOBn用來(lái)保存較大的圖形文件或帶格式的文本文件、音用來(lái)保存較大的圖形文件或帶格式的文本文件、音頻和視頻等非文本文件頻和視頻等非文本文件n最大長(zhǎng)

8、度最大長(zhǎng)度4GBpBFILEn在數(shù)據(jù)庫(kù)外部保存的大型二進(jìn)制對(duì)象文件。在數(shù)據(jù)庫(kù)外部保存的大型二進(jìn)制對(duì)象文件。n不能寫(xiě),只能讀、查詢(xún)不能寫(xiě),只能讀、查詢(xún)n大小有操作系統(tǒng)決定大小有操作系統(tǒng)決定Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007其他數(shù)據(jù)類(lèi)型其他數(shù)據(jù)類(lèi)型pRAW(n)n可變長(zhǎng)二進(jìn)制數(shù)據(jù)可變長(zhǎng)二進(jìn)制數(shù)據(jù)n保存較小的圖形文件或帶格式的文本文件保存較小的圖形文件或帶格式的文本文件nN取取1-2000字節(jié)字節(jié)pLONG RAWn可變長(zhǎng)二進(jìn)制數(shù)據(jù)可變長(zhǎng)二進(jìn)制數(shù)據(jù)n保存較大的圖形文件或帶格式的文本文件保存較大的圖形文件或帶格式的文本文件nN取取2GB字節(jié)字節(jié)pROWIDpUROWIDOracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2

9、007p約束(constraint)n在在Oracle數(shù)據(jù)庫(kù)中對(duì)列的約束包括主鍵約束、惟一性數(shù)據(jù)庫(kù)中對(duì)列的約束包括主鍵約束、惟一性約束、檢查約束、外鍵約束和空約束、檢查約束、外鍵約束和空/非空約束等非空約束等5中,定中,定義方法有表級(jí)約束和列級(jí)約束義方法有表級(jí)約束和列級(jí)約束2種。關(guān)于表的約束詳見(jiàn)種。關(guān)于表的約束詳見(jiàn)10.2.2表約束中介紹。表約束中介紹。p參數(shù)(parameter_list)n在定義表時(shí),可以通過(guò)參數(shù)設(shè)置表存儲(chǔ)在哪一個(gè)表空在定義表時(shí),可以通過(guò)參數(shù)設(shè)置表存儲(chǔ)在哪一個(gè)表空間中,和存儲(chǔ)空間分配等。間中,和存儲(chǔ)空間分配等。Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007利用子查詢(xún)創(chuàng)建表利用子查詢(xún)創(chuàng)

10、建表 p語(yǔ)法語(yǔ)法nCREATE TABLE table_namen(column_name column_level_constraintn,column_name column_level_constraintn,table_level_constraint) nparameter_listnAS subquery; Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p注意注意n通過(guò)該方法創(chuàng)建表時(shí),可以修改表中列的名稱(chēng),通過(guò)該方法創(chuàng)建表時(shí),可以修改表中列的名稱(chēng),但是不能修改列的數(shù)據(jù)類(lèi)型和長(zhǎng)度;但是不能修改列的數(shù)據(jù)類(lèi)型和長(zhǎng)度;n源表中的約束條件和列的缺省值都不會(huì)復(fù)制到源表中的約束條件和列的缺省值都不會(huì)復(fù)制到

11、新表中;新表中;n子查詢(xún)中不能包含子查詢(xún)中不能包含LOB類(lèi)型和類(lèi)型和LONG類(lèi)型列;類(lèi)型列;n當(dāng)子查詢(xún)條件為真時(shí),新表中包含查詢(xún)到的數(shù)當(dāng)子查詢(xún)條件為真時(shí),新表中包含查詢(xún)到的數(shù)據(jù);當(dāng)查詢(xún)條件為假時(shí),則創(chuàng)建一個(gè)空表。據(jù);當(dāng)查詢(xún)條件為假時(shí),則創(chuàng)建一個(gè)空表。Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p創(chuàng)建一個(gè)表,保存工資高于3000的員工的員工號(hào)、員工名和部門(mén)號(hào)。語(yǔ)句為:nCREATE TABLE emp_select(nemp_no,emp_name,dept_non)nASnSELECT empno,ename,deptno FROM employee WHERE sal3000; Oracle 數(shù)據(jù)庫(kù)

12、基礎(chǔ)教程2007CREATE TABLE EMP_SELECT (EMPNO,ENAME,JOB, DEPTNO, SALARY)PCTFREE 10 PCTUSED 40TABLESPACE usersSTORAGE (INITIAL 50K NEXT 50K MAXEXTENTS 10 PCTINCREASE 25)AS SELECT EMPNO,ENAME ,JOB,EDPTNO,SAL FROM EMPLOYEES WHERE SAL1000 Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007創(chuàng)建臨時(shí)表創(chuàng)建臨時(shí)表 p臨時(shí)表中的數(shù)據(jù)在特定條件下自動(dòng)釋放,但其結(jié)構(gòu)將一直存在。p臨時(shí)表中的數(shù)據(jù)只在當(dāng)前會(huì)話(huà)

13、或當(dāng)前事務(wù)中是有效的。p根據(jù)臨時(shí)表中數(shù)據(jù)被釋放的時(shí)間不同,臨時(shí)表分為事務(wù)級(jí)別的臨時(shí)表和會(huì)話(huà)級(jí)別的臨時(shí)表兩類(lèi)。nON COMMIT DELETE ROWS /ON COMMIT DELETE ROWS /事務(wù)級(jí)事務(wù)級(jí)臨時(shí)表臨時(shí)表nON COMMIT PRESERVE ROWS /ON COMMIT PRESERVE ROWS /會(huì)話(huà)級(jí)會(huì)話(huà)級(jí)臨時(shí)表臨時(shí)表Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p事務(wù)級(jí)別的臨時(shí)表是在事務(wù)提交時(shí)系統(tǒng)自動(dòng)刪除表中所有記錄。nCREATE GLOBAL TEMPORARY TABLE tran_temp(nID NUMBER(2) PRIMARY KEY,nname VARC

14、HAR2(20)n)nON COMMIT DELETE ROWS;Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p會(huì)話(huà)級(jí)別的臨時(shí)表是在會(huì)話(huà)終止時(shí)系統(tǒng)自動(dòng)刪除表中所有記錄 。nCREATE GLOBAL TEMPORARY TABLE sess_temp(nID NUMBER(2) PRIMARY KEY,nname VARCHAR2(20)n)nON COMMIT PRESERVE ROWS;Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程200710.2.2表約束表約束p約束的類(lèi)別 p定義約束 p添加和刪除約束 p設(shè)置約束狀態(tài) p約束的延遲檢查 p查詢(xún)約束信息 Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007約束的類(lèi)別約束的類(lèi)別 p

15、約束作用n是在表中定義的用于維護(hù)數(shù)據(jù)庫(kù)完整性的一些規(guī)則。是在表中定義的用于維護(hù)數(shù)據(jù)庫(kù)完整性的一些規(guī)則。通過(guò)對(duì)表中列定義約束,可以防止在執(zhí)行通過(guò)對(duì)表中列定義約束,可以防止在執(zhí)行DML操作時(shí),操作時(shí),將不符合要求的數(shù)據(jù)插入到表中。將不符合要求的數(shù)據(jù)插入到表中。p約束類(lèi)型nPRIMARY KEYnUNIQUEnCHECKnFOREIGN KEY nNULL/NOT NULL Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007PRIMARY KEYp特點(diǎn)n定義主鍵,起惟一標(biāo)識(shí)作用,其值不能為定義主鍵,起惟一標(biāo)識(shí)作用,其值不能為NULL,也不能重復(fù);,也不能重復(fù);n一個(gè)表中只能定義一個(gè)主鍵約束;一個(gè)表中只能定義一個(gè)主

16、鍵約束;n建立主鍵約束的同時(shí),在該列上建立一個(gè)惟一建立主鍵約束的同時(shí),在該列上建立一個(gè)惟一性索引,可以為它指定存儲(chǔ)位置和存儲(chǔ)參數(shù);性索引,可以為它指定存儲(chǔ)位置和存儲(chǔ)參數(shù);n主鍵約束可以是列級(jí)約束,也可以是表級(jí)約束。主鍵約束可以是列級(jí)約束,也可以是表級(jí)約束。Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007UNIQUEp特點(diǎn)n定義為惟一性約束的某一列或多個(gè)列的組合的定義為惟一性約束的某一列或多個(gè)列的組合的取值必須惟一;取值必須惟一;n如果某一列或多個(gè)列僅定義惟一性約束,而沒(méi)如果某一列或多個(gè)列僅定義惟一性約束,而沒(méi)有定義非空約束,則該約束列可以包含多個(gè)空有定義非空約束,則該約束列可以包含多個(gè)空值;值;nOrac

17、le自動(dòng)在惟一性約束列上建立一個(gè)惟一自動(dòng)在惟一性約束列上建立一個(gè)惟一性索引,可以為它指定存儲(chǔ)位置和存儲(chǔ)參數(shù);性索引,可以為它指定存儲(chǔ)位置和存儲(chǔ)參數(shù);n惟一性約束可以是列級(jí)約束,也可以是表級(jí)約惟一性約束可以是列級(jí)約束,也可以是表級(jí)約束。束。 Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p在一個(gè)基本表中只能定義一個(gè)PRIMARY KEY約束,但可定義多個(gè)UNIQUE約束;p對(duì)于指定為PRIMARY KEY的一個(gè)列或多個(gè)列的組合,其中任何一個(gè)列都不能出現(xiàn)空值,而對(duì)于UNIQUE所約束的唯一鍵,則允許為空。p不能為同一個(gè)列或一組列既定義UNIQUE約束,又定義PRIMARY KEY約束。PRIMARY KEY

18、與與UNIQUE比較比較Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007CHECK p特點(diǎn)n檢查約束用來(lái)限制列值所允許的取值范圍,其檢查約束用來(lái)限制列值所允許的取值范圍,其表達(dá)式中必須引用相應(yīng)列,并且表達(dá)式的計(jì)算表達(dá)式中必須引用相應(yīng)列,并且表達(dá)式的計(jì)算結(jié)果必須是一個(gè)布爾值;結(jié)果必須是一個(gè)布爾值;n約束表達(dá)式中不能包含子查詢(xún),也不能包含約束表達(dá)式中不能包含子查詢(xún),也不能包含SYSDATE、USER等等SQL函數(shù),和函數(shù),和ROWID、ROWNUM等偽列;等偽列;n一個(gè)列可以定義多個(gè)檢查約束;一個(gè)列可以定義多個(gè)檢查約束;n檢查約束可以是列級(jí)約束,也可以是表級(jí)約束。檢查約束可以是列級(jí)約束,也可以是表級(jí)約束。 O

19、racle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p概念nFOREIGN KEY約束指定某一個(gè)列或一組約束指定某一個(gè)列或一組列作為外部鍵,其中,包含外部鍵的表稱(chēng)為列作為外部鍵,其中,包含外部鍵的表稱(chēng)為從表,包含外部鍵所引用的主鍵或唯一鍵的從表,包含外部鍵所引用的主鍵或唯一鍵的表稱(chēng)主表。表稱(chēng)主表。n系統(tǒng)保證從表在外部鍵上的取值要么是主表系統(tǒng)保證從表在外部鍵上的取值要么是主表中某一個(gè)主鍵值或唯一鍵值,要么取空值。中某一個(gè)主鍵值或唯一鍵值,要么取空值。以此保證兩個(gè)表之間的連接,確保了實(shí)體的以此保證兩個(gè)表之間的連接,確保了實(shí)體的參照完整性。參照完整性。FOREIGN KEYOracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007FORE

20、IGN KEYp特點(diǎn)n定義外鍵約束的列的取值要么是主表參照列的定義外鍵約束的列的取值要么是主表參照列的值,要么為空;值,要么為空;n外鍵列只能參照于主表中的主鍵約束列或惟一外鍵列只能參照于主表中的主鍵約束列或惟一性約束列;性約束列;n可以在一列或多列組合上定義外鍵約束;可以在一列或多列組合上定義外鍵約束;n外鍵約束可以是列級(jí)約束,也可以是表級(jí)約束。外鍵約束可以是列級(jí)約束,也可以是表級(jí)約束。Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007NULL/NOT NULL p特點(diǎn)n在同一個(gè)表中可以定義多個(gè)在同一個(gè)表中可以定義多個(gè)NOT NULL約束;約束;n只能是列級(jí)約束。只能是列級(jí)約束。Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教

21、程2007定義約束定義約束p列約束是對(duì)某一個(gè)特定列的約束,包含在列定義中,直接跟在該列的其他定義之后,用空格分隔,不必指定列名;p表約束與列定義相互獨(dú)立,不包括在列定義中。通常用于對(duì)多個(gè)列一起進(jìn)行約束,與列定義用,分隔。定義表約束時(shí)必須指出要約束的那些列的名稱(chēng)。Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p定義列級(jí)約束的語(yǔ)法為:n CONSTRAINT constraint_name constraint_type conditioin; p定義表級(jí)約束的語(yǔ)法為:nCONSTRAINT constraint_namenconstraint_type(column1_name,ncolumn2_name

22、,|condition);p注意nOracle約束通過(guò)名稱(chēng)進(jìn)行標(biāo)識(shí)。在定義時(shí)可以通過(guò)約束通過(guò)名稱(chēng)進(jìn)行標(biāo)識(shí)。在定義時(shí)可以通過(guò)CONSTRAINT關(guān)鍵字為約束命名。如果用戶(hù)沒(méi)有為關(guān)鍵字為約束命名。如果用戶(hù)沒(méi)有為約束命名,約束命名,Oracle將自動(dòng)為約束命名。將自動(dòng)為約束命名。 Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007pCREATE TABLE student(p sno NUMBER(6) CONSTRAINT S_PK PRIMARY KEY,p sname VARCHAR2(10) NOT NULL,p sex CHAR(2) CONSTRAINT S_CK1 check(sex in(M,F)

23、,p sage NUMBER(6,2),p CONSTRAINT S_CK2 CHECK(sage between 18 and 60)p); pCREATE TABLE course(p cno NUMBER(6) PRIMARY KEY,p cname CHAR(20) UNIQUEp USING INDEX TABLESPACE indx STORAGE(INITIAL 64K NEXT 64K)p );Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p定義列級(jí)FOREIGN KEY約束nCONSTRAINT constraint_name nFOREIGN KEY nREFERENCES ref_

24、table_name (column_name,)p定義表級(jí)FOREIGN KEY約束nCONSTRAINT constraint_name nFOREIGN KEY (column_name,) nREFERENCES ref_table_name (column_name,) nON DELETE CASCADE|SET NULL;Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007pON DELETE CASCADEn刪除子表中所有相關(guān)記錄刪除子表中所有相關(guān)記錄pON DELETE SET NULLn將子表中相關(guān)記錄的外鍵約束列值設(shè)置為將子表中相關(guān)記錄的外鍵約束列值設(shè)置為NULLpON DELETE R

25、ESTRICTEDn受限刪除,即如果子表中有相關(guān)子記錄存在,則不能受限刪除,即如果子表中有相關(guān)子記錄存在,則不能刪除主表中的父記錄,默認(rèn)引用方式。刪除主表中的父記錄,默認(rèn)引用方式。 Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007pDEFAULTn如果用戶(hù)在插入新行時(shí)沒(méi)有顯示為列提供數(shù)據(jù),系統(tǒng)將默認(rèn)如果用戶(hù)在插入新行時(shí)沒(méi)有顯示為列提供數(shù)據(jù),系統(tǒng)將默認(rèn)值賦給該列。值賦給該列。n語(yǔ)法語(yǔ)法CONSTRAINT DEFAULT 表達(dá)式表達(dá)式Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007添加約束添加約束 p添加約束語(yǔ)法為:nALTER TABLE table_name nADD CONSTRAINT constraint_n

26、amenconstraint_type(column1_name,column2_name,)condition; Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p創(chuàng)建一個(gè)表nCREATE TABLE player(n ID NUMBER(6),n sno NUMBER(6),n sname VARCHAR2(10),n sage NUMBER(6,2),n resume VARCHAR2(1000)n ); p添加主鍵約束nALTER TABLE player ADD CONSTRAINT P_PK PRIMARY KEY(ID);p添加惟一性約束nALTER TABLE player ADD CON

27、STRAINT P_UK UNIQUE(sname);Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p添加檢查約束nALTER TABLE player ADD CONSTRAINT P_CK CHECK(sage BETWEEN 20 AND 30);p添加外鍵約束nALTER TABLE playernADD CONSTRAINT P_FK FOREIGN KEY(sno)REFERENCES student(sno) ON DELETE CASCADE;p添加空/非空約束n注意注意:為表列添加空為表列添加空/非空約束時(shí)必須使用非空約束時(shí)必須使用MODIFY子句代替子句代替ADD子句。子句。nALT

28、ER TABLE player MODIFY resume NOT NULL;nALTER TABLE player MODIFY resume NULL;Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007修改約束修改約束nALTER TABLE nADD nMODIFY nENABLE nDISABLE nDROP Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007刪除約束刪除約束 p刪除指定內(nèi)容的約束nALTER TABLE player DROP UNIQUE(sname);p刪除指定名稱(chēng)的約束nALTER TABLE player DROP CONSTRAINT P_CK;p如果要在刪除主鍵約束、惟一性約束同時(shí)保

29、留惟一性索引,則必須在ALTER TABLEDORP 語(yǔ)句中指定KEEP INDEX 子句。nALTER TABLE player DROP CONSTRAINT P_UK KEEP INDEX;p如果要?jiǎng)h除約束同時(shí),刪除引用該約束的其他約束,則需要在ALTER TABLEDORP語(yǔ)句中指定CASCADE關(guān)鍵字。nALTER TABLE player DROP CONSTRAINT P_PK CASCADE; Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007設(shè)置約束狀態(tài)設(shè)置約束狀態(tài) p激活(ENABLE)狀態(tài)n當(dāng)約束處于激活狀態(tài)時(shí),約束將對(duì)表的插入或更新操作當(dāng)約束處于激活狀態(tài)時(shí),約束將對(duì)表的插入或更新操作

30、進(jìn)行檢查,與約束規(guī)則沖突的操作被回退進(jìn)行檢查,與約束規(guī)則沖突的操作被回退。p禁用(DISABLE)狀態(tài)n當(dāng)約束處于禁用狀態(tài)時(shí),約束不起作用,與約束規(guī)則沖當(dāng)約束處于禁用狀態(tài)時(shí),約束不起作用,與約束規(guī)則沖突的插入或更新操作也能夠成功執(zhí)行。突的插入或更新操作也能夠成功執(zhí)行。p利用SQL*Loader從外部數(shù)據(jù)源提取大量數(shù)據(jù)到數(shù)據(jù)庫(kù)中;p進(jìn)行數(shù)據(jù)庫(kù)中數(shù)據(jù)的大量導(dǎo)入、導(dǎo)出操作;p針對(duì)表執(zhí)行一項(xiàng)包含大量數(shù)據(jù)操作的批處理工作時(shí)。Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p禁用約束 n在定義約束時(shí),可以將約束設(shè)置為禁用狀態(tài),默認(rèn)為在定義約束時(shí),可以將約束設(shè)置為禁用狀態(tài),默認(rèn)為激活狀態(tài)。也可以在約束創(chuàng)建后,修改約束狀

31、態(tài)為禁激活狀態(tài)。也可以在約束創(chuàng)建后,修改約束狀態(tài)為禁用。用。n創(chuàng)建表時(shí)禁用約束創(chuàng)建表時(shí)禁用約束pCREATE TABLE S (SNO CHAR(10) PRIMARY KEY DISALBE,);n利用利用ALTER TABLEDISABLE禁用約束禁用約束pALTER TABLE STUDENT DISABLE CONSTRAINT S_CK1;pALTER TABLE STUDENT DISABLE UNIQUE (sname);Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007n禁用主鍵約束、惟一性約束時(shí),會(huì)刪除其對(duì)應(yīng)的惟一性索引,而禁用主鍵約束、惟一性約束時(shí),會(huì)刪除其對(duì)應(yīng)的惟一性索引,而在重新激活

32、時(shí),在重新激活時(shí),Oracle為它們重建惟一性索引。若在禁用約束時(shí),為它們重建惟一性索引。若在禁用約束時(shí),保留對(duì)應(yīng)的惟一性索引,可使用保留對(duì)應(yīng)的惟一性索引,可使用ALTER TABLEDISABLEKEEP INDEX語(yǔ)句。語(yǔ)句。pALTER TABLE STUDENT DISABLE UNIQUE (sname) KEEP INDEX;pALTER TABLE STUDENT DISABLE PRIMARY KEY KEEP INDEX;n若當(dāng)前約束若當(dāng)前約束(主鍵約束、惟一性約束主鍵約束、惟一性約束)列被引用,則需要使用列被引用,則需要使用ALTER TABLEDISABLECASCADE

33、語(yǔ)句同時(shí)禁用引用該語(yǔ)句同時(shí)禁用引用該約束的約束。約束的約束。pALTER TABLE STUDENT DISABLE PRIMARY KEY KEEP INDEX CASCADE; Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p激活約束n創(chuàng)建或添加約束時(shí),默認(rèn)為激活狀態(tài)。創(chuàng)建或添加約束時(shí),默認(rèn)為激活狀態(tài)。n利用利用ALTER TABLEENABLE語(yǔ)句激活約束語(yǔ)句激活約束pALTER TABLE STUDENT ENABLE UNIQUE (sname);n禁用主鍵約束、惟一性約束時(shí),會(huì)刪除其對(duì)應(yīng)的惟一性索引,而禁用主鍵約束、惟一性約束時(shí),會(huì)刪除其對(duì)應(yīng)的惟一性索引,而在重新激活時(shí),在重新激活時(shí),Ora

34、cle為它們重建惟一性索引,可以為索引設(shè)置為它們重建惟一性索引,可以為索引設(shè)置存儲(chǔ)位置和存儲(chǔ)參數(shù)存儲(chǔ)位置和存儲(chǔ)參數(shù)(索引與表盡量分開(kāi)存儲(chǔ)索引與表盡量分開(kāi)存儲(chǔ))。pALTER TABLE STUDENT ENABLE PRIMARY KEY pUSING INDEX TABLESPACE indx STORAGE(INITIAL 32K NEXT 16K);n通過(guò)通過(guò)ALTER TABLEMODIFYDISABLE|ENABLE語(yǔ)句語(yǔ)句改變約束狀態(tài)改變約束狀態(tài)pALTER TABLE STUDENT MODIFY CONSTRAINT S_CK2 DISABLE;Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程20

35、07 約束的延遲檢查約束的延遲檢查 p默認(rèn)情況下,在表中的約束都是不可延遲約束,Oracle在一條DML語(yǔ)句執(zhí)行完畢之后立即進(jìn)行約束檢查(除非禁用)。 p創(chuàng)建約束時(shí)可以顯式使用DEFERRABLE關(guān)鍵字,創(chuàng)建可延遲的約束。pINITIALLY IMMEDIATE 或INITIALLY DEFERRED說(shuō)明可延遲約束在初始狀態(tài)下是立即檢查還是延遲檢查p如果在定義約束時(shí)設(shè)定為不可延遲,則約束創(chuàng)建后不能更改其可延遲性。只有創(chuàng)建時(shí)設(shè)定為可延遲的約束,創(chuàng)建后才能更改其可延遲性。 Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p創(chuàng)建兩個(gè)表,其約束都是可延遲的。nCREATE TABLE new_dept(ndept

36、no NUMBER PRIMARY KEY DEFERRABLE INITIALLY IMMEDIATE,ndname CHAR(10) UNIQUEn); nCREATE TABLE new_emp(nempno NUMBER PRIMARY KEY,nename CHAR(10),ndeptno NUMBER CONSTRAINT NE_FK REFERENCES new_dept(deptno)nON DELETE CASCADE DEFERRABLEn);Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p由于外鍵約束的作用,執(zhí)行下面語(yǔ)句時(shí)會(huì)產(chǎn)時(shí)錯(cuò)誤。nINSERT INTO new_emp VAL

37、UES(1,ZHANG,10);n*nERROR 位于第位于第 1 行行:nORA-02291: 違反完整約束條件違反完整約束條件 (SCOTT.E_FK) - 未找到父未找到父項(xiàng)關(guān)鍵字項(xiàng)關(guān)鍵字 Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p將new_emp表的外鍵約束檢查延遲。nALTER TABLE new_emp MODIFY CONSTRAINT NE_FK INITIALLY DEFERRED;p此時(shí),由于將new_emp表外鍵約束延遲到事務(wù)結(jié)束后進(jìn)行檢查,因此可以先向new_emp中插入數(shù)據(jù),而后向new_dept中插入數(shù)據(jù)。nINSERT INTO new_emp VALUES(1,ZH

38、ANG,10);nINSERT INTO new_dept VALUES(10,COMPUTER);nCOMMIT; Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p操作完后,應(yīng)將new_emp外鍵約束檢查恢復(fù)原來(lái)狀態(tài)。nALTER TABLE new_emp MODIFY CONSTRAINT NE_FK INITIALLY IMMEDIATE;p注意:在修改約束的檢查延遲性時(shí),如果無(wú)法確定約束的名稱(chēng)或需要設(shè)置多個(gè)約束的延遲性,可以一次性將所有可延遲的約束延遲或恢復(fù)。nSET CONSTRAINT ALL DEFERRED;nSET CONSTRAINT ALL IMMEDIATE; Oracle 數(shù)

39、據(jù)庫(kù)基礎(chǔ)教程2007查詢(xún)約束信息查詢(xún)約束信息pALL_CONSTRAINTSpUSER_CONSTRAINTSpDBA_CONSTRAINTSpALL_CONS_COLUMNSpUSER_CONS_COLUMNSpDAB_CONS_COLUMNSOracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p從表USER_CONSTRAINTS中查看所有約束的名字、定義 SELECT constraint_name, constraint_type search_condition FROM user_constraints WHEREtable_name = EMP;p從視圖 USER_CONS_COLUMNS中查看

40、約束關(guān)聯(lián)的列 SELECTconstraint_name, column_name FROM user_cons_columns WHEREtable_name = EMP;Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程200710.2.3表參數(shù)設(shè)置表參數(shù)設(shè)置pTABLESPACEnTABLESPACE子句用于指定表存儲(chǔ)的表空間。子句用于指定表存儲(chǔ)的表空間。 pSTORAGE nSTORAGE子句用于設(shè)置表的存儲(chǔ)參數(shù)。若不指定,則繼承表空子句用于設(shè)置表的存儲(chǔ)參數(shù)。若不指定,則繼承表空間的存儲(chǔ)參數(shù)設(shè)置。間的存儲(chǔ)參數(shù)設(shè)置。 pNITIAL pNEXTpPCTINCREASEpMINEXTENTSpMAXEXTENT

41、SpBUFFER_POOL (KEEP、RECYCLE、DEFAULT) Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007nSTORAGE參數(shù)設(shè)置需注意:參數(shù)設(shè)置需注意:p如果表空間管理方式為EXTENT MANAGEMENT LOCAL AUTOALLOCATE,則在STORAGE中只能指定INITIAL,NEXT和MINEXTENTS這3個(gè)參數(shù);p如果表空間管理方式為EXTENT MANAGEMENT LOCAL UNIFORM,則不能指定任何STORAGE子句;p如果表空間管理方式為EXTENT MANAGEMENT DICTIONARY,則在STORAG中可以設(shè)置任何參數(shù)。 Oracle 數(shù)據(jù)庫(kù)基

42、礎(chǔ)教程2007p數(shù)據(jù)塊管理參數(shù) nPCTFREE:用于指定數(shù)據(jù)塊中必須保留的最小空閑:用于指定數(shù)據(jù)塊中必須保留的最小空閑空間??臻g。nPCTUSED:用于指定當(dāng)數(shù)據(jù)塊空閑空間達(dá)到:用于指定當(dāng)數(shù)據(jù)塊空閑空間達(dá)到PCTFREE參數(shù)的限制后,數(shù)據(jù)塊能夠被再次使用前,參數(shù)的限制后,數(shù)據(jù)塊能夠被再次使用前,已占用的存儲(chǔ)空間必須低于的比例。已占用的存儲(chǔ)空間必須低于的比例。nINITRANS:用于指定能夠并發(fā)訪問(wèn)同一個(gè)數(shù)據(jù)塊的:用于指定能夠并發(fā)訪問(wèn)同一個(gè)數(shù)據(jù)塊的事務(wù)的數(shù)量。事務(wù)的數(shù)量。nMAXTRANS:用于指定能夠并發(fā)訪問(wèn)同一個(gè)數(shù)據(jù)塊:用于指定能夠并發(fā)訪問(wèn)同一個(gè)數(shù)據(jù)塊的事務(wù)的最大數(shù)量。的事務(wù)的最大數(shù)量。O

43、racle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007pLOGGING子句n默認(rèn)為默認(rèn)為NOLOGGING,即表的創(chuàng)建操作不會(huì)記錄到,即表的創(chuàng)建操作不會(huì)記錄到重做日志文件中,尤其適合通過(guò)查詢(xún)創(chuàng)建表的情況。重做日志文件中,尤其適合通過(guò)查詢(xún)創(chuàng)建表的情況。使用使用LOGGING子句,表的創(chuàng)建操作(包括通過(guò)查詢(xún)子句,表的創(chuàng)建操作(包括通過(guò)查詢(xún)創(chuàng)建表時(shí)的插入記錄操作)都將記錄到重做日志文件創(chuàng)建表時(shí)的插入記錄操作)都將記錄到重做日志文件中。中。pLOGGING 、NOLOGGINGpPARALLEL、NOPARALLELpCACHE、NOCACHEpMONITORING、NOMONITORINGOracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2

44、00710.2.4修改表修改表p基本語(yǔ)法p列的添加、刪除、修改p約束添加、刪除、修改p表參數(shù)修改p表結(jié)構(gòu)重組p表重命名等p為表和列添加注釋 Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007ALTER TABLE ADD 完整性約束定義MODIFY RENAME COLUMN oldname TO newnameSET UNUSED COLUMN column /single columnSET UNUSED COLUMNS(column1,column2)DROP COLUMN /single columnDROP /multi columnDROP UNUSED COLUMNSOracle 數(shù)據(jù)庫(kù)基礎(chǔ)教

45、程2007p添加列 n語(yǔ)法語(yǔ)法pALTER TABLE table_name pADD(new_column_name datatypeNOT NULLDEFAULT value); n示例示例pALTER TABLE employee pADD(phone VARCHAR2(10),hiredate DATE DEFAULT SYSDATE NOT NULL); Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p修改列類(lèi)型 n語(yǔ)法語(yǔ)法pALTER TABLE table_name MODIFY column_name new_datatype; n修改表中列類(lèi)型時(shí),必須滿(mǎn)足下列條件:修改表中列類(lèi)型時(shí),必

46、須滿(mǎn)足下列條件:p可以增大字符類(lèi)型列的長(zhǎng)度和數(shù)值類(lèi)型列的精度;p如果字符類(lèi)型列、數(shù)值類(lèi)型列中數(shù)據(jù)滿(mǎn)足新的長(zhǎng)度、精度,則可以縮小類(lèi)型的長(zhǎng)度、精度;p如果不改變字符串的長(zhǎng)度,可以將VARCHAR2類(lèi)型和CAHR類(lèi)型轉(zhuǎn)換;p如果更改數(shù)據(jù)類(lèi)型為另一種非同系列類(lèi)型,則列中數(shù)據(jù)必須為NULL。 Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007n示例示例pALTER TABLE employee MODIFY ename CHAR(20);pALTER TABLE employee MODIFY phone NUMBER; p修改列名 n語(yǔ)法語(yǔ)法pALTER TABLE table_name RENAME COLUMN

47、 oldname TO newname;n示例示例 pALTER TABLE employee RENAME COLUMN ename TO employee_name; Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p刪除列 n直接刪除列語(yǔ)法直接刪除列語(yǔ)法pALTER TABLE table_name pDROP COLUMN column_name|(column1_name,column2_name,)pCASCADE CONSTRAINTS; n直接刪除列示例直接刪除列示例pALTER TABLE sc DROP COLUMN sno CASCADE CONSTRAINTS;pALTER TAB

48、LE employee DROP (phone,hiredate);Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007n將列標(biāo)記為將列標(biāo)記為UNUSED,然后進(jìn)行刪除。,然后進(jìn)行刪除。pALTER TABLE table_name pSET UNUSED COLUMN column_name|(column1_name,column2_name,)pCASCADE CONSTRAINTS; n示例示例pALTER TABLE player SET UNUSED COLUMN sage;pALTER TABLE player SET UNUSED (sname,resume);pALTER TABLE pla

49、yer DROP UNUSED COLUMNS; Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p表參數(shù)修改n可以對(duì)表的參數(shù)進(jìn)行修改,包括存儲(chǔ)參數(shù)、存儲(chǔ)位置、可以對(duì)表的參數(shù)進(jìn)行修改,包括存儲(chǔ)參數(shù)、存儲(chǔ)位置、數(shù)據(jù)塊設(shè)置等。數(shù)據(jù)塊設(shè)置等。pALTER TABLE employee pPCTFREE 30 PCTUSED 60 STORAGE(NEXT 512K PCTINCREASE 10);n注意:表創(chuàng)建后不能對(duì)注意:表創(chuàng)建后不能對(duì)INITIAL、MINEXTENTS兩個(gè)參數(shù)進(jìn)行修改。兩個(gè)參數(shù)進(jìn)行修改。Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p表結(jié)構(gòu)重組n將一個(gè)非分區(qū)的表移動(dòng)到一個(gè)新的數(shù)據(jù)段中,或者移將一個(gè)非

50、分區(qū)的表移動(dòng)到一個(gè)新的數(shù)據(jù)段中,或者移動(dòng)到其他的表空間中,通過(guò)這種操作可以重建表的存動(dòng)到其他的表空間中,通過(guò)這種操作可以重建表的存儲(chǔ)結(jié)構(gòu),稱(chēng)為表結(jié)構(gòu)重組。儲(chǔ)結(jié)構(gòu),稱(chēng)為表結(jié)構(gòu)重組。n語(yǔ)法語(yǔ)法pALTER TABLE tbname MOVE TABLESPACE tbs_name n注意注意 p直到表被完全移動(dòng)到新的數(shù)據(jù)段中之后,Oracle才會(huì)刪除原來(lái)的數(shù)據(jù)段;p表結(jié)構(gòu)重組后,表中每個(gè)記錄的ROWID會(huì)發(fā)生變化,因此該表的所有索引失效,需要重新建立索引;p如果表中包含LOB列,則默認(rèn)情況下不移動(dòng)LOB列數(shù)據(jù)和LOB索引段。Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p表重命名n語(yǔ)法語(yǔ)法pALTER TA

51、BLE table_old_name RENAME TO table_new_name;pRENAME table_old_name TO table_new_name; n說(shuō)明說(shuō)明pOracle自動(dòng)更新相應(yīng)的約束、索引和與此表相關(guān)的權(quán)限;p同時(shí)以此表為參考的視圖、同義詞、存儲(chǔ)過(guò)程和函數(shù)為非法。Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p為表添加注釋n語(yǔ)法語(yǔ)法pCOMMENT ON TALBE table_name IS;p為列添加注釋n語(yǔ)法語(yǔ)法pCOMMENT ON COLUMN table_name.column_name IS p注釋可以通過(guò)以下數(shù)據(jù)字典來(lái)查看.nALL_COL_COMMENT

52、SnUSER_COL_COMMENTSnALL_TAB_COMMENTSnUSER_TAB_COMMENTSOracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程200710.2.5刪除表刪除表p使用DELETE語(yǔ)句刪減表 p使用TRUNCATE語(yǔ)句刪減表 n TRUNCATE TABLE EMP REUSE STORAGETRUNCATE TABLE EMP REUSE STORAGE p使用DROP語(yǔ)句刪除表 nDROP TABLE EMP CASCADE CONSTRAINTSDROP TABLE EMP CASCADE CONSTRAINTS pDELETE、TRUNCATE

53、、DROP 區(qū)別Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p刪除一個(gè)表同時(shí),Oracle將執(zhí)行下列操作:n刪除該表中所有記錄;刪除該表中所有記錄;n從數(shù)據(jù)字典中刪除該表定義;從數(shù)據(jù)字典中刪除該表定義;n刪除與該表相關(guān)的所有索引和觸發(fā)器;刪除與該表相關(guān)的所有索引和觸發(fā)器;n回收為該表分配的存儲(chǔ)空間;回收為該表分配的存儲(chǔ)空間;n依賴(lài)于該表的數(shù)據(jù)庫(kù)對(duì)象處于依賴(lài)于該表的數(shù)據(jù)庫(kù)對(duì)象處于INVALID狀態(tài)。狀態(tài)。Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程200710.2.6利用利用OEM管理表管理表p創(chuàng)建表p刪除表p修改表p查詢(xún)表Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程200710.3索引索引p索引概述p索引管理p利用OEM管理索引Or

54、acle 數(shù)據(jù)庫(kù)基礎(chǔ)教程200710.3.110.3.1索引概述索引概述p索引概念及作用n索引是為了加速對(duì)表中元組的檢索而創(chuàng)建的一種分索引是為了加速對(duì)表中元組的檢索而創(chuàng)建的一種分散存儲(chǔ)結(jié)構(gòu);散存儲(chǔ)結(jié)構(gòu);n是對(duì)表而建立的,由除存放表的數(shù)據(jù)頁(yè)面以外的索是對(duì)表而建立的,由除存放表的數(shù)據(jù)頁(yè)面以外的索引頁(yè)面組成,獨(dú)立于被索引的表;引頁(yè)面組成,獨(dú)立于被索引的表;n通過(guò)使用索引加速行的檢索,但減慢更新的速度;通過(guò)使用索引加速行的檢索,但減慢更新的速度;n快速定位數(shù)據(jù),減少磁盤(pán)快速定位數(shù)據(jù),減少磁盤(pán) I/OI/O;nOracleOracle自動(dòng)使用、維護(hù)索引自動(dòng)使用、維護(hù)索引Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程200

55、7p索引分類(lèi)n惟一性索引與非惟一性索引惟一性索引與非惟一性索引 n平衡樹(shù)索引與位圖索引平衡樹(shù)索引與位圖索引 n單列索引與復(fù)合索引單列索引與復(fù)合索引n函數(shù)索引函數(shù)索引 n聚簇索引聚簇索引n全局索引與本地索引全局索引與本地索引Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p索引使用原則n導(dǎo)入數(shù)據(jù)后再創(chuàng)建索引導(dǎo)入數(shù)據(jù)后再創(chuàng)建索引 n在適當(dāng)?shù)谋砗妥侄紊蟿?chuàng)建索引在適當(dāng)?shù)谋砗妥侄紊蟿?chuàng)建索引 p經(jīng)常查詢(xún)的記錄數(shù)目少于表中所有記錄總數(shù)的5%;p經(jīng)常進(jìn)行連接查詢(xún)表,在連接列上建立索引能夠顯著提高查詢(xún)的速度;p對(duì)于取值范圍很大的列應(yīng)當(dāng)創(chuàng)建B樹(shù)索引;p對(duì)于取值范圍很小的列應(yīng)當(dāng)創(chuàng)建位圖索引p不能在LONG、LONG RAW、L

56、OB數(shù)據(jù)類(lèi)型的列上創(chuàng)建索引;pOracle會(huì)自動(dòng)在PRIMARY KEY和UNIQUE約束的列上創(chuàng)建惟一性索引。n合理設(shè)置復(fù)合索引中的字段順序合理設(shè)置復(fù)合索引中的字段順序 Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007n限制表中索引的數(shù)目限制表中索引的數(shù)目 p表中索引數(shù)目越多,查詢(xún)速度越快,但表的更新速度越慢。因?yàn)樗饕蕉?,維護(hù)索引所需開(kāi)銷(xiāo)越大,當(dāng)更新表時(shí),需要同時(shí)更新與表相關(guān)的所有索引。 n為索引設(shè)置合適的為索引設(shè)置合適的PCTFREEPCTFREE參數(shù)參數(shù) n選擇存儲(chǔ)索引的表空間選擇存儲(chǔ)索引的表空間p默認(rèn)情況下,索引與表存儲(chǔ)在同一表空間中。索引與表存儲(chǔ)在同一表空間中,有利于數(shù)據(jù)庫(kù)維護(hù)操作,具有較高的

57、可用性;反之,若索引與表存儲(chǔ)在不同的表空間中,則可提高系統(tǒng)的存取性能,減少硬盤(pán)I/O沖突,但是表與索引可用狀態(tài)可能出現(xiàn)不一致,如一個(gè)處于聯(lián)機(jī)狀態(tài),另一個(gè)處于脫機(jī)狀態(tài)。 Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程200710.3.2管理索引管理索引p創(chuàng)建索引p修改索引p刪除索引p索引的查詢(xún)Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p語(yǔ)法nCREATE UNIQUE|BITMAP INDEX index_namenON table_name(column_nameASC|DESC,|nexpression) nREVERSEnparameter_list;p說(shuō)明nUNIQUE表示建立惟一性索引;表示建立惟一性索引;n

58、BITMAP表示建立位圖索引;表示建立位圖索引;nASC/DESC用于指定索引值的排列順序,用于指定索引值的排列順序,ASC表示按升序排序,表示按升序排序,DESC表示按降序排序,缺省值為表示按降序排序,缺省值為ASC;nREVERSE表示建立反鍵索引;表示建立反鍵索引;nparameter_list用于指定索引的存放位置、存儲(chǔ)空間分配和數(shù)用于指定索引的存放位置、存儲(chǔ)空間分配和數(shù)據(jù)塊參數(shù)設(shè)置。據(jù)塊參數(shù)設(shè)置。創(chuàng)建索引創(chuàng)建索引Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p創(chuàng)建非惟一性索引 nCREATE INDEX employee_ename ON employee(ename)TABLESPACE u

59、sers STORAGE (INITIAL 20K NEXT 20k PCTINCREASE 75); p創(chuàng)建惟一性索引 nCREATE UNIQUE INDEX deptartment_index ON department(dname); p創(chuàng)建位圖索引 nCREATE BITMAP INDEX student_sex ON student(sex);創(chuàng)建反序索引創(chuàng)建反序索引 p創(chuàng)建反序索引 nCREATE INDEX player_sage ON player(sage) REVERSE; Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007p創(chuàng)建函數(shù)索引 nCREATE INDEX idx ON em

60、ployee(UPPER(ename);p定義約束時(shí)創(chuàng)建索引nCREATE TABLE new_employee(nempno NUMBER(5) PRIMARY KEY USING INDEX TABLESPACE users PCTFREE 0,nename VARCHAR2(20)n); Oracle 數(shù)據(jù)庫(kù)基礎(chǔ)教程2007修改索引修改索引p修改索引的存儲(chǔ)參數(shù) nALTER INDEX employee_ename STORAGE (PCTINCREASE 50); p合并索引 nALTER INDEXCOALESCE nALTER INDEX employee_ename COALES

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論