版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、廣東技術(shù)師范學(xué)院廣東技術(shù)師范學(xué)院大型數(shù)據(jù)庫開發(fā)訓(xùn)練大型數(shù)據(jù)庫開發(fā)訓(xùn)練課程課程Instructor: Dr. Wen JianfengEmail: 大型數(shù)據(jù)庫開發(fā)訓(xùn)練大型數(shù)據(jù)庫開發(fā)訓(xùn)練第第6講:管理模式對象講:管理模式對象內(nèi)容提綱內(nèi)容提綱o 模式(模式(Schemas)o 表(表(Tables)o 索引(索引(Indexes)o 約束(約束(Constraints)o 視圖(視圖(Views)o 序列(序列(Sequences)o 同義詞(同義詞(Synonyms)2模式(模式(Schemas)3模式(模式(Schema)4模式(模式(Schema)o 模式模式是表、視圖、索引和其他數(shù)據(jù)庫對象的
2、集合是表、視圖、索引和其他數(shù)據(jù)庫對象的集合o 可以認(rèn)為可以認(rèn)為“模式模式”與與“用戶賬戶用戶賬戶”是等同的內(nèi)容是等同的內(nèi)容n 只有一點微小的區(qū)別:用戶賬戶保存著用戶所擁有的只有一點微小的區(qū)別:用戶賬戶保存著用戶所擁有的對象,而模式則是在那里保存的對象的集合對象,而模式則是在那里保存的對象的集合o 所有數(shù)據(jù)庫對象可以劃分為兩大類所有數(shù)據(jù)庫對象可以劃分為兩大類n 模式對象模式對象:可以被用戶賬戶所擁有的對象:可以被用戶賬戶所擁有的對象p 如:表、約束、索引、視圖、序列、私有同義詞、如:表、約束、索引、視圖、序列、私有同義詞、PL/SQL包、存儲過程等包、存儲過程等n 非模式對象非模式對象:不能被用
3、戶賬戶所擁有的對象:不能被用戶賬戶所擁有的對象p 如:表空間、用戶、角色、公有同義詞等如:表空間、用戶、角色、公有同義詞等5模式(模式(Schema)o 在創(chuàng)建數(shù)據(jù)庫時,將自動創(chuàng)建很多在創(chuàng)建數(shù)據(jù)庫時,將自動創(chuàng)建很多用戶用戶及其相關(guān)及其相關(guān)聯(lián)的聯(lián)的模式模式n 用戶如:用戶如:SYS、SYSTEMn SYS模式:模式:p 用戶用戶SYS擁有數(shù)據(jù)字典,擁有數(shù)據(jù)字典,SYS模式中的這組表定義數(shù)據(jù)庫及模式中的這組表定義數(shù)據(jù)庫及其內(nèi)容;其內(nèi)容;p SYS還擁有數(shù)百個還擁有數(shù)百個PL/SQL包,是為數(shù)據(jù)庫管理員和開發(fā)人包,是為數(shù)據(jù)庫管理員和開發(fā)人員提供的代碼員提供的代碼n SYSTEM模式:模式:p 存儲各
4、種用于管理和監(jiān)視的附加對象存儲各種用于管理和監(jiān)視的附加對象6模式(模式(Schema)o 模式與用戶的關(guān)系模式與用戶的關(guān)系n 模式與用戶相對應(yīng)模式與用戶相對應(yīng),一個模式只能被一個數(shù)據(jù)庫用,一個模式只能被一個數(shù)據(jù)庫用戶所擁有,并且模式的名稱與這個用戶的名稱相同戶所擁有,并且模式的名稱與這個用戶的名稱相同n 通常情況下,用戶所創(chuàng)建數(shù)據(jù)庫對象都通常情況下,用戶所創(chuàng)建數(shù)據(jù)庫對象都保存在與自保存在與自己同名的模式中己同名的模式中n 同一模式中數(shù)據(jù)庫對象的同一模式中數(shù)據(jù)庫對象的名稱必須唯一名稱必須唯一,而在不同,而在不同模式中的數(shù)據(jù)庫對象可以同名模式中的數(shù)據(jù)庫對象可以同名n 默認(rèn)情況下,用戶引用的對象是與
5、自己同名模式中默認(rèn)情況下,用戶引用的對象是與自己同名模式中的對象,如果要引用其他模式中的對象,需要在該的對象,如果要引用其他模式中的對象,需要在該對象名之前指明對象所屬模式對象名之前指明對象所屬模式 7模式(模式(Schema)o 模式選擇與切換模式選擇與切換n 如果用戶以如果用戶以NORMAL身份登錄,則進(jìn)入同名模式身份登錄,則進(jìn)入同名模式n 若以若以SYSDBA身份登錄,則進(jìn)入身份登錄,則進(jìn)入SYS模式模式n 如果以如果以SYSOPER身份登錄,則進(jìn)入身份登錄,則進(jìn)入PUBLIC模式模式p conn / as sysopero 模式的創(chuàng)建模式的創(chuàng)建n 創(chuàng)建用戶時,就創(chuàng)建了同名的模式,不用另
6、外創(chuàng)建創(chuàng)建用戶時,就創(chuàng)建了同名的模式,不用另外創(chuàng)建n 例如:例如:p CREATE USER gdin IDENTIFIED BY gdin;(創(chuàng)建用戶)(創(chuàng)建用戶)p GRANT CONNECT, RESOURCE TO gdin; (賦權(quán)限)(賦權(quán)限)8模式(模式(Schema)o 舉例:舉例:HR模式模式9表(表(Tables)10創(chuàng)建表創(chuàng)建表o CREATE TABLE語法:語法:n column_level_constraint:列級約束:列級約束n table_level_constraint:表級約束:表級約束n parameter_list:表的參數(shù):表的參數(shù)11CREATE
7、TABLE table_name( column_name datatype column_level_constraint , column_name datatype column_level_constraint , table_level_constraint)parameter_list;創(chuàng)建表創(chuàng)建表o 舉例:舉例:12CREATE TABLE employees( employee_id NUMBER(6), first_nameVARCHAR2(20), last_name VARCHAR2(25), email VARCHAR2(25), phone_number VARCHA
8、R2(20), hire_date DATE, job_id VARCHAR2(10), salary NUMBER(8,2), commission_pct NUMBER(2,2), manager_id NUMBER(6), department_id NUMBER(4);查看表結(jié)構(gòu)查看表結(jié)構(gòu)o 語法:語法:n DESCRIBE table_namen DESC table_name13Oracle內(nèi)置數(shù)據(jù)類型內(nèi)置數(shù)據(jù)類型14CHAR(N), NCHAR(N)VARCHAR2(N),NVARCHAR2(N)NUMBER(P,S)DATETIMESTAMPRAW(N)BLOB, CLOB,N
9、CLOB, BFILELONG, LONG RAWROWID, UROWIDVARRAYTABLEREFData typeBuilt-in(內(nèi)置)(內(nèi)置)User-definedScalar(標(biāo)量)(標(biāo)量)Relationship(關(guān)系)(關(guān)系)Collection(集合)(集合)字符數(shù)據(jù)類型字符數(shù)據(jù)類型o 字符數(shù)據(jù)可以作為字符數(shù)據(jù)可以作為長度固定長度固定或或長度可變長度可變的字符的字符串存儲在數(shù)據(jù)庫中串存儲在數(shù)據(jù)庫中o CHAR(n)、NCHAR(n)n Character的縮寫的縮寫n 定長字符串,定長字符串,n的取值范圍為的取值范圍為12000字節(jié)字節(jié)n 用空格填滿空白內(nèi)容用空格填滿空白
10、內(nèi)容o VARCHAR2(n)、NVARCHAR2(n)n Variable character的縮寫的縮寫n 可變字符串,可變字符串,n取值范圍為取值范圍為14000字節(jié)字節(jié)n 自動調(diào)整數(shù)據(jù)長度,僅使用存儲實際列值所需要的自動調(diào)整數(shù)據(jù)長度,僅使用存儲實際列值所需要的字節(jié)數(shù),每行的大小可以不同字節(jié)數(shù),每行的大小可以不同15數(shù)字?jǐn)?shù)據(jù)類型數(shù)字?jǐn)?shù)據(jù)類型o 數(shù)字始終以數(shù)字始終以長度可變長度可變的數(shù)據(jù)存儲,最多可以存的數(shù)據(jù)存儲,最多可以存儲儲38個有效數(shù)位個有效數(shù)位o NUMBER(p, s) n 用于存儲整數(shù)和實數(shù)用于存儲整數(shù)和實數(shù)n p表示數(shù)值的表示數(shù)值的總位數(shù)總位數(shù)(精度,(精度,Precisio
11、n),取值范圍),取值范圍為為138,默認(rèn)為,默認(rèn)為38n s表示表示小數(shù)位數(shù)小數(shù)位數(shù)(Scale),若為負(fù)數(shù)則表示把數(shù)據(jù)),若為負(fù)數(shù)則表示把數(shù)據(jù)向小數(shù)點左邊舍入,默認(rèn)值為向小數(shù)點左邊舍入,默認(rèn)值為0n 例如:例如:p NUMBER(5, 2):當(dāng)輸入值為:當(dāng)輸入值為4.5678時,保存為時,保存為4.57p NUMBER(5, -2):當(dāng)輸入值為:當(dāng)輸入值為1056.34時,保存為時,保存為110016浮點數(shù)據(jù)類型浮點數(shù)據(jù)類型o BINARY_FLOATo BINARY_DOUBLEo 保存的是近似值保存的是近似值o 用于科學(xué)計算,它們的特點與用于科學(xué)計算,它們的特點與Java等編程語言等編
12、程語言中的中的float和和double類似類似17日期數(shù)據(jù)類型日期數(shù)據(jù)類型o DATEn 存儲日期和時間存儲日期和時間n 保存的域包括世紀(jì)、保存的域包括世紀(jì)、年、月、日、時、分、秒年、月、日、時、分、秒(7個個字節(jié))字節(jié))n Oracle內(nèi)部以數(shù)字的形式保存內(nèi)部以數(shù)字的形式保存DATE類型數(shù)據(jù)類型數(shù)據(jù)n 默認(rèn)日期顯示格式由參數(shù)默認(rèn)日期顯示格式由參數(shù)NLS_DATE_FORMAT所所定義定義o TIMESTAMP(n)n 存儲日期和時間存儲日期和時間n 表示時間戳,是表示時間戳,是DATE的擴(kuò)展,允許存儲小數(shù)形式的的擴(kuò)展,允許存儲小數(shù)形式的秒值秒值n n表示表示秒的小數(shù)位數(shù)秒的小數(shù)位數(shù),取值范
13、圍為,取值范圍為19,默認(rèn)值為,默認(rèn)值為618RAW數(shù)據(jù)類型數(shù)據(jù)類型o 可以使用此數(shù)據(jù)類型存儲可以使用此數(shù)據(jù)類型存儲小型二進(jìn)制數(shù)據(jù)小型二進(jìn)制數(shù)據(jù)o 在網(wǎng)絡(luò)中的計算機(jī)之間傳輸在網(wǎng)絡(luò)中的計算機(jī)之間傳輸RAW數(shù)據(jù)時,或者數(shù)據(jù)時,或者使用使用Oracle實用程序?qū)嵱贸绦驅(qū)AW數(shù)據(jù)從一個數(shù)據(jù)庫數(shù)據(jù)從一個數(shù)據(jù)庫移到另一個數(shù)據(jù)庫時,移到另一個數(shù)據(jù)庫時,Oracle服務(wù)器服務(wù)器不執(zhí)行字不執(zhí)行字符集轉(zhuǎn)換符集轉(zhuǎn)換o 存儲實際列值所需要的字節(jié)數(shù)大小隨每行大小存儲實際列值所需要的字節(jié)數(shù)大小隨每行大小而異,最多為而異,最多為2000 字節(jié)字節(jié)19LOB數(shù)據(jù)類型(大型對象)數(shù)據(jù)類型(大型對象)o Oracle為存儲為
14、存儲LOB提供六種數(shù)據(jù)類型:提供六種數(shù)據(jù)類型:n CLOB和和LONG用于存儲大型的、可變長度的用于存儲大型的、可變長度的字符數(shù)字符數(shù)據(jù)據(jù),如文本文件等,最大數(shù)據(jù)量為,如文本文件等,最大數(shù)據(jù)量為4GBn NCLOB用于存儲大型的、可變長度的用于存儲大型的、可變長度的國家字符集數(shù)國家字符集數(shù)據(jù)據(jù),最大數(shù)據(jù)量為,最大數(shù)據(jù)量為4GBn BLOB和和LONG RAW用于存儲大型的、非結(jié)構(gòu)化的用于存儲大型的、非結(jié)構(gòu)化的可變長度的可變長度的二進(jìn)制數(shù)據(jù)二進(jìn)制數(shù)據(jù)(如二進(jìn)制文件、圖片文件、(如二進(jìn)制文件、圖片文件、音頻和視頻等非文本文件),最大數(shù)據(jù)量為音頻和視頻等非文本文件),最大數(shù)據(jù)量為4GBn BFILE
15、用于存儲用于存儲操作系統(tǒng)文件操作系統(tǒng)文件中的非結(jié)構(gòu)化數(shù)據(jù)中的非結(jié)構(gòu)化數(shù)據(jù)p 注:注:LONG和和LONG RAW已由已由CLOB和和BLOG取代取代,保留它,保留它們主要用于向后兼容,它們的最大數(shù)據(jù)量為們主要用于向后兼容,它們的最大數(shù)據(jù)量為2Gp 當(dāng)數(shù)據(jù)量大于當(dāng)數(shù)據(jù)量大于4000字節(jié)時,字節(jié)時,LOB在表中存儲一個定位器,而在表中存儲一個定位器,而將數(shù)據(jù)存儲在另一位置。將數(shù)據(jù)存儲在另一位置。LOB允許將數(shù)據(jù)存儲在單獨的段和允許將數(shù)據(jù)存儲在單獨的段和表空間中,或者存儲在主機(jī)文件中表空間中,或者存儲在主機(jī)文件中20ROWID和和UROWID數(shù)據(jù)類型數(shù)據(jù)類型o ROWIDn ROWID是數(shù)據(jù)庫中每行
16、的唯一標(biāo)識符是數(shù)據(jù)庫中每行的唯一標(biāo)識符n ROWID并不顯式地作為一個列值存儲(偽列)并不顯式地作為一個列值存儲(偽列)n ROWID并不直接給出一行的物理地址,但它可以并不直接給出一行的物理地址,但它可以用來定位行用來定位行n ROWID為訪問表中的行提供了最快的方法為訪問表中的行提供了最快的方法n ROWID存儲在索引中來指定具有一組給定的鍵值存儲在索引中來指定具有一組給定的鍵值的行的行n ROWID類型可以作為表中某個列的數(shù)據(jù)類型類型可以作為表中某個列的數(shù)據(jù)類型o UROWID(通用(通用ROWID)n 它支持外表(非它支持外表(非Oracle 表)的表)的ROWID,并且可存,并且可存
17、儲各種類型的儲各種類型的ROWID21集合數(shù)據(jù)類型集合數(shù)據(jù)類型o VARRAY(變化數(shù)組)(變化數(shù)組)n 變化數(shù)組對于存儲包含少量組成元素的列表(如客變化數(shù)組對于存儲包含少量組成元素的列表(如客戶的電話號碼)非常有用戶的電話號碼)非常有用n VARRAY具有以下特征:具有以下特征:p 數(shù)組即一組有序的數(shù)據(jù)組成元素數(shù)組即一組有序的數(shù)據(jù)組成元素p 一個給定數(shù)組的所有組成元素的數(shù)據(jù)類型相同一個給定數(shù)組的所有組成元素的數(shù)據(jù)類型相同p 每個組成元素都有索引,即與數(shù)組中組成元素的位置相對每個組成元素都有索引,即與數(shù)組中組成元素的位置相對應(yīng)的編號應(yīng)的編號p 數(shù)組中組成元素的數(shù)目決定了數(shù)組的大小數(shù)組中組成元素
18、的數(shù)目決定了數(shù)組的大小p Oracle服務(wù)器允許數(shù)組的大小可以變化,這就是它們被稱服務(wù)器允許數(shù)組的大小可以變化,這就是它們被稱為為VARRAY(意為變化數(shù)組)的原因,但在聲明數(shù)組類型(意為變化數(shù)組)的原因,但在聲明數(shù)組類型時必須指定最大大小時必須指定最大大小22集合數(shù)據(jù)類型集合數(shù)據(jù)類型o TABLE(嵌套表)(嵌套表)n 嵌套表提供一種將一個表定義為另一個表內(nèi)一列的嵌套表提供一種將一個表定義為另一個表內(nèi)一列的方法。嵌套表可用來存儲可能包含大量記錄的集合方法。嵌套表可用來存儲可能包含大量記錄的集合(比如一個訂單中的若干條目)(比如一個訂單中的若干條目)n 嵌套表一般具有以下特征:嵌套表一般具有以
19、下特征:p 嵌套表是一組無次序的記錄或行嵌套表是一組無次序的記錄或行p 嵌套表中的各行結(jié)構(gòu)相同嵌套表中的各行結(jié)構(gòu)相同p 嵌套表中的行與父表分別存儲,并且父表中的對應(yīng)行有一嵌套表中的行與父表分別存儲,并且父表中的對應(yīng)行有一個指針個指針p 嵌套表的存儲特點可由數(shù)據(jù)庫管理員來定義嵌套表的存儲特點可由數(shù)據(jù)庫管理員來定義p 嵌套表沒有預(yù)先確定的最大大小嵌套表沒有預(yù)先確定的最大大小23關(guān)系數(shù)據(jù)類型關(guān)系數(shù)據(jù)類型o REFn 關(guān)系類型在數(shù)據(jù)庫內(nèi)用作指針關(guān)系類型在數(shù)據(jù)庫內(nèi)用作指針n 使用這些類型需要使用這些類型需要“對象對象” (Objects) 選項。(比如:選項。(比如:訂單的每一項都可以指向或引用訂單的每
20、一項都可以指向或引用PRODUCTS表中的表中的一行,而不必存儲產(chǎn)品代碼)一行,而不必存儲產(chǎn)品代碼)24用戶定義的數(shù)據(jù)類型用戶定義的數(shù)據(jù)類型o Oracle允許用戶定義抽象的數(shù)據(jù)類型并在應(yīng)用允許用戶定義抽象的數(shù)據(jù)類型并在應(yīng)用程序內(nèi)使用這些數(shù)據(jù)類型程序內(nèi)使用這些數(shù)據(jù)類型25ROWID格式格式o 擴(kuò)展的擴(kuò)展的ROWID在磁盤上需要在磁盤上需要10 個字節(jié)的存儲個字節(jié)的存儲空間,并使用空間,并使用18 個字符來顯示個字符來顯示o 它包含下列組成元素:它包含下列組成元素:n 數(shù)據(jù)對象編號數(shù)據(jù)對象編號:每個數(shù)據(jù)對象(如表或索引)在創(chuàng):每個數(shù)據(jù)對象(如表或索引)在創(chuàng)建時都分配有此編號,并且此編號在數(shù)據(jù)庫中
21、是唯建時都分配有此編號,并且此編號在數(shù)據(jù)庫中是唯一的一的n 相關(guān)文件編號相關(guān)文件編號:此編號對于表空間中的每個文件是:此編號對于表空間中的每個文件是唯一的唯一的n 塊編號塊編號:表示包含此行的塊在文件中的位置:表示包含此行的塊在文件中的位置n 行編號行編號:標(biāo)識塊頭中行目錄位置的位置:標(biāo)識塊頭中行目錄位置的位置26OOOOOOBBBBBBFFFRRRData object numberRelative file numberRow numberBlock numberROWID格式格式o 例如:例如:n AAAS13是數(shù)據(jù)對象編號是數(shù)據(jù)對象編號n AAE是相關(guān)文件編號是相關(guān)文件編號n AAAA
22、CV是塊編號是塊編號n AAA是員工號為是員工號為7369的行的行編號的行的行編號27使用使用ROWID定位行定位行o ROWID可以用來定位一個數(shù)據(jù)庫中的任意行可以用來定位一個數(shù)據(jù)庫中的任意行n 因為一個段只能駐留在一個表空間中,所以,因為一個段只能駐留在一個表空間中,所以,Oracle服務(wù)器可以使用服務(wù)器可以使用數(shù)據(jù)對象編號數(shù)據(jù)對象編號來確定包含某來確定包含某一行的表空間一行的表空間n 表空間中的相關(guān)表空間中的相關(guān)文件編號文件編號用來定位文件,用來定位文件,塊編號塊編號用用來定位包含該行的塊,來定位包含該行的塊,行編號行編號用來定位該行的行目用來定位該行的行目錄條目錄條目n 行目錄條目可以
23、用來定位行首行目錄條目可以用來定位行首28使用使用ROWID定位行定位行o ROWID是是偽列偽列,計算出來的,表中并沒有存,計算出來的,表中并沒有存儲儲ROWID,每一行的,每一行的ROWID是根據(jù)該行的物是根據(jù)該行的物理位置計算出來的,我們根據(jù)理位置計算出來的,我們根據(jù)ROWID可以獲可以獲得該行的所在的物理位置得該行的所在的物理位置29行的結(jié)構(gòu)行的結(jié)構(gòu)o 行數(shù)據(jù)作為長度可變的記錄存儲在數(shù)據(jù)庫塊中。行數(shù)據(jù)作為長度可變的記錄存儲在數(shù)據(jù)庫塊中。通常,一個行的各列按其定義時的順序存儲,并通常,一個行的各列按其定義時的順序存儲,并且不存儲尾隨的且不存儲尾隨的NULL列列n 注:對于非尾隨的注:對于
24、非尾隨的NULL列,列長度需占用一個字節(jié)列,列長度需占用一個字節(jié)o 表中的每行具有:表中的每行具有:n 行頭:用來存儲行中的列數(shù)、鏈接信息和行鎖定狀態(tài)行頭:用來存儲行中的列數(shù)、鏈接信息和行鎖定狀態(tài)n 行數(shù)據(jù):對于每一列,行數(shù)據(jù):對于每一列,Oracle服務(wù)器存儲列的長度和服務(wù)器存儲列的長度和值,列值在緊靠列長度字節(jié)后面存儲值,列值在緊靠列長度字節(jié)后面存儲n 相鄰的行之間不需要任何空格相鄰的行之間不需要任何空格n 塊中的每一行在行目錄中都有一個位置,目錄位置指塊中的每一行在行目錄中都有一個位置,目錄位置指向行首向行首30行的結(jié)構(gòu)行的結(jié)構(gòu)31Database blockRow headerColu
25、mn lengthColumn value創(chuàng)建表時使用的參數(shù)創(chuàng)建表時使用的參數(shù)o TABLESPACE子句子句n 指定將要在其中創(chuàng)建表的表空間指定將要在其中創(chuàng)建表的表空間n 如果省略如果省略TABLESPACE參數(shù),則參數(shù),則Oracle在包含該表在包含該表的模式的所有者的缺省表空間中創(chuàng)建表的模式的所有者的缺省表空間中創(chuàng)建表o STORAGE子句子句n 指定表的存儲特性。若不指定,則繼承表空間的存指定表的存儲特性。若不指定,則繼承表空間的存儲參數(shù)設(shè)置儲參數(shù)設(shè)置p INITIAL:初始分配區(qū)的大?。撼跏挤峙鋮^(qū)的大小p NEXT:下一個分配區(qū)的大?。合乱粋€分配區(qū)的大小p MINEXTENTS:分配
26、的最小區(qū)數(shù):分配的最小區(qū)數(shù)p MAXEXTENTS:分配的最大區(qū)數(shù):分配的最大區(qū)數(shù)p PCTINCREASE:NEXT區(qū)及以后的區(qū)有關(guān)區(qū)大小增長的區(qū)及以后的區(qū)有關(guān)區(qū)大小增長的百分比百分比p 例如:例如:STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS 5)32利用子查詢創(chuàng)建表利用子查詢創(chuàng)建表o 語法:語法:n 通過該方法創(chuàng)建表時,可以修改表中列的名稱,但是通過該方法創(chuàng)建表時,可以修改表中列的名稱,但是不能修改列的數(shù)據(jù)類型和長度不能修改列的數(shù)據(jù)類型和長度n 源表中的約束條件和列的默認(rèn)值都不會復(fù)制到新表中源表中
27、的約束條件和列的默認(rèn)值都不會復(fù)制到新表中n 當(dāng)子查詢條件為真時,新表中包含查詢到的數(shù)據(jù);當(dāng)當(dāng)子查詢條件為真時,新表中包含查詢到的數(shù)據(jù);當(dāng)子查詢條件為假時,則創(chuàng)建一個空表子查詢條件為假時,則創(chuàng)建一個空表33CREATE TABLE table_name (column_name column_level_constraint , column_name column_level_constraint , table_level_constraint) parameter_list AS subquery; 利用子查詢創(chuàng)建表利用子查詢創(chuàng)建表o 例如:創(chuàng)建一個表,保存工資高于例如:創(chuàng)建一個表,保存工
28、資高于15000元的員元的員工的員工號、員工姓名和部門號。工的員工號、員工姓名和部門號。n 注:注:employees表在表在HR模式中模式中34修改表修改表o 修改表的基本語法:修改表的基本語法:n SET UNUSED:標(biāo)記列為:標(biāo)記列為“未用未用”n DROP UNUSED COLUMNS:永久刪除標(biāo)記為:永久刪除標(biāo)記為“未未用用”的列的列35ALTER TABLE table_nameADD column_name datatype column_level_constraintMODIFY column_name datatype RENAME COLUMN oldname TO n
29、ewnameDROP COLUMN column_name DROP (column_name1, column_name2, .)SET UNUSED COLUMN column_nameSET UNUSED (column_name1, column_name2, .)DROP UNUSED COLUMNS刪除表刪除表o 語法:語法:n 刪除一個表的同時,刪除一個表的同時,Oracle將執(zhí)行下列操作:將執(zhí)行下列操作:p 刪除該表中所有記錄刪除該表中所有記錄p 從數(shù)據(jù)字典中刪除該表定義從數(shù)據(jù)字典中刪除該表定義p 刪除與該表相關(guān)的所有索引和觸發(fā)器刪除與該表相關(guān)的所有索引和觸發(fā)器p 回收為該表分
30、配的存儲空間回收為該表分配的存儲空間p 依賴于該表的數(shù)據(jù)庫對象處于依賴于該表的數(shù)據(jù)庫對象處于INVALID狀態(tài)狀態(tài)n 如果該表是外鍵關(guān)系中的父表,就必須使用如果該表是外鍵關(guān)系中的父表,就必須使用CASCADE CONSTRAINTS選項選項n 使用使用PURGE選項將徹底刪除表,不放入回收站選項將徹底刪除表,不放入回收站36DROP TABLE table_nameCASCADE CONSTRAINTSPURGE 截斷表截斷表o 語法:語法:n 截斷一個表將刪除表中所有行,釋放已使用的空間截斷一個表將刪除表中所有行,釋放已使用的空間n 不會生成任何還原數(shù)據(jù)不會生成任何還原數(shù)據(jù)n 對應(yīng)的索引將被
31、截斷對應(yīng)的索引將被截斷n 不能截斷某個外鍵正在引用的表不能截斷某個外鍵正在引用的表n 使用此命令時不會觸發(fā)刪除觸發(fā)器使用此命令時不會觸發(fā)刪除觸發(fā)器37TRUNCATE TABLE table_nameDROP | REUSE STORAGE 查詢表的數(shù)據(jù)字典查詢表的數(shù)據(jù)字典o DBA_TABLES、ALL_TABLES、USER_TABLESo DBA_TAB_COLUMNS、ALL_TAB_COLUMNS、USER_TAB_COLUMNSo DBA_OBJECTS、ALL_OBJECTS、USER_OBJECTS38索引(索引(Indexes)39索引索引o 表的數(shù)據(jù)是無序的,因為數(shù)據(jù)是隨機(jī)
32、存儲的,所表的數(shù)據(jù)是無序的,因為數(shù)據(jù)是隨機(jī)存儲的,所以在查詢的時候需要全表掃描。索引就是將無序以在查詢的時候需要全表掃描。索引就是將無序的數(shù)據(jù)有序化,這樣就可以在查詢數(shù)據(jù)的時候減的數(shù)據(jù)有序化,這樣就可以在查詢數(shù)據(jù)的時候減少數(shù)據(jù)塊的讀取,實現(xiàn)快速定位數(shù)據(jù)少數(shù)據(jù)塊的讀取,實現(xiàn)快速定位數(shù)據(jù)o 索引是一種允許對表中的行進(jìn)行直接訪問的樹型索引是一種允許對表中的行進(jìn)行直接訪問的樹型結(jié)構(gòu)結(jié)構(gòu)n B樹索引(平衡樹索引)(默認(rèn)是樹索引(平衡樹索引)(默認(rèn)是B樹索引)樹索引)n 位圖索引位圖索引o 索引的作用:快速定位數(shù)據(jù),減少磁盤索引的作用:快速定位數(shù)據(jù),減少磁盤 I/O40索引索引o Oracle自動使用和維
33、護(hù)索引自動使用和維護(hù)索引o 在表上執(zhí)行在表上執(zhí)行DML操作時,操作時,Oracle服務(wù)器將維護(hù)服務(wù)器將維護(hù)所有的索引所有的索引n 插入操作導(dǎo)致在適當(dāng)?shù)膲K中插入索引項插入操作導(dǎo)致在適當(dāng)?shù)膲K中插入索引項n 刪除行只導(dǎo)致邏輯刪除索引項刪除行只導(dǎo)致邏輯刪除索引項n 更新鍵列將導(dǎo)致邏輯刪除和向索引插入項更新鍵列將導(dǎo)致邏輯刪除和向索引插入項o 索引的缺點:索引的缺點:n 占用硬盤和內(nèi)存空間占用硬盤和內(nèi)存空間n 會減慢數(shù)據(jù)更新的速度會減慢數(shù)據(jù)更新的速度o 索引不能盲目建立索引不能盲目建立41B樹索引樹索引o B樹樹n 占用空間多,適合索引值基數(shù)高、重復(fù)率低的應(yīng)用占用空間多,適合索引值基數(shù)高、重復(fù)率低的應(yīng)用4
34、2Index entry headerKey column lengthKey column valueROWID根節(jié)點根節(jié)點分支節(jié)點分支節(jié)點葉節(jié)點葉節(jié)點Index entryB樹索引樹索引o 根根和和枝干枝干中存放鍵值范圍的導(dǎo)引指針中存放鍵值范圍的導(dǎo)引指針o 葉子葉子中存放的是條目中存放的是條目o 條目條目中存放的是索引的鍵值和該數(shù)據(jù)行的中存放的是索引的鍵值和該數(shù)據(jù)行的ROWIDo 葉子間有雙重鏈接,有助于按鍵值的升序和降序葉子間有雙重鏈接,有助于按鍵值的升序和降序掃描索引掃描索引43位圖索引位圖索引o 位圖位圖n 占用空間少,適合索引值基數(shù)少、重復(fù)率高的應(yīng)用占用空間少,適合索引值基數(shù)少、重
35、復(fù)率高的應(yīng)用44keystartROWIDendROWID bitmap(位圖)(位圖)TableIndexBlock 10Block 11Block 12File 3位圖索引位圖索引o 可以將位圖索引組織為可以將位圖索引組織為B 樹,但葉節(jié)點樹,但葉節(jié)點存儲每存儲每個鍵值的位圖個鍵值的位圖而非而非ROWID。位圖中的每一位。位圖中的每一位對應(yīng)一個可能的對應(yīng)一個可能的ROWID,如果設(shè)置了位,則,如果設(shè)置了位,則意味著具有相應(yīng)意味著具有相應(yīng)ROWID的行包含鍵值的行包含鍵值o 位圖索引的結(jié)構(gòu)位圖索引的結(jié)構(gòu)n Start ROWIDp 例如:文件號例如:文件號3、塊號、塊號10 、行號、行號0n
36、 End ROWIDp 例如:文件號例如:文件號3、塊號、塊號12 、行號、行號8n 位圖段位圖段p 由位串組成(對應(yīng)的行包含鍵值時設(shè)置位;不包含鍵值時由位串組成(對應(yīng)的行包含鍵值時設(shè)置位;不包含鍵值時不設(shè)置位)不設(shè)置位)45B樹索引樹索引 vs. 位圖索引位圖索引B 樹樹位圖位圖適用于高基數(shù)列適用于低基數(shù)列更新鍵列的成本相對較低更新鍵列的成本非常高使用OR謂詞進(jìn)行查詢時效率較低使用OR謂詞進(jìn)行查詢時效率較高對OLTP很有用對數(shù)據(jù)倉庫很有用46索引使用原則索引使用原則o 在在大表大表上建立索引上建立索引o 在在WHERE子句子句或或連接條件連接條件上經(jīng)常使用的列上上經(jīng)常使用的列上建立索引建立索
37、引o 對于取值范圍很大的列應(yīng)當(dāng)創(chuàng)建對于取值范圍很大的列應(yīng)當(dāng)創(chuàng)建B樹索引樹索引o 對于取值范圍很小的列應(yīng)當(dāng)創(chuàng)建對于取值范圍很小的列應(yīng)當(dāng)創(chuàng)建位圖索引位圖索引o Oracle會自動在會自動在PRIMARY KEY和和UNIQUE約約束的列上創(chuàng)建唯一性索引束的列上創(chuàng)建唯一性索引o 限制表中索引的限制表中索引的數(shù)目數(shù)目 47創(chuàng)建索引創(chuàng)建索引o 語法語法n UNIQUE表示建立惟一性索引表示建立惟一性索引n BITMAP表示建立位圖索引表示建立位圖索引n ASC/DESC用于指定索引值的排列順序,用于指定索引值的排列順序,ASC表示按表示按升序排序,升序排序,DESC表示按降序排序,缺省值為表示按降序排序
38、,缺省值為ASCn REVERSE表示建立反鍵索引表示建立反鍵索引n parameter_list用于指定索引的存放位置、存儲空間分用于指定索引的存放位置、存儲空間分配和數(shù)據(jù)塊參數(shù)設(shè)置配和數(shù)據(jù)塊參數(shù)設(shè)置48CREATE UNIQUE|BITMAP INDEX index_nameON table_name(column_nameASC|DESC,|expression) REVERSEparameter_list;隱式創(chuàng)建索引隱式創(chuàng)建索引o 如果在一個表上創(chuàng)建了一個如果在一個表上創(chuàng)建了一個PRIMARY KEY或或UNIQUE類型的約束,類型的約束,SQL將自動創(chuàng)建一個索將自動創(chuàng)建一個索引來支
39、持列上的約束引來支持列上的約束49顯式創(chuàng)建索引顯式創(chuàng)建索引o 單列索引單列索引n CREATE INDEX ix_inv_date ON invoices (invoice_date)o 復(fù)合索引復(fù)合索引n CREATE INDEX ix_inv_invoice_vendor_id ON invoices (vendor_id, invoice_date)o 唯一索引唯一索引n CREATE UNIQUE INDEX ix_emp_ssn ON employees (ssn)50重建索引重建索引o 使用使用ALTER INDEX命令執(zhí)行以下操作:命令執(zhí)行以下操作:n 將索引移到另一個表空間中將
40、索引移到另一個表空間中n 通過移除已刪除的項,提高空間的使用率通過移除已刪除的項,提高空間的使用率n ALTER INDEX orders_id_idx REBUILD TABLESPACE index251合并索引合并索引o 遇到索引碎片時,可以重建或合并索引遇到索引碎片時,可以重建或合并索引n ALTER INDEX orders_id_idx COALESCE52合并前合并前合并后合并后檢查索引及其有效性檢查索引及其有效性53ANALYZE INDEX orders_id_idxVALIDATE STRUCTURE;INDEX_STATS檢查索引及其有效性檢查索引及其有效性n HEIGH
41、T:索引的層數(shù):索引的層數(shù)n BLOCKS:索引總塊數(shù):索引總塊數(shù)n BR_BLKS:枝干塊數(shù):枝干塊數(shù)n LF_BLKS:葉子塊數(shù):葉子塊數(shù)n LF_ROWS:葉子內(nèi)行數(shù):葉子內(nèi)行數(shù)n DEL_LF_ROWS:葉子中被刪除的行數(shù):葉子中被刪除的行數(shù)n 如果索引中已刪除行的比例很高,請重新組織該索引如果索引中已刪除行的比例很高,請重新組織該索引p 例如:當(dāng)例如:當(dāng)DEL_LF_ROWS占占LF_ROWS的比率超過的比率超過30%時時54刪除索引刪除索引o 語法:語法:o 在下面幾種情況下,可以考慮刪除索引在下面幾種情況下,可以考慮刪除索引 n 該索引不再使用該索引不再使用n 通過一段時間監(jiān)視,
42、發(fā)現(xiàn)幾乎沒有查詢或只有極少通過一段時間監(jiān)視,發(fā)現(xiàn)幾乎沒有查詢或只有極少數(shù)查詢會使用該索引數(shù)查詢會使用該索引n 由于索引中包含損壞的數(shù)據(jù)塊或包含過多的存儲碎由于索引中包含損壞的數(shù)據(jù)塊或包含過多的存儲碎片等,需要刪除該索引,然后重建索引片等,需要刪除該索引,然后重建索引n 由于移動了表數(shù)據(jù)而導(dǎo)致索引失效由于移動了表數(shù)據(jù)而導(dǎo)致索引失效55DROP INDEX index_name標(biāo)識未用索引標(biāo)識未用索引o 開始監(jiān)視索引的使用開始監(jiān)視索引的使用o 停止監(jiān)視索引的使用停止監(jiān)視索引的使用o 查看數(shù)據(jù)字典查看數(shù)據(jù)字典V$OBJECT_USAGE56ALTER INDEX index_name MONITOR
43、ING USAGEALTER INDEX index_name NOMONITORING USAGE查詢索引的數(shù)據(jù)字典查詢索引的數(shù)據(jù)字典o DBA_INDEXES、ALL_INDEXES、USER_INDEXESo DBA_ IND_COLUMNS、ALL_ IND_COLUMNS、USER_ IND_COLUMNSo V$OBJECT_USAGEn 提供有關(guān)索引使用情況的信息提供有關(guān)索引使用情況的信息57約束(約束(Constraints)58數(shù)據(jù)完整性(數(shù)據(jù)完整性(Data Integrity)59應(yīng)用程序代碼應(yīng)用程序代碼Table數(shù)據(jù)數(shù)據(jù)完整性約束完整性約束數(shù)據(jù)庫觸發(fā)器數(shù)據(jù)庫觸發(fā)器約束(
44、約束(Constraint)o 約束的作用約束的作用n 是在表中定義的用于維護(hù)數(shù)據(jù)庫完整性的一些規(guī)則。是在表中定義的用于維護(hù)數(shù)據(jù)庫完整性的一些規(guī)則。通過對表中列定義約束,可以防止在執(zhí)行通過對表中列定義約束,可以防止在執(zhí)行DML操作操作時,將不符合要求的數(shù)據(jù)插入到表中。時,將不符合要求的數(shù)據(jù)插入到表中。o 約束類型約束類型n PRIMARY KEY(主鍵約束)(主鍵約束)n UNIQUE(唯一性約束)(唯一性約束)n CHECK(檢查約束)(檢查約束)n FOREIGN KEY (外鍵約束)(外鍵約束)n NULL/NOT NULL (空(空/非空約束)非空約束)60主鍵約束(主鍵約束(PRIM
45、ARY KEY)o 主鍵的特點主鍵的特點n 起惟一標(biāo)識作用,其值不能為起惟一標(biāo)識作用,其值不能為NULL,也不能重復(fù),也不能重復(fù)n 一個表中只能定義一個主鍵約束一個表中只能定義一個主鍵約束n 建立主鍵約束的同時,在該列上建立一個惟一性索引建立主鍵約束的同時,在該列上建立一個惟一性索引61UNIQUE(唯一性約束)(唯一性約束)o 唯一性約束的特點唯一性約束的特點n 定義為惟一性約束的某一列或多個列的組合的取值定義為惟一性約束的某一列或多個列的組合的取值必須惟一必須惟一n 如果某一列或多個列僅定義惟一性約束,而沒有定如果某一列或多個列僅定義惟一性約束,而沒有定義非空約束,則該約束列可以包含多個空
46、值義非空約束,則該約束列可以包含多個空值n Oracle自動在惟一性約束列上建立一個惟一性索引自動在惟一性約束列上建立一個惟一性索引62PRIMARY KEY vs. UNIQUEo 在一個基本表中只能定義一個在一個基本表中只能定義一個PRIMARY KEY約束,但可定義多個約束,但可定義多個UNIQUE約束約束o 對于指定為對于指定為PRIMARY KEY的一個列或多個列的一個列或多個列的組合,其中任何一個列都不能出現(xiàn)空值,而的組合,其中任何一個列都不能出現(xiàn)空值,而對于對于UNIQUE所約束的唯一鍵,則允許為空所約束的唯一鍵,則允許為空o 不能為同一個列或一組列既定義不能為同一個列或一組列既
47、定義UNIQUE約束,約束,又定義又定義PRIMARY KEY約束約束63CHECK(檢查約束)(檢查約束)o 檢查約束的特點檢查約束的特點n 檢查約束用來限制列值所允許的取值范圍,其表達(dá)檢查約束用來限制列值所允許的取值范圍,其表達(dá)式中必須引用相應(yīng)列,并且表達(dá)式的計算結(jié)果必須式中必須引用相應(yīng)列,并且表達(dá)式的計算結(jié)果必須是一個布爾值是一個布爾值n 約束表達(dá)式中不能包含子查詢,也不能包含約束表達(dá)式中不能包含子查詢,也不能包含SYSDATE、USER等等SQL函數(shù),以及函數(shù),以及ROWID、ROWNUM等偽列等偽列n 一個列可以定義多個檢查約束一個列可以定義多個檢查約束64FOREIGN KEY (
48、外鍵約束)(外鍵約束)o 外鍵約束的概念外鍵約束的概念n FOREIGN KEY約束指定某一個列或一組列作為外約束指定某一個列或一組列作為外部鍵,其中,包含外部鍵的表稱為從表,包含外部部鍵,其中,包含外部鍵的表稱為從表,包含外部鍵所引用的主鍵或唯一鍵的表稱主表鍵所引用的主鍵或唯一鍵的表稱主表n 系統(tǒng)保證從表在外部鍵上的取值要么是主表中某一系統(tǒng)保證從表在外部鍵上的取值要么是主表中某一個主鍵值或唯一鍵值,要么取空值。以此保證兩個個主鍵值或唯一鍵值,要么取空值。以此保證兩個表之間的連接,確保了實體的參照完整性表之間的連接,確保了實體的參照完整性65FOREIGN KEY (外鍵約束)(外鍵約束)o
49、外鍵約束的特點外鍵約束的特點n 定義外鍵約束的列的取值要么是主表參照列的值,定義外鍵約束的列的取值要么是主表參照列的值,要么為空要么為空n 外鍵列只能參照于主表中的主鍵約束列或惟一性約外鍵列只能參照于主表中的主鍵約束列或惟一性約束列束列n 可以在一列或多列組合上定義外鍵約束可以在一列或多列組合上定義外鍵約束66NULL/NOT NULL(空(空/非空約束)非空約束)o 空空/非空約束的特點非空約束的特點n 在同一個表中可以定義多個在同一個表中可以定義多個NOT NULL約束約束n 只能是列級約束只能是列級約束67DEFAULT(默認(rèn)值約束)(默認(rèn)值約束)o 如果用戶在插入新行時沒有顯示為列提供
50、數(shù)據(jù),如果用戶在插入新行時沒有顯示為列提供數(shù)據(jù),系統(tǒng)將默認(rèn)值賦給該列系統(tǒng)將默認(rèn)值賦給該列o 語法:語法:68CONSTRAINT DEFAULT 表達(dá)式表達(dá)式定義約束定義約束o 列級約束列級約束n 對某一個特定列的約束,包含在列定義中,直接跟在對某一個特定列的約束,包含在列定義中,直接跟在該列的其他定義之后,用空格分隔,不必指定列名該列的其他定義之后,用空格分隔,不必指定列名o 定義列級約束的語法為:定義列級約束的語法為:69CONSTRAINT constraint_name constraint_type conditioin; 定義約束定義約束o 表級約束表級約束n 與列定義相互獨立,不
51、包括在列定義中。通常用于與列定義相互獨立,不包括在列定義中。通常用于對多個列一起進(jìn)行約束,與列定義用逗號分隔。定對多個列一起進(jìn)行約束,與列定義用逗號分隔。定義表約束時必須指出要約束的那些列的名稱義表約束時必須指出要約束的那些列的名稱o 定義表級約束的語法為:定義表級約束的語法為:70CONSTRAINT constraint_name constraint_type(column1_name,column2_name,|condition);定義約束定義約束o 注意注意n Oracle約束通過名稱進(jìn)行標(biāo)識。在定義時可以通過約束通過名稱進(jìn)行標(biāo)識。在定義時可以通過CONSTRAINT關(guān)鍵字為約束命
52、名。如果用戶沒有關(guān)鍵字為約束命名。如果用戶沒有為約束命名,為約束命名,Oracle將自動為約束命名。將自動為約束命名。71添加和刪除約束添加和刪除約束o 添加約束語法:添加約束語法:o 刪除約束語法:刪除約束語法:n 可以通過直接指定約束的名稱來刪除約束,或指定可以通過直接指定約束的名稱來刪除約束,或指定約束的內(nèi)容來刪除約束約束的內(nèi)容來刪除約束72ALTER TABLE table_name ADD CONSTRAINT constraint_nameconstraint_type(column1_name,column2_name,)condition;ALTER TABLE table_n
53、ame DROP 在在CREATE TABLE中創(chuàng)建約束中創(chuàng)建約束o 列級約束列級約束n 在在PORT_ID列上創(chuàng)建列上創(chuàng)建PRIMARY KEY約束約束n 在在STATUS列上創(chuàng)建列上創(chuàng)建NOT NULL約束約束73在在CREATE TABLE中創(chuàng)建約束中創(chuàng)建約束o 表級約束表級約束n 在在PORT_ID列上創(chuàng)建列上創(chuàng)建PRIMARY KEY約束約束74在在CREATE TABLE中創(chuàng)建約束中創(chuàng)建約束o 例:例:UNIQUE約束約束75在在CREATE TABLE中創(chuàng)建約束中創(chuàng)建約束o 例:例:FOREIGN KEY約束約束76在在CREATE TABLE中創(chuàng)建約束中創(chuàng)建約束o 例:例:CH
54、ECK約束約束77在在CREATE TABLE中創(chuàng)建約束中創(chuàng)建約束o 例:創(chuàng)建表是同時聲明多個約束例:創(chuàng)建表是同時聲明多個約束78修改約束修改約束o 語法:語法:79ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_type(column1,) condition| MODIFY column NOT NULL|NULL| DROP CONSTRAINT constraint_name| PRIMARY KEY|UNIQUE(column)通過通過ALTER TABLE創(chuàng)建約束創(chuàng)建約束o 先建表,然后修改列的聲明,
55、增加主鍵約束先建表,然后修改列的聲明,增加主鍵約束80通過通過ALTER TABLE創(chuàng)建約束創(chuàng)建約束o 先建表,然后為列增加主鍵約束先建表,然后為列增加主鍵約束81查詢約束信息查詢約束信息o 通過查詢以下視圖獲取有關(guān)約束的信息:通過查詢以下視圖獲取有關(guān)約束的信息:n DBA_CONSTRAINTS、ALL_CONSTRAINTS、USER_CONSTRAINTSp CONSTRAINT_TYPE列的值:如果為主鍵約束,則約束列的值:如果為主鍵約束,則約束類型為類型為P;如果為唯一性約束,則為;如果為唯一性約束,則為U;如果為外鍵約束,;如果為外鍵約束,則為則為R;如果為檢查約束,則為;如果為檢
56、查約束,則為C。NOT NULL 約束存儲約束存儲為檢查約束。為檢查約束。n DBA_CONS_COLUMNS、ALL_CONS_COLUMNS、USER_CONS_COLUMNS82視圖(視圖(Views)83視圖視圖o 視圖是從一個或多個表或視圖中提取出來的數(shù)據(jù)視圖是從一個或多個表或視圖中提取出來的數(shù)據(jù)的一種邏輯表現(xiàn)形式的一種邏輯表現(xiàn)形式o 使用視圖具有下列優(yōu)點:使用視圖具有下列優(yōu)點:n 可以限制對基表數(shù)據(jù)的訪問,只允許用戶通過視圖看可以限制對基表數(shù)據(jù)的訪問,只允許用戶通過視圖看到表中的一部分?jǐn)?shù)據(jù)到表中的一部分?jǐn)?shù)據(jù)n 可以使復(fù)雜的查詢簡單化可以使復(fù)雜的查詢簡單化n 提供了數(shù)據(jù)的透明性,用戶
57、并不知道數(shù)據(jù)來自于何處提供了數(shù)據(jù)的透明性,用戶并不知道數(shù)據(jù)來自于何處n 提供了對相同數(shù)據(jù)的不同顯示提供了對相同數(shù)據(jù)的不同顯示84視圖視圖85HR.EMPLOYEES表表CREATE VIEW創(chuàng)建視圖創(chuàng)建視圖o 語法:語法:n FORCE:不管基表是否存在都創(chuàng)建視圖:不管基表是否存在都創(chuàng)建視圖n NOFORCE:僅當(dāng)基表存在時才創(chuàng)建視圖(默認(rèn)):僅當(dāng)基表存在時才創(chuàng)建視圖(默認(rèn))n subquery為子查詢,決定了視圖中數(shù)據(jù)的來源為子查詢,決定了視圖中數(shù)據(jù)的來源n WITH READ ONLY指明視圖為只讀視圖,不能修改指明視圖為只讀視圖,不能修改n WITH CHECK OPTION指明在使用視
58、圖時,檢查數(shù)指明在使用視圖時,檢查數(shù)據(jù)是否符合子查詢中的約束條件據(jù)是否符合子查詢中的約束條件n CONSTRAINT constraint為使用為使用WITH CHECK OPTION選項時指定的約束命名選項時指定的約束命名 86CREATE OR REPLACE FORCE|NOFORCE VIEW schema.view_name(column1,column2,) AS subqueryWITH READ ONLY|WITH CHECK OPTIONCONSTRIANT constraintCREATE VIEW創(chuàng)建視圖創(chuàng)建視圖o 創(chuàng)建簡單視圖創(chuàng)建簡單視圖n 簡單視圖的子查詢只從簡單視圖
59、的子查詢只從一個基表一個基表中導(dǎo)出數(shù)據(jù),并且中導(dǎo)出數(shù)據(jù),并且不包含連接、組函數(shù)不包含連接、組函數(shù)等等n 例如:(注:使用例如:(注:使用HR模式中的模式中的employees表)表)87CREATE VIEW創(chuàng)建視圖創(chuàng)建視圖o 創(chuàng)建復(fù)雜視圖創(chuàng)建復(fù)雜視圖n 復(fù)雜視圖的子查詢從復(fù)雜視圖的子查詢從一個或多個表一個或多個表中導(dǎo)出數(shù)據(jù),也中導(dǎo)出數(shù)據(jù),也可以是可以是經(jīng)過運算經(jīng)過運算得到的數(shù)據(jù)得到的數(shù)據(jù)n 例如:創(chuàng)建一個視圖,包含各個員工的員工號、員例如:創(chuàng)建一個視圖,包含各個員工的員工號、員工名及其部門名稱(注:使用工名及其部門名稱(注:使用SCOTT模式中的表)模式中的表)88CREATE VIEW創(chuàng)建
60、視圖創(chuàng)建視圖o 內(nèi)嵌視圖內(nèi)嵌視圖n 在在FROM子句中使用的子查詢,習(xí)慣上又稱為內(nèi)嵌子句中使用的子查詢,習(xí)慣上又稱為內(nèi)嵌視圖。內(nèi)嵌視圖可以將復(fù)雜的連接查詢簡單化,可視圖。內(nèi)嵌視圖可以將復(fù)雜的連接查詢簡單化,可以將多個查詢壓縮成一個簡單查詢,因此通常用于以將多個查詢壓縮成一個簡單查詢,因此通常用于簡化復(fù)雜的查詢簡化復(fù)雜的查詢n 例如:查詢各個部門的部門名、部門的最高工資和例如:查詢各個部門的部門名、部門的最高工資和最低工資(注:使用最低工資(注:使用SCOTT模式中的表)模式中的表)89視圖操作視圖操作o 數(shù)據(jù)查詢數(shù)據(jù)查詢、DML操作操作 (數(shù)據(jù)的插入、刪除、修數(shù)據(jù)的插入、刪除、修改改) 等等o
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度水陸聯(lián)運貨物保險及運輸合同
- 二零二五年度新能源儲能技術(shù)聘用合同8篇
- 二零二四年度信息化設(shè)備融資租賃管理合同3篇
- 課件:正確認(rèn)識高職院校內(nèi)部質(zhì)量保證體系診斷與改進(jìn)
- 二零二五年度牧草生物質(zhì)能項目合作協(xié)議4篇
- 2025版農(nóng)家樂民宿租賃管理服務(wù)合同2篇
- 二零二五版年薪制勞動合同:房地產(chǎn)企業(yè)銷售精英激勵方案4篇
- 第三單元 資產(chǎn)階級民主革命與中華民國的建立(解析版)- 2023-2024學(xué)年八年級歷史上學(xué)期期中考點大串講(部編版)
- 2025年度個人家政服務(wù)分期支付合同范本2篇
- 二零二五年度地鐵車站安全門系統(tǒng)采購合同
- 2024年蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 人教版初中語文2022-2024年三年中考真題匯編-學(xué)生版-專題08 古詩詞名篇名句默寫
- 2024-2025學(xué)年人教版(2024)七年級(上)數(shù)學(xué)寒假作業(yè)(十二)
- 山西粵電能源有限公司招聘筆試沖刺題2025
- ESG表現(xiàn)對企業(yè)財務(wù)績效的影響研究
- 醫(yī)療行業(yè)軟件系統(tǒng)應(yīng)急預(yù)案
- 使用錯誤評估報告(可用性工程)模版
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫附答案
- 2024年4月浙江省00015英語二試題及答案含評分參考
- 黑枸杞生物原液應(yīng)用及產(chǎn)業(yè)化項目可行性研究報告
- 2024年黑龍江省政工師理論知識考試參考題庫(含答案)
評論
0/150
提交評論