第4章 數據表操作_第1頁
第4章 數據表操作_第2頁
第4章 數據表操作_第3頁
第4章 數據表操作_第4頁
第4章 數據表操作_第5頁
已閱讀5頁,還剩85頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第4講數據表操作本章學習導航本章學習導航本章學習要點(1)使用OEM創建、修改、查看和刪除數據表。(2)使用SQLDeveloper創建、修改、查看和刪除數據表。(3)使用PL/SQL創建、修改、查看和刪除數據表。(4)添加、刪除和修改數據表中的記錄。(5)數據完整性概述。(6)非空、默認、唯一、檢查、主鍵和外鍵約束操作。(7)管理序列和同義詞。

(*)使用PL/SQL編程4.1數據庫概述數據表基礎數據表(Table)是數據在Oracle數據庫中的邏輯存儲單元,按指定關系模式將數據存儲在對應的數據表中。4.1數據庫概述Oracle基本數據類型數據類型的作用在于指明存儲數值時需要占據的內存空間大小和進行運算的依據。Oracle的數據類型分為標量(Scalar)類型、復合(Composite)類型、引用(Reference)類型和LOB(LargeObject)類型4種類型

。4.1數據庫概述Oracle基本數據類型(1)CHAR(n)該數據類型用于定義固定長度的字符串,其中n用于指定字符串的最大長度,n必須是正整數且不超過32767。(2)VARCHAR2(n)該數據類型用于定義可變長度的字符串,其中n用于指定字符串的最大長度,n必須是正整數且不超過32767。(3)NUMBER(precision,scale)該數據類型用于定義固定長度的整數和浮點數,其中precision表示精度,用于指定數字的總位數;scale表示標度,用于指定小數點后的數字位數,默認值為0,即沒有小數位數。4.1數據庫概述Oracle基本數據類型(4)DATE該數據類型用于定義日期時間類型的數據,其數據長度為固定7個字節,分別描述年、月、日、時、分、秒。

(5)TIMESTAMP該數據類型也用于定義日期時間數據,但與DATE僅顯示日期不同,TIMESTAMP類型數據還可以顯示時間和上下午標記,如“15-9月-200711:09:32.213AM”。

(6)BOOLEAN該數據類型用于定義布爾型(邏輯型)變量,其值只能為TRUE(真)、FALSE(假)或NULL(空)。需要注意的是,該數據類型是PL/SQL數據類型,不能應用于表列。4.1數據庫概述方案的概念方案,就是一系列數據庫對象的集合,是數據庫中存儲數據的一個邏輯表示或描述。Oracle11g數據庫中并不是所有的數據庫對象都是方案對象,方案對象有表、索引、觸發器、數據庫鏈接、PL/SQL包、序列、同義詞、視圖、存儲過程、存儲函數等,非方案對象有表空間、用戶、角色、概要文件等。在Oracle11g數據庫中,每個用戶都擁有自己的方案,創建了一個用戶,就創建了一個同名的方案,方案與數據庫用戶是對應的。用戶在數據庫中創建了一個方案對象后,這個方案對象默認地屬于這個用戶的方案。課堂案例1

—使用OEM創建GOODS表掌握Oracle中應用OEM創建數據表的方法和基本步驟案例學習目標進入OEM表編輯頁面、列的數據類型的選擇、OEM創建表的基本步驟。案例知識要點課堂案例1

—使用OEM創建GOODS表案例完成步驟添加標題文字(1)啟動OEM后,依次選擇“方案”、“表”。進入“表”頁面。(2)單擊“創建”按鈕,進入“創建表:表組織”頁面,選擇默認的“標準(按堆組織)”方式。(3)單擊“繼續”按鈕,進入“表一般信息”頁面。指寫表名為GOODS,方案為SCOTT,表空間為TS_EBUY。并依次填寫GOODS表中的每一列的名稱和數據類型。(4)單擊“確定”按鈕,完成新表的創建。并返回到對應的方案頁面。

添加標題文字教師演示講解課堂案例2——使用OEM修改GOODS表掌握Oracle中應用OEM修改數據表的方法。案例學習目標進入表的編輯頁面、列數據類型的修改、列的寬度的修改、添加新列、刪除已有列。案例知識要點課堂案例2——使用OEM修改GOODS表案例完成步驟添加標題文字(1)啟動OEM后,依次選擇“方案”、“表”,進入“表”頁面,指定要操作的方案(如SCOTT)后,單擊“確定”按鈕,即顯示出指定方案中包含的表

。(2)選擇指定的表(如GOODS),單擊“編輯”按鈕,進入表的編輯頁面。在該頁面中可以完成對表名、列名、列類型等的修改

(3)修改完成后,單擊“應用”按鈕,保存修改結果。添加標題文字教師演示講解4.2.3使用OEM查看和刪除表OEM查看表添加標題文字(1)啟動OEM后,進入指定方案(如SCOTT)的“表”頁面。(2)選擇要查看的表后,單擊“查看”按鈕,即可查看到表的一般信息。添加標題文字教師演示講解

4.2.3使用OEM查看和刪除表OEM刪除表添加標題文字(1)在指定方案的“表”頁面,選擇要刪除的表(如:GOODS),單擊“使用選項刪除”按鈕,進入“確認”頁面。(2)單擊“是”按鈕,根據指定的選項完成對指定表的刪除操作。添加標題文字教師演示講解

課堂案例3——使用SQLDeveloper創建Users表掌握Oracle中應用SQLDeveloper創建數據表的一般步驟和方法。案例學習目標SQLDeveloper的啟動、SQLDeveloper的登錄、SQLDeveloper中數據類型的選擇、SQLDeveloper中創建表的步驟、SQLDeveloper中數據表列的操作方法。案例知識要點課堂案例3——使用SQLDeveloper創建Users表案例完成步驟添加標題文字(1)啟動SQLDeveloper并建立和Oracle11g數據庫的連接,以指定的方案(如方案名:SCOTT,密碼:123456)登錄SQLDeveloper后。在SQLDeveloper的左邊樹型結構中,依次選擇“eBuy”、“Tables”,右鍵單擊“Tables”項,從快捷菜單中選擇“NewTable”

添加標題文字教師演示講解課堂案例3——使用SQLDeveloper創建Users表案例完成步驟添加標題文字(2)打開“CreateTable”對話框,指定新建數據表的名稱(如Users);選擇默認的用戶方案(SCOTT)。(3)添加數據表列。首先單擊“AddColumn”按鈕,再設置列的名稱、數據類型、數據類型的長度、是否允許列值非空和該列是否為主鍵后,將為新表增加一個數據列。按照這種方法,依次為Users數據表添加數據列

添加標題文字教師演示講解課堂案例3——使用SQLDeveloper創建Users表案例完成步驟添加標題文字(4)指定列數據類型。在SQLDeveloper創建表的普通狀態下,數據列只能選擇VARCHAR2、CLOB、INTEGER、NUMBERt和DATE五種數據類型,如果要使用更多的數據類型,請選中Advanced復選框。(5)單擊“確定”按鈕,完成數據表的創建,在SQLDeveloper中的Tables項下將新增Users項。(6)在為數據表添加數據列之后,選擇“SQL”選項卡,用戶可以查看創建數據表的DDL腳本。添加標題文字教師演示講解4.3.2使用SQLDeveloper修改表修改表添加標題文字在SQLDeveloper左邊欄的Tables項中右擊需要修改的數據表,從快捷菜單中選擇“Edit”,將打開“EditTable”對話框,用戶可以完成對數據表的修改操作。修改完成后單擊“確定”按鈕,保存修改結果。添加標題文字教師演示講解

4.3.3使用SQLDeveloper查看和刪除表查看表添加標題文字在SQLDeveloper的Tables選項中單擊需要查看的表,在右邊欄內將出現該表的詳細情況,包括該表所屬的列、數據、約束、授權和主鍵等各種信息

。添加標題文字教師演示講解

4.3.3使用SQLDeveloper查看和刪除表刪除表添加標題文字(1)刪除數據表時,首先從Tables項中右擊需要刪除的數據表,然后從快捷菜單中依次選擇“Table”和“Drop”

。(2)在打開的的刪除對話框中,單擊“應用”按鈕。添加標題文字教師演示講解

課堂案例4——使用PL/SQL管理表掌握Oracle中應用PL/SQL語句創建數據表、修改數據表、刪除數據表的方法。案例學習目標

CREATETABLE語句、ALTERTABLE語句、DROPTABLE語句、PL/SQL的執行。案例知識要點課堂案例4——使用PL/SQL管理表案例完成步驟-創建數據表添加標題文字教師演示講解(1)編寫SQL腳本(2)運行創建CUSTOMER表的腳本輸入到SQLDeveloper的“EnterSQLStatement”區域,單擊圖標或按F5鍵運行腳本,執行PL/SQL語句課堂案例4——使用PL/SQL管理表案例完成步驟-修改數據表添加標題文字教師演示講解1.添加列【例4-2】考慮到需要了解商品的生產廠商的信息,要在SCOTT用戶方案的GOODS表中添加一個長度為20個字符,名稱為g_Producer,類型為varchar的新的一列。ALTERTABLESCOTT.GOODSADDg_Producervarchar(20)課堂案例4——使用PL/SQL管理表案例完成步驟-修改數據表添加標題文字教師演示講解2.修改列【例4-3】考慮到出生日期的實際長度和數據操作的方便性,要將SCOTT用戶方案中的GOODS表中的g_ProduceDate數據類型改為char型,且寬度為10。ALTERTABLESCOTT.GOODSMODIFYg_ProduceDatechar(10)課堂案例4——使用PL/SQL管理表案例完成步驟-修改數據表添加標題文字教師演示講解3.刪除列使用ALTERTABLE語句刪除列時,可以使用DROPCOLUMN關鍵字。【例4-4】如果不考慮商品的生產廠商信息,要在SCOTT用戶方案中的GOODS表中刪除已有列g_Producer。ALTERTABLESCOTT.GOODSDROPCOLUMNg_Producer使用ALTERTABLESCOTT.GOODSCASCADE;可以刪除與指定列相關聯的約束課堂案例4——使用PL/SQL管理表案例完成步驟-查看刪除表添加標題文字教師演示講解1.查看表【例4-5】使用DESCRIBE命令查看用戶方案SCOTT下的商品表USERS。DESCRIBESCOTT.Users;2.刪除表使用PL/SQL刪除表的基本語法格式為:DROPTABLE[用戶方案.]<表名>;【例4-6】使用DROPTABLE命令刪除用戶方案為SCOTT下的商品表GOODS。DROPTABLESCOTT.GOODS;【例4-7】使用DROPTABLE命令刪除用戶方案SCOTT中的商品表GOODS,并刪除商品表的所有外鍵約束。DROPTABLESCOTT.GOODS CASCADECONSTRAINS;課堂案例5——使用SQLDeveloper操作數據記錄掌握在SQLDeveloper中操作數據記錄的方式。案例學習目標在SQLDeveloper中添加數據、在SQLDeveloper中修改數據、在SQLDeveloper中刪除數據。案例知識要點課堂案例5——使用SQLDeveloper操作數據記錄案例完成步驟添加標題文字教師演示講解課堂案例6——使用PL/SQL操作數據記錄學習使用PL/SQL語句插入記錄、修改記錄和刪除記錄的語句。案例學習目標INSERT語句插入記錄、UPDATE語句修改記錄、DELETE語句刪除記錄。案例知識要點課堂案例6——使用PL/SQL操作數據記錄案例完成步驟添加標題文字教師演示講解1.插入數據記錄在PL/SQL中,使用INSERTINTO語句實現在表中插入數據記錄的操作,其語法格式為:INSERTINTO[用戶方案].<表>[(<列1>[,<列2>…])]VALUES(<值1>[,<值2>…]);(1)插入所有列(2)插入指定列課堂案例6——使用PL/SQL操作數據記錄案例完成步驟添加標題文字教師演示講解2.更新數據記錄在PL/SQL中,使用UPDATE語句實現更新表中數據記錄的操作,其語法格式為:UPDATE[用戶方案].<表>SET<列1>=<表達式1>[,<列2>=<表達式2>…][WHERE條件表達式];(1)修改單條記錄(2)修改多條記錄課堂案例6——使用PL/SQL操作數據記錄案例完成步驟添加標題文字教師演示講解3.刪除數據記錄在PL/SQL中,使用DELETEFROM語句實現刪除表中數據記錄的操作,其語法格式為:DELETE[FROM][用戶方案].<表>[WHERE條件表達式;](1)刪除指定記錄

(2)刪除所有記錄PL/SQl簡介PL/SQL是過程語言(ProceduralLanguage)與結構化查詢語言(SQL)結合而成的編程語言PL/SQL是對SQL的擴展支持多種數據類型,如大對象和集合類型,可使用條件和循環等控制結構可用于創建存儲過程、觸發器和程序包,給SQL語句的執行添加程序邏輯與Oracle服務器和Oracle工具緊密集成,具備可移植性、靈活性和安全性支持SQL,在PL/SQL中可以使用:數據操縱命令事務控制命令游標控制SQL函數和SQL運算符支持面向對象編程(OOP)可移植性,可運行在任何操作系統和平臺上的Oralce數據庫更佳的性能,PL/SQL經過編譯執行安全性,可以通過存儲過程限制用戶對數據的訪問用戶將整個語句塊發送給OracleOracleProcedureBegin

ProcedureCallSQLCommand

…EndPL/SQL引擎駐留在Oracle服務器中該引擎接受PL/SQL塊并對其進行編譯執行將PL/SQL塊發送給Oracle服務器用戶執行過程語句引擎將SQL語句發送給SQL語句執行器Oracle服務器PL/SQL引擎SQL

語句

執行器過程語句

執行器執行SQL語句將結果發送給用戶使用PL/SQL編程常量和變量--常量常量是指在程序運行期間其值不能改變的量。

【例5-1】定義常量PI(3.14159)。--設置打開控制臺輸出SETSERVEROUTPUTON--聲明一個變量或常量DECLAREPICONSTANTNUMBER(6,5):=3.14159;BEGIN--輸出指定變量或常量的值

DBMS_OUTPUT.PUT_LINE('PI='||PI);END;

其中,PUT_LINE過程中使用的“||”用于連接輸出內容的兩部分

課堂案例1——使用PL/SQL編程常量和變量--變量變量是指由程序讀取或賦值的存儲單元,用于臨時存儲數據,變量中的數據可以隨著程序的運行而發生變化。每個變量都必須有一個特定的數據類型,可以是系統數據類型,也可以是自定義數據類型。

【例5-2】編寫計算圓面積的PL/SQL塊。SETSERVEROUTPUTONDECLAREPICONSTANTNUMBER(6,5):=3.14159;--聲明兩個變量并賦初值

v_radiuFLOAT:=2;v_areaFLOAT;BEGINv_area:=PI*v_radiu*v_radiu;DBMS_OUTPUT.PUT_LINE('Area='||v_area);END;課堂案例1——使用PL/SQL編程條件結構-IF結構【例5-3】使用簡單IF結構判斷一個整數的奇偶性。SETSERVEROUTPUTONDECLAREv_numberINTEGER:=518;BEGIN

IFMOD(v_number,2)=0THENDBMS_OUTPUT.PUT_LINE(v_number||'是一個偶數');

ELSEDBMS_OUTPUT.PUT_LINE(v_number||'是一個奇數');ENDIF;END;課堂案例1——使用PL/SQL編程條件結構-IF結構【例5-4】使用復雜IF結構輸出3個整數之中的最大者。課堂案例1——使用PL/SQL編程條件結構-CASE結構【例5-5】使用單一選擇符進行等值比較的CASE結構將百分制成績轉換為5分制成績。課堂案例1——使用PL/SQL編程條件結構-CASE結構【例5-6】使用多種條件進行非等值比較的CASE結構將百分制成績轉換為5分制成績。課堂案例1——使用PL/SQL編程循環結構-While循環【例5-7】使用WHILE循環求1到100的所有正整數之和。SETSERVEROUTPUTONDECLARE iINTEGER:=1; sINTEGER:=0;BEGIN

WHILEi<=100LOOP s:=s+i; i:=i+1;

ENDLOOP; DBMS_OUTPUT.PUT_LINE('1+2+...+100='||s);END;課堂案例1——使用PL/SQL編程循環結構-Loop循環【例5-8】使用LOOP循環求1到100的所有正整數之和。SETSERVEROUTPUTONDECLARE iINTEGER:=1; sINTEGER:=0;BEGIN

LOOP s:=s+i; i:=i+1; EXITWHENi>100;

ENDLOOP; DBMS_OUTPUT.PUT_LINE('1+2+...+100='||s);END;課堂案例1——使用PL/SQL編程循環結構-For循環使用FOR循環不需要顯式聲明循環控制變量的類型,而由PL/SQL隱式提供。默認情況下,循環控制變量從下限值開始,每次循環結束后自動增加1,直至超過上限值為止;若指定REVERSE參數,則循環控制變量從上限值開始,每次循環結束后自動減1,直至低于下限值為止。

課堂案例1——使用PL/SQL編程循環結構-For循環【例5-9】使用不帶REVERSE參數的FOR循環求1到100的所有正整數之和。【例5-10】使用帶REVERSE參數的FOR循環求1到100的所有正整數之和。課堂案例1——使用PL/SQL編程循環結構-跳轉語句【例5-11】借助于GOTO跳轉語句輸出10以內第一個能同時被2和3整除的正整數。SETSERVEROUTPUTONDECLAREnumINTEGER:=1;BEGINWHILEnum<=10LOOPIFMOD(num,2)=0ANDMOD(num,3)=0THEN

GOTOdisplay;ENDIF;num:=num+1;ENDLOOP;<<display>> DBMS_OUTPUT.PUT_LINE(num);END;課堂案例1——使用PL/SQL編程常用系統函數-數學函數課堂案例1——使用PL/SQL編程常用系統函數-數學函數【例5-12】測試常用數學函數的用法。SETSERVEROUTPUTONBEGINDBMS_OUTPUT.PUT_LINE('-8的絕對值為'||ABS(-8));DBMS_OUTPUT.PUT_LINE('8的3次冪為'||POWER(8,3));DBMS_OUTPUT.PUT_LINE('8的平方根為'||SQRT(8));DBMS_OUTPUT.PUT_LINE('3.14159四舍五入到小數點后3位為'||ROUND(3.14159,3));DBMS_OUTPUT.PUT_LINE('e='||EXP(1));DBMS_OUTPUT.PUT_LINE('大于或等于-32.5的最小整數為'||CEIL(-32.5));DBMS_OUTPUT.PUT_LINE('小于或等于-32.5的最大整數為'||FLOOR(-32.5));END;課堂案例1——使用PL/SQL編程常用系統函數-字符串函數課堂案例1——使用PL/SQL編程常用系統函數-字符串函數【例5-13】測試常用字符串函數的用法。SETSERVEROUTPUTONBEGINDBMS_OUTPUT.PUT_LINE('a的ACSCII值為'||ASCII('a'));DBMS_OUTPUT.PUT_LINE('ACSCII值97對應的字符為'||CHR(97));DBMS_OUTPUT.PUT_LINE('字符串"HunanRailway"的長度為'||LENGTH('HunanRailway'));DBMS_OUTPUT.PUT_LINE('將字符串"HunanRailway"全部轉換為大寫形式為'||UPPER('HunanRailway'));DBMS_OUTPUT.PUT_LINE('將字符串"HunanRailway"全部轉換為小寫形式為'||LOWER('HunanRailway'));END;課堂案例1——使用PL/SQL編程常用系統函數-日期函數課堂案例1——使用PL/SQL編程常用系統函數-日期函數【例5-14】測試常用日期函數的用法。SETSERVEROUTPUTONBEGINDBMS_OUTPUT.PUT_LINE('當前日期時間為'||SYSDATE);DBMS_OUTPUT.PUT_LINE('當前月份的最后一天的日期為'||LAST_DAY(SYSDATE));DBMS_OUTPUT.PUT_LINE('字符串對應日期'||TO_DATE('2007-5-24','YYYY-MM-DD'));DBMS_OUTPUT.PUT_LINE('兩個日期相差的月份'||MONTHS_BETWEEN('14-4月-99',SYSDATE));END;課堂案例1——使用PL/SQL編程常用系統函數-轉換函數課堂案例1——使用PL/SQL編程常用系統函數-轉換函數【例5-15】測試常用轉換函數的用法。SETSERVEROUTPUTONBEGINDBMS_OUTPUT.PUT_LINE('轉換為數據庫字符集的ASCII字符串為'||ASCIISTR('湖南鐵道'));DBMS_OUTPUT.PUT_LINE('將當前日期轉換為字符串類型數據為'||CAST(SYSDATEASVARCHAR2));DBMS_OUTPUT.PUT_LINE('將字符串轉換為ROWID數據類型為'||CHARTOROWID('AAAAFdl/#$'));DBMS_OUTPUT.PUT_LINE('字符集轉換'||CONVERT('湖南鐵道','US7ASCII','WE8ISO8859P1'));END;課堂案例1——使用PL/SQL編程%TYPE變量Oracle9i以后的版本提供了%TYPE定義方法。這樣當數據表的字段類型修改后,PL/SQL程序中相應變量的類型也自動修改。【例5-16】使用%TYPE獲取查詢的商品的基本信息。SETSERVEROUTPUTONDECLARE

v_gIdGoods.g_ID%TYPE;v_gNameGoods.g_Name%TYPE;v_gPriceGoods.g_Price%TYPE;v_gNumberGoods.g_Number%TYPE;BEGINSELECTg_ID,g_Name,g_Price,g_NumberINTOv_gId,v_gName,v_gPrice,v_gNumberFROMSCOTT.GoodsWHEREg_ID='010003';dbms_output.put_line(v_gId||'/'||v_gName||'/'||v_gPrice||'/'||v_gNumber);END;

課堂案例1——使用PL/SQL編程%ROWTYPE變量與%TYPE類型類似,也可以在不確定查詢列的類型的情況下,使用%ROWTYPE類型的變量存儲查詢的一行數據

。【例5-17】使用%ROWTYPE獲取查詢的商品基本信息。SETSERVEROUTPUTONDECLARE

v_GoodRecordGoods%ROWTYPE;BEGINSELECT*INTOv_GoodRecordFROMSCOTT.GoodsWHEREg_ID='010003';dbms_output.put_line(v_GoodRecord.g_ID);dbms_output.put_line(v_GoodRecord.g_Name);dbms_output.put_line(v_GoodRecord.g_Price);dbms_output.put_line(v_GoodRecord.g_Number);END;課堂案例1——使用PL/SQL編程異常處理為了提高應用程序的健壯性,開發人員必須考慮程序可能出現的各種錯誤,并進行相應的處理。在Oracle中,為了處理PL/SQL應用程序的各種錯誤,Oracle提供了三種類型的異常。(1)預定義異常:用于處理常見的Oracle錯誤(2)非預定義異常:用于處理預定義異常所不能處理的Oracle錯誤(3)自定義異常:用于處理于Oracle錯誤無關的其他情況課堂案例1——使用PL/SQL編程異常處理—系統預定義異常課堂案例1——使用PL/SQL編程異常處理—系統預定義異常【例5-18】對Goods表中的插入的重復商品號進行異常處理(使用預定義異常)。SETSERVEROUTPUTONBEGININSERTINTOSCOTT.GoodsVALUES('010001','諾基亞6700Slide','01',1500,0.9,20,to_date('2009-06-01','yyyy-mm-dd'),'pImage/010001.gif','熱點','彩屏,1600萬色,TFT,240×320像素,2.2英寸');EXCEPTIONWHENDUP_VAL_ON_INDEXTHENdbms_output.put_line('捕獲到DUP_VAL_ON_INDEX異常');dbms_output.put_line('重復的商品編號');END;課堂案例1——使用PL/SQL編程異常處理—非預定義異常使用非預定義異常需要包括以下三個步驟:(1)在定義部分定義異常名;(2)在異常和Oracle錯誤之間建立關聯(需要使用偽過程EXCEPTION_INIT);(3)在異常處理部分捕捉并處理異常。【例5-19】刪除商品類別表,并處理ORA-2292錯誤(使用非預定義異常)。SETSERVEROUTPUTONDECLAREe_FKEXCEPTION;--1、定義部分

PRAGMAEXCEPTION_INIT(e_FK,-2292);--2、建立關聯關系BEGINDELETESCOTT.TypesWHEREt_Name='通信商品';EXCEPTIONWHENe_FKTHEN--3、捕捉處理

DBMS_OUTPUT.PUT_LINE('該類別已被使用');END;課堂案例1——使用PL/SQL編程異常處理—自定義異常使用自定義異常時,需要包括以下三個步驟:(1)需要在定義部分(DECLARE)定義異常;(2)再執行部分(BEGIN)觸發異常(使用RAISE語句);(3)在異常處理部分(EXCEPTION)捕捉并處理異常。

7.2存儲過程概述視圖特點在Oracle中,可以在數據庫中定義子程序,在子程序中將一些固定的操作集中起來,由Oracle數據庫服務器完成,以完成某個特定的功能。這種子程序稱為存儲過程(Proce-Dure)。使用存儲過程具有如下的優點:(1)存儲過程在服務器端運行,執行速度快;(2)存儲過程執行一次后駐留在Oracle數據庫服務器的高速Cache中,以后再次執行存儲過程時,只需從高速Cache中調用已經編譯好的代碼即可,從而提高了系統性能;(3)存儲過程確保了數據庫的安全。使用存儲過程,可以在禁止用戶直接訪問應用程序中的某些數據表的情況下,授權執行訪問這些數據表的存儲過程。(4)自動完成需要預先執行的任務。存儲過程可以設置為系統啟動時自動執行,而不必在系統啟動后再進行手動操作,從而方便了用戶的使用,可以自動完成一些需要預先執行的任務。4.6.1數據完整性概述概述添加標題文字數據完整性是指數據的精確性和可靠性。它是為防止數據庫中存在不符合語義規定的數據和防止因錯誤信息的輸入輸出造成無效操作或錯誤信息而提出的。數據完整性主要分為4類:域完整性、實體完整性、引用完整性和用戶定義完整性。1.域完整性域完整性是指數據庫表中的列必須滿足某種特定的數據類型或約束,其中約束又包括取值范圍精度等規定。表中的CHECK、FOREIGNKEY約束和DEFAULT、NOTNULL定義都屬于域完整性的范疇。2.實體完整性實體完整性規定表的每一行在表中是唯一的。實體表中定義的UNIQUE、PRIMARYKEY和IDENTITY約束就是實體完整性的體現。4.6.1數據完整性概述概述添加標題文字3.引用完整性引用完整性是指兩個表的主關鍵字和外關鍵字的數據應對應一致。它確保了有主關鍵字的表中對應其他表的外關鍵字的行存在,即保證了表之間的數據的一致性,防止了數據丟失或無意義的數據在數據庫中擴散。引用完整性作用表現在如下幾個方面:禁止在從表中插入包含主表中不存在的關鍵字的數據行;禁止會導致從表中的相應值孤立的主表中的外關鍵字值改變;禁止刪除在從表中有對應記錄的主表記錄。4.用戶定義完整性用戶定義完整性指的是由用戶指定的一組規則,它不屬于實體完整性、域完整性或引用完整性。

課堂案例7——數據完整性與約束學習在Oracle中使用OEM和PL/SQL語句實現各類約束以實現數據完整性的方法和操作步驟

。案例學習目標管理NOTNULL約束、管理DEFAULT約束、管理UNIQUE約束、管理CHECK約束、管理PRIMARYKEY約束、管理FOREIGNKEY約束

。案例知識要點課堂案例7——數據完整性與約束案例完成步驟-非空約束添加標題文字教師演示講解非空約束說明列值不允許為空(NULL),當插入或修改數據時,設置了非空約束的列的值不允許為空,它必須存在具體的值,如商品編號、商品名稱必須為非空。如果沒有為列創建非空約束,則該列默認為允許空值。非空約束可以通過OEM或PL/SQL創建。課堂案例7——數據完整性與約束案例完成步驟-默認約束添加標題文字教師演示講解默認約束是指表中添加新行時給表中某一列指定的默認值。使用默認約束一是可以避免不允許為空值的數據錯誤,二是可以加快用戶的輸入速度。默認約束可以通過OEM或PL/SQL創建。如果創建了稱為“默認值”的對象。當綁定到列或用戶定義數據類型時,如果插入時沒有明確提供值,默認值便指定一個值,并將其插入到對象所綁定的列中

。課堂案例7——數據完整性與約束案例完成步驟-默認約束添加標題文字教師演示講解默認約束是指表中添加新行時給表中某一列指定的默認值。使用默認約束一是可以避免不允許為空值的數據錯誤,二是可以加快用戶的輸入速度。默認約束可以通過OEM或PL/SQL創建。c_Genderchar(2)DEFAULT'女', --性別

課堂案例7——數據完整性與約束案例完成步驟-唯一約束添加標題文字教師演示講解唯一約束通過確保在列中不輸入重復值保證一列或多列的實體完整性,每個唯一約束要創建一個唯一索引。對于實施唯一約束的列,不允許有任意兩行具有相同的索引值。如商品編號是唯一的,這樣才能唯一地確定一種商品。與主鍵約束不同的是,Oracle允許為一個表創建多個唯一約束。唯一約束可以通過OEM或PL/SQL創建

。CONSTRAINT約束名UNIQUE(列);課堂案例7——數據完整性與約束案例完成步驟-檢查約束添加標題文字教師演示講解檢查約束限制輸入到一列或多列中的可能值,從而保證Oracle數據庫中數據的域完整性。檢查約束實際上定義了一種輸入驗證規則,表示一個列的輸入內容必須符合該列的檢查約束條件,如果輸入內容不符合規則,則數據輸入無效。如商品數量必須定義在[0,100]之間,輸入的任何商品的數量都必須符合此規則,否則這樣的數據記錄不會被插入到商品表中。

課堂案例7——數據完整性與約束案例完成步驟-主鍵約束添加標題文字教師演示講解主鍵約束主要用于實現實體完整性,對于指定了主鍵約束的列,要求表中的每一行有一個唯一的標識符,這個標識符就是主鍵。主鍵約束實際上是通過創建唯一索引來保證指定列的實體完整性的。主鍵約束可以應用于表中一列或多列(復合主鍵)

課堂案例7——數據完整性與約束案例完成步驟-外鍵約束添加標題文字教師演示講解外鍵約束為表中一列或多列數據提供引用完整性,它限制插入到表中被約束列的值必須在被引用表中已經存在。實施外鍵約束時,要求在被引用表中定義了主鍵約束或唯一約束。被引用表被稱為主表,主表中的主鍵稱為引用完整性中的主鍵,必須引用主表進行引用完整性約束

溫馨提示

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

評論

0/150

提交評論