【文章內(nèi)容簡(jiǎn)介】
延遲。n ALTER 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ù)。n INSERT INTO new_emp VALUES(1,39。ZHANG39。,11)。n INSERT INTO new_dept VALUES(11,39。COMPUTER39。)。n COMMIT。 Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p 操作完后,應(yīng)將 new_emp外鍵約束檢查恢復(fù)原來(lái)狀態(tài)。n ALTER TABLE new_emp MODIFY CONSTRAINT NE_FK INITIALLY IMMEDIATE。p 注意n 在修改約束的檢查延遲性時(shí),如果無(wú)法確定約束的名稱或需要設(shè)置多個(gè)約束的延遲性,可以一次性將所有可延遲的約束延遲或恢復(fù)。p SET CONSTRAINT ALL DEFERRED。p SET CONSTRAINT ALL IMMEDIATE。 Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程( 6)查詢約束信息p ALL_CONSTRAINTSp USER_CONSTRAINTSp DBA_CONSTRAINTSp ALL_CONS_COLUMNSp USER_CONS_COLUMNSp DAB_CONS_COLUMNSOracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p 查看 student表中的所有約束。n SELECT CONSTRAINT_NAME, n CONSTRAINT_TYPE,DEFERRED,STATUSn FROM USER_CONSTRAINTS n WHERE TABLE_NAME=39。STUDENT39。p 查看 student表中各個(gè)約束所作用的列。n SELECT CONSTRAINT_NAME, n COLUMN_NAME n FROM USER_CONS_COLUMNSn WHERE TABLE_NAME=39。STUDENT39。Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程 表參數(shù)設(shè)置p TABLESPACEn TABLESPACE子句用于指定表存儲(chǔ)的表空間。 p STORAGE n STORAGE子句用于設(shè)置表的存儲(chǔ)參數(shù)。若不指定,則繼承表空間的存儲(chǔ)參數(shù)設(shè)置。 p NITIAL p NEXTp PCTINCREASEp MINEXTENTSp MAXEXTENTSp BUFFER_POOL (KEEP、 RECYCLE、 DEFAULT) Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p STORAGE參數(shù)設(shè)置需注意n 如果表空間管理方式為 EXTENT MANAGEMENT LOCAL AUTOALLOCATE,則在 STORAGE中只能指定 INITIAL, NEXT和 MINEXTENTS這 3個(gè)參數(shù);n 如果表空間管理方式為 EXTENT MANAGEMENT LOCAL UNIFORM,則不能指定任何 STORAGE子句;n 如果表空間管理方式為 EXTENT MANAGEMENT DICTIONARY,則在 STORAG中可以設(shè)置任何參數(shù)。Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p 數(shù)據(jù)塊管理參數(shù) n PCTFREE:用于指定數(shù)據(jù)塊中必須保留的最小空閑空間。n PCTUSED:用于指定當(dāng)數(shù)據(jù)塊空閑空間達(dá)到PCTFREE參數(shù)的限制后,數(shù)據(jù)塊能夠被再次使用前,已占用的存儲(chǔ)空間必須低于的比例。n INITRANS:用于指定能夠并發(fā)訪問(wèn)同一個(gè)數(shù)據(jù)塊的事務(wù)的數(shù)量。n MAXTRANS:用于指定能夠并發(fā)訪問(wèn)同一個(gè)數(shù)據(jù)塊的事務(wù)的最大數(shù)量。Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p LOGGING與 NOLOGGING子句n 默認(rèn)為 NOLOGGING,即表的創(chuàng)建操作不會(huì)記錄到重做日志文件中,尤其適合通過(guò)查詢創(chuàng)建表的情況。使用 LOGGING子句,表的創(chuàng)建操作(包括通過(guò)查詢創(chuàng)建表時(shí)的插入記錄操作)都將記錄到重做日志文件中。p PARALLEL、 NOPARALLELp CACHE、 NOCACHEp MONITORING、 NOMONITORINGOracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程 修改表p 基本語(yǔ)法p 列的添加、刪除、修改p 表參數(shù)修改p 表結(jié)構(gòu)重組p 表重命名等p 為表和列添加注釋 Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程(1)修改表基本語(yǔ)法p ALTER TABLE 表名 p ADD 新列名 數(shù)據(jù)類型 [ 完整性約束定義 ]p MODIFY 列名 數(shù)據(jù)類型 p RENAME COLUMN oldname TO newnamep SET UNUSED COLUMN column //single columnp SET UNUSED COLUMNS( column1, column2… )p DROP COLUMN col //single columnp DROP col1, col2… //multi columnp DROP UNUSED COLUMNSOracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程(2)列的添加、刪除、修改 p 添加列 n 語(yǔ)法p ALTER TABLE table_name p ADD(new_column_name datatype[NOT NULL][DEFAULT value])。 n 示例p ALTER TABLE employee p ADD(phone VARCHAR2(11),hiredate DATE DEFAULT SYSDATE NOT NULL)。Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p 修改列類型 n 語(yǔ)法p ALTER TABLE table_name MODIFY column_name new_datatype。 n 修改表中列類型時(shí),必須滿足下列條件:p 可以增大字符類型列的長(zhǎng)度和數(shù)值類型列的精度;p 如果字符類型列、數(shù)值類型列中數(shù)據(jù)滿足新的長(zhǎng)度、精度,則可以縮小類型的長(zhǎng)度、精度;p 如果不改變字符串的長(zhǎng)度,可以將 VARCHAR2類型和 CAHR類型轉(zhuǎn)換;p 如果更改數(shù)據(jù)類型為另一種非同系列類型,則列中數(shù)據(jù)必須為NULL。 Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程n 示例p ALTER TABLE employee MODIFY ename CHAR(20)。p ALTER TABLE employee MODIFY phone NUMBER。 p 修改列名 n 語(yǔ)法p ALTER TABLE table_name RENAME COLUMN oldname TO newname。n 示例 p ALTER TABLE employee RENAME COLUMN ename TO employee_name; Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p 刪除列 n 直接刪除列語(yǔ)法p ALTER TABLE table_name p DROP [COLUMN column_name]|p [(column1_name,column2_name,… )] p [CASCADE CONSTRAINTS]。 n 直接刪除列示例p ALTER TABLE sc DROP COLUMN sno CASCADE p CONSTRAINTS。p ALTER TABLE employee DROP (phone,hiredate)。Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程n 將列標(biāo)記為 UNUSED,然后進(jìn)行刪除。p ALTER TABLE table_name p SET UNUSED [COLUMN column_name]| p [(column1_name,column2_name,… )]p [CASCADE CONSTRAINTS]。 n 示例p ALTER TABLE player SET UNUSED COLUMN sage。p ALTER TABLE player SET UNUSED (sname,resume)。p ALTER TABLE player DROP UNUSED COLUMNS。 Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p 如果數(shù)據(jù)庫(kù)表空間處于字典管理方式,可以對(duì)表的參數(shù)進(jìn)行修改,包括存儲(chǔ)參數(shù)、存儲(chǔ)位置、數(shù)據(jù)塊設(shè)置等。n ALTER TABLE employee n PCTFREE 30 PCTUSED 60 STORAGE(NEXT 512K PCTINCREASE 11)。p 注意n 表創(chuàng)建后不能對(duì) INITIAL、 MINEXTENTS兩個(gè)參數(shù)進(jìn)行修改。(3)表參數(shù)修改Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p 將一個(gè)非分區(qū)的表移動(dòng)到一個(gè)新的數(shù)據(jù)段中,或者移動(dòng)到其他的表空間中,通過(guò)這種操作可以重建表的存儲(chǔ)結(jié)構(gòu),稱為表結(jié)構(gòu)重組。p 如果發(fā)現(xiàn)表的數(shù)據(jù)段具有不合理的區(qū)分配方式,但是又不能通過(guò)別的方法來(lái)進(jìn)行調(diào)整(改變存儲(chǔ)參數(shù)不會(huì)影響到已經(jīng)分配的區(qū)),可以考慮將表移動(dòng)到一個(gè)新的數(shù)據(jù)段中。此外,如果頻繁地對(duì)表進(jìn)行 DML操作,會(huì)產(chǎn)生大量空間碎片和行遷移、行連接,可以考慮進(jìn)行表結(jié)構(gòu)重組。(4)表結(jié)構(gòu)重組Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p 語(yǔ)法n ALTER TABLE tbname MOVE [TABLESPACE tbs_name] p 注意 n 直到表被完全移動(dòng)到新的數(shù)據(jù)段中之后, Oracle才會(huì)刪除原來(lái)的數(shù)據(jù)段;n 表結(jié)構(gòu)重組后,表中每個(gè)記錄的 ROWID會(huì)發(fā)生變化,因此該表的所有索引失效,需要重新建立索引;n 如果表中包含 LOB列,則默認(rèn)情況下不移動(dòng) LOB列數(shù)據(jù)和 LOB索引段。Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p語(yǔ)法n ALTER TABLE old_name RENAME TO new_name。n RENAME old_name TO new_name。 p說(shuō)明n 表重命名后, Oracle會(huì)自動(dòng)將舊表上的對(duì)象權(quán)限、約束條件等轉(zhuǎn)換到新表上,但是所有與舊表相關(guān)聯(lián)的對(duì)象都會(huì)失效,需要重新編譯 。(5)表重命名Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p 為表添加注釋n COMMENT ON TALBE table_name IS… ;p 為列添加注釋n COMMENT ON COLUMN IS… p 注釋可以通過(guò)以下數(shù)據(jù)字典來(lái)查看 .n ALL_COL_COMMENTSn USER_COL_COMMENTSn ALL_TAB_COMMENTSn USER_TAB_COMMENTS(6)為表和列添加注釋 Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p 語(yǔ)法n DROP TABLE table_namen [CASCADE CONSTRAINTS][PURGE] p 刪除一個(gè)表同時(shí), Oracle將執(zhí)行下列操作:n 刪除該表中所有記錄;n 從數(shù)據(jù)字典中刪除該表定義;n 刪除與該表相關(guān)的所有索引和觸發(fā)器;n 回收為該表分配的存儲(chǔ)空間;n 依賴于該表的數(shù)據(jù)庫(kù)對(duì)象處于 INVALID狀態(tài)。 刪除表Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p 注意n 在 Oracle 10g中,使用 DROP TABLE語(yǔ)句刪除一個(gè)表時(shí),并不立即回收該表的空間,而只是將表及其關(guān)聯(lián)對(duì)象的信息寫入一個(gè)稱為 “ 回收站 ” (RECYCLEBIN)的邏輯容器中,從而可以實(shí)現(xiàn)閃回刪除表操作。如果要回收該表空間,可以采用清空 “回收站 ” ( PURGE RECYCLEBIN)或在 DROP TABLE語(yǔ)句中使用 PURGE語(yǔ)句。Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程 OEM管理表p 創(chuàng)建表p 刪除表p 修改表p 查詢表Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程( 1)創(chuàng)建表Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程( 2)表的其他管理Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程 索引p 索引概述p 索引管理p 利用 OEM管理索引Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p 索引概念及作用n 索引是為了加速對(duì)表中元組的檢索而創(chuàng)建的一種分散存儲(chǔ)結(jié)構(gòu);n 是對(duì)表而建立的,由除存放表的數(shù)據(jù)頁(yè)面以外的索引頁(yè)面組成,獨(dú)立于被索引的表;n 通過(guò)使用索引加速行的檢索,但減慢更新的速度;n 快速定位數(shù)據(jù),減少磁盤 I/O;n Oracle自動(dòng)使用、維護(hù)索引Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p 索引分類n 惟一性索引與非惟一性索引 n 平衡樹索引與位圖索引 n 單列索引與復(fù)合索引n 函數(shù)索引 n 聚簇索引n 全局索引與本地索引Oracle10g數(shù)據(jù)庫(kù)基礎(chǔ)教程p 索引使用原則n 導(dǎo)入數(shù)據(jù)后再創(chuàng)建索引 n 在適當(dāng)?shù)谋砗妥侄紊蟿?chuàng)建索引 p 經(jīng)常查詢的記錄數(shù)目少于表中所有記錄總數(shù)的 5%時(shí)就應(yīng)當(dāng)創(chuàng)建索引;p 經(jīng)常進(jìn)行連接查詢表時(shí),在連接列上建立索引能夠顯著提高查詢的速度;p 對(duì)于取值范圍很大的列應(yīng)當(dāng)創(chuàng)建 B樹索引;p 對(duì)于取值范圍很小的列應(yīng)當(dāng)創(chuàng)建位圖索引;p 不能在 LONG, LONG RAW, LOB數(shù)據(jù)類型的列上創(chuàng)建索引;p Oracle會(huì)自動(dòng)在 PRIMARY K