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

下載本文檔

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

文檔簡介

1、第4講 數(shù)據(jù)表操作O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程本章學(xué)習(xí)導(dǎo)航本章學(xué)習(xí)導(dǎo)航本章學(xué)習(xí)導(dǎo)航本章學(xué)習(xí)導(dǎo)航 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程本章學(xué)習(xí)要點本章學(xué)習(xí)要點(1)使用)使用OEM創(chuàng)建、修改、查看和刪除數(shù)據(jù)表。創(chuàng)建、修改、查看和刪除數(shù)據(jù)表。(2)使用)使用SQL Developer創(chuàng)建、修改、查看和刪除創(chuàng)建、修改、查看和刪除數(shù)據(jù)表。數(shù)據(jù)表。(3)使用)使用PL/SQL創(chuàng)建、修改、查看和刪除數(shù)據(jù)表。創(chuàng)建、修改、查看和刪除

2、數(shù)據(jù)表。(4)添加、刪除和修改數(shù)據(jù)表中的)添加、刪除和修改數(shù)據(jù)表中的記錄記錄。(5)數(shù)據(jù)完整性數(shù)據(jù)完整性概述。概述。(6)非空、默認(rèn)、唯一、檢查、主鍵和外鍵約束操)非空、默認(rèn)、唯一、檢查、主鍵和外鍵約束操作。作。(7)管理)管理序列序列和和同義詞同義詞。 (*)使用PL/SQL編程 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程4.1 數(shù)據(jù)庫概述 數(shù)據(jù)表基礎(chǔ)數(shù)據(jù)表基礎(chǔ)l數(shù)據(jù)表(數(shù)據(jù)表(Table)是數(shù)據(jù)在)是數(shù)據(jù)在Oracle數(shù)據(jù)庫中的邏輯存儲單元,按指定關(guān)數(shù)據(jù)庫中的邏輯存儲單元,按指定關(guān)系模式將數(shù)據(jù)存儲在對應(yīng)的數(shù)據(jù)表

3、中。系模式將數(shù)據(jù)存儲在對應(yīng)的數(shù)據(jù)表中。O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程4.1 數(shù)據(jù)庫概述 OracleOracle基本數(shù)據(jù)類型基本數(shù)據(jù)類型l數(shù)據(jù)類型的作用在于指明存儲數(shù)值時需要占據(jù)的內(nèi)存空間大小和進(jìn)行數(shù)據(jù)類型的作用在于指明存儲數(shù)值時需要占據(jù)的內(nèi)存空間大小和進(jìn)行運算的依據(jù)。運算的依據(jù)。lOracle的數(shù)據(jù)類型分為標(biāo)量(的數(shù)據(jù)類型分為標(biāo)量(Scalar)類型、復(fù)合()類型、復(fù)合(Composite)類)類型、引用(型、引用(Reference)類型和)類型和LOB(Large Object)類型)類型4種類型

4、種類型 。O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程4.1 數(shù)據(jù)庫概述 OracleOracle基本數(shù)據(jù)類型基本數(shù)據(jù)類型(1)CHAR(n)該數(shù)據(jù)類型用于定義固定長度的字符串,其中該數(shù)據(jù)類型用于定義固定長度的字符串,其中n用于指定字符串的最大用于指定字符串的最大長度,長度,n必須是正整數(shù)且不超過必須是正整數(shù)且不超過32767。 (2)VARCHAR2(n)該數(shù)據(jù)類型用于定義可變長度的字符串,其中該數(shù)據(jù)類型用于定義可變長度的字符串,其中n用于指定字符串的最大用于指定字符串的最大長度,長度,n必須是正整數(shù)且不超過必須是

5、正整數(shù)且不超過32767。 (3)NUMBER(precision,scale)該數(shù)據(jù)類型用于定義固定長度的整數(shù)和浮點數(shù),其中該數(shù)據(jù)類型用于定義固定長度的整數(shù)和浮點數(shù),其中precision表示精度,表示精度,用于指定數(shù)字的總位數(shù);用于指定數(shù)字的總位數(shù);scale表示標(biāo)度,用于指定小數(shù)點后的數(shù)字位表示標(biāo)度,用于指定小數(shù)點后的數(shù)字位數(shù),默認(rèn)值為數(shù),默認(rèn)值為0,即沒有小數(shù)位數(shù)。,即沒有小數(shù)位數(shù)。 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程4.1 數(shù)據(jù)庫概述 OracleOracle基本數(shù)據(jù)類型基本數(shù)據(jù)類型(4)DATE

6、該數(shù)據(jù)類型用于定義日期時間類型的數(shù)據(jù),其數(shù)據(jù)長度為固定該數(shù)據(jù)類型用于定義日期時間類型的數(shù)據(jù),其數(shù)據(jù)長度為固定7個字節(jié),個字節(jié),分別描述年、月、日、時、分、秒。分別描述年、月、日、時、分、秒。 (5)TIMESTAMP該數(shù)據(jù)類型也用于定義日期時間數(shù)據(jù),但與該數(shù)據(jù)類型也用于定義日期時間數(shù)據(jù),但與DATE僅顯示日期不同,僅顯示日期不同,TIMESTAMP類型數(shù)據(jù)還可以顯示時間和上下午標(biāo)記,如類型數(shù)據(jù)還可以顯示時間和上下午標(biāo)記,如“15-9月月-2007 11:09:32.213 AM”。 (6)BOOLEAN該數(shù)據(jù)類型用于定義布爾型(邏輯型)變量,其值只能為該數(shù)據(jù)類型用于定義布爾型(邏輯型)變量,其

7、值只能為TRUE(真)、(真)、FALSE(假)或(假)或NULL(空)。需要注意的是,該數(shù)據(jù)類型是(空)。需要注意的是,該數(shù)據(jù)類型是PL/SQL數(shù)據(jù)類型,不能應(yīng)用于表列。數(shù)據(jù)類型,不能應(yīng)用于表列。O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程4.1 數(shù)據(jù)庫概述 方案的概念方案的概念l方案,就是一系列數(shù)據(jù)庫對象的集合,是數(shù)據(jù)庫中存儲數(shù)據(jù)的一個方案,就是一系列數(shù)據(jù)庫對象的集合,是數(shù)據(jù)庫中存儲數(shù)據(jù)的一個邏邏輯表示或描述輯表示或描述。lOracle 11g數(shù)據(jù)庫中并不是所有的數(shù)據(jù)庫對象都是方案對象,數(shù)據(jù)庫中并不是所有的數(shù)據(jù)庫

8、對象都是方案對象,方案對方案對象象有表、索引、觸發(fā)器、數(shù)據(jù)庫鏈接、有表、索引、觸發(fā)器、數(shù)據(jù)庫鏈接、PL/SQL包、序列、同義詞、視包、序列、同義詞、視圖、存儲過程、存儲函數(shù)等,圖、存儲過程、存儲函數(shù)等,非方案對象非方案對象有表空間、用戶、角色、概要有表空間、用戶、角色、概要文件等。文件等。l在在Oracle 11g數(shù)據(jù)庫中,每個用戶都擁有自己的方案,創(chuàng)建了一個用數(shù)據(jù)庫中,每個用戶都擁有自己的方案,創(chuàng)建了一個用戶,就創(chuàng)建了一個同名的方案,戶,就創(chuàng)建了一個同名的方案,方案與數(shù)據(jù)庫用戶是對應(yīng)方案與數(shù)據(jù)庫用戶是對應(yīng)的。的。 l用戶在數(shù)據(jù)庫中創(chuàng)建了一個方案對象后,這個方案對象默認(rèn)地屬于這用戶在數(shù)據(jù)庫中創(chuàng)

9、建了一個方案對象后,這個方案對象默認(rèn)地屬于這個用戶的方案。個用戶的方案。 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例1使用OEM創(chuàng)建GOODS表 掌握Oracle中應(yīng)用OEM創(chuàng)建數(shù)據(jù)表的方法和基本步驟 案例學(xué)習(xí)目標(biāo)案例學(xué)習(xí)目標(biāo) 進(jìn)入OEM表編輯頁面、列的數(shù)據(jù)類型的選擇、OEM創(chuàng)建表的基本步驟 。案例知識要點案例知識要點 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例1使用OEM創(chuàng)建GOODS表案例完成步驟案例完成步驟 (1)

10、啟動)啟動OEM后,依次選擇后,依次選擇“方案方案”、“表表”。進(jìn)入。進(jìn)入“表表”頁面頁面 。(2)單擊)單擊“創(chuàng)建創(chuàng)建”按鈕,進(jìn)入按鈕,進(jìn)入“創(chuàng)建表:表組織創(chuàng)建表:表組織”頁頁面,選擇默認(rèn)的面,選擇默認(rèn)的“標(biāo)準(zhǔn)(按堆組織)標(biāo)準(zhǔn)(按堆組織)”方式。方式。(3)單擊)單擊“繼續(xù)繼續(xù)”按鈕,進(jìn)入按鈕,進(jìn)入“表一般信息表一般信息”頁面。頁面。指寫表名為指寫表名為GOODS,方案為,方案為SCOTT,表空間為,表空間為TS_EBUY。并依次填寫。并依次填寫GOODS表中的每一列的名稱和表中的每一列的名稱和數(shù)據(jù)類型數(shù)據(jù)類型 。(4)單擊)單擊“確定確定”按鈕,完成新表的創(chuàng)建。并返回到按鈕,完成新表的創(chuàng)建

11、。并返回到對應(yīng)的方案頁面對應(yīng)的方案頁面 。 教教師師演演示示講講解解O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例2使用OEM修改GOODS表 掌握Oracle中應(yīng)用OEM修改數(shù)據(jù)表的方法 。案例學(xué)習(xí)目標(biāo)案例學(xué)習(xí)目標(biāo) 進(jìn)入表的編輯頁面、列數(shù)據(jù)類型的修改、列的寬度的修改、添加新列、刪除已有列 。案例知識要點案例知識要點 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例2使用OEM修改GOODS表案例完成步驟案例完成步驟 (1)啟動)

12、啟動OEM后,依次選擇后,依次選擇“方案方案”、“表表”,進(jìn)入,進(jìn)入“表表”頁面,指定要操作的方案(如頁面,指定要操作的方案(如SCOTT)后,單擊)后,單擊“確定確定”按鈕,即顯示出指定方案中包含的表按鈕,即顯示出指定方案中包含的表 。(2)選擇指定的表(如)選擇指定的表(如GOODS),單擊),單擊“編輯編輯”按鈕,按鈕,進(jìn)入表的編輯頁面。在該頁面中可以完成對表名、列名、進(jìn)入表的編輯頁面。在該頁面中可以完成對表名、列名、列類型等的修改列類型等的修改 (3)修改完成后,單擊)修改完成后,單擊“應(yīng)用應(yīng)用”按鈕,保存修改結(jié)果按鈕,保存修改結(jié)果 。 教教師師演演示示講講解解O r a c l eO

13、 r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程4.2.3 使用OEM查看和刪除表 OEMOEM查看表查看表 (1)啟動)啟動OEM后,進(jìn)入指定方案(如后,進(jìn)入指定方案(如SCOTT)的)的“表表”頁頁面。面。(2)選擇要查看的表后,單擊)選擇要查看的表后,單擊“查看查看”按鈕,即可查看到按鈕,即可查看到表的一般信息。表的一般信息。 教教師師演演示示講講解解 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程4.2.3 使用OEM查看和刪除表 OEMOEM刪除表刪除表 (1

14、)在指定方案的)在指定方案的“表表”頁面,選擇要刪除的表(如:頁面,選擇要刪除的表(如:GOODS),單擊),單擊“使用選項刪除使用選項刪除”按鈕,進(jìn)入按鈕,進(jìn)入“確認(rèn)確認(rèn)”頁頁面。面。 (2)單擊)單擊“是是”按鈕,根據(jù)指定的選項完成對指定表的刪按鈕,根據(jù)指定的選項完成對指定表的刪除操作。除操作。 教教師師演演示示講講解解 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例3使用SQL Developer創(chuàng)建Users表 掌握Oracle中應(yīng)用SQL Developer創(chuàng)建數(shù)據(jù)表的一般步驟和方法 。案例學(xué)習(xí)目標(biāo)案

15、例學(xué)習(xí)目標(biāo) SQL Developer的啟動、SQL Developer的登錄、SQL Developer中數(shù)據(jù)類型的選擇、SQL Developer中創(chuàng)建表的步驟、SQL Developer中數(shù)據(jù)表列的操作方法 。案例知識要點案例知識要點 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例3使用SQL Developer創(chuàng)建Users表案例完成步驟案例完成步驟 (1)啟動)啟動SQL Developer并建立和并建立和Oracle 11g數(shù)據(jù)庫數(shù)據(jù)庫的連接,以指定的方案(如方案名:的連接,以指定的方案(如方案名:

16、SCOTT,密碼:,密碼:123456)登錄)登錄SQL Developer后。在后。在SQL Developer的的左邊樹型結(jié)構(gòu)中,依次選擇左邊樹型結(jié)構(gòu)中,依次選擇“eBuy”、“Tables”,右鍵,右鍵單擊單擊“Tables”項,從快捷菜單中選擇項,從快捷菜單中選擇“New Table” 教教師師演演示示講講解解O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例3使用SQL Developer創(chuàng)建Users表案例完成步驟案例完成步驟 (2)打開)打開“Create Table”對話框,指定新建數(shù)據(jù)表的對話框,

17、指定新建數(shù)據(jù)表的名稱(如名稱(如Users);選擇默認(rèn)的用戶方案();選擇默認(rèn)的用戶方案(SCOTT)。)。(3)添加數(shù)據(jù)表列。首先單擊)添加數(shù)據(jù)表列。首先單擊“Add Column”按鈕,按鈕,再設(shè)置列的名稱、數(shù)據(jù)類型、數(shù)據(jù)類型的長度、是否允再設(shè)置列的名稱、數(shù)據(jù)類型、數(shù)據(jù)類型的長度、是否允許列值非空和該列是否為主鍵后,將為新表增加一個數(shù)許列值非空和該列是否為主鍵后,將為新表增加一個數(shù)據(jù)列。按照這種方法,依次為據(jù)列。按照這種方法,依次為Users數(shù)據(jù)表添加數(shù)據(jù)列數(shù)據(jù)表添加數(shù)據(jù)列 教教師師演演示示講講解解O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù)

18、庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例3使用SQL Developer創(chuàng)建Users表案例完成步驟案例完成步驟 (4)指定列數(shù)據(jù)類型。在)指定列數(shù)據(jù)類型。在SQL Developer創(chuàng)建表的普創(chuàng)建表的普通狀態(tài)下,數(shù)據(jù)列只能選擇通狀態(tài)下,數(shù)據(jù)列只能選擇VARCHAR2、CLOB、INTEGER、NUMBERt和和DATE五種數(shù)據(jù)類型,如果要五種數(shù)據(jù)類型,如果要使用更多的數(shù)據(jù)類型,請選中使用更多的數(shù)據(jù)類型,請選中Advanced復(fù)選框復(fù)選框 。(5)單擊)單擊“確定確定”按鈕,完成數(shù)據(jù)表的創(chuàng)建,在按鈕,完成數(shù)據(jù)表的創(chuàng)建,在SQL Developer中的中的Tables項下將新增項下將新增Users

19、項。項。 (6)在為數(shù)據(jù)表添加數(shù)據(jù)列之后,選擇)在為數(shù)據(jù)表添加數(shù)據(jù)列之后,選擇“SQL”選項卡,選項卡,用戶可以查看創(chuàng)建數(shù)據(jù)表的用戶可以查看創(chuàng)建數(shù)據(jù)表的DDL腳本腳本 。教教師師演演示示講講解解O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程4.3.2 使用SQL Developer修改表 修改表修改表 在在SQL Developer左邊欄的左邊欄的Tables項中右擊需要修改項中右擊需要修改的數(shù)據(jù)表

20、,從快捷菜單中選擇的數(shù)據(jù)表,從快捷菜單中選擇“Edit”,將打開,將打開“Edit Table”對話框,用戶可以完成對數(shù)據(jù)表的修改操作。修對話框,用戶可以完成對數(shù)據(jù)表的修改操作。修改完成后單擊改完成后單擊“確定確定”按鈕,保存修改結(jié)果按鈕,保存修改結(jié)果 。 教教師師演演示示講講解解 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程4.3.3 使用SQL Developer查看和刪除表查看表查看表 在在

21、SQL Developer的的Tables選項中單擊需要查看的表,選項中單擊需要查看的表,在右邊欄內(nèi)將出現(xiàn)該表的詳細(xì)情況,包括該表所屬的列、在右邊欄內(nèi)將出現(xiàn)該表的詳細(xì)情況,包括該表所屬的列、數(shù)據(jù)、約束、授權(quán)和主鍵等各種信息數(shù)據(jù)、約束、授權(quán)和主鍵等各種信息 。 教教師師演演示示講講解解 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程4.3.3 使用SQL Developer查看和刪除表 刪除表刪除表

22、(1)刪除數(shù)據(jù)表時,首先從)刪除數(shù)據(jù)表時,首先從Tables項中右擊需要刪除項中右擊需要刪除的數(shù)據(jù)表,然后從快捷菜單中依次選擇的數(shù)據(jù)表,然后從快捷菜單中依次選擇“Table”和和“Drop” 。 (2)在打開的的刪除對話框中,單擊)在打開的的刪除對話框中,單擊“應(yīng)用應(yīng)用”按鈕按鈕 。教教師師演演示示講講解解 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例4使用PL/SQL管理表 掌握Orac

23、le中應(yīng)用PL/SQL語句創(chuàng)建數(shù)據(jù)表、修改數(shù)據(jù)表、刪除數(shù)據(jù)表的方法。 案例學(xué)習(xí)目標(biāo)案例學(xué)習(xí)目標(biāo) CREATE TABLE語句、ALTER TABLE語句、DROP TABLE語句、PL/SQL的執(zhí)行。 案例知識要點案例知識要點 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例4使用PL/SQL管理表案例完成步驟案例完成步驟- -創(chuàng)建數(shù)據(jù)表創(chuàng)建數(shù)據(jù)表教教師師演演示示講講解解(1)編寫SQL腳本(2)運行創(chuàng)建CUSTOMER表的腳本 輸入到SQL Developer的“Enter SQL Statement”區(qū)域,單

24、擊圖標(biāo)或按F5鍵運行腳本,執(zhí)行PL/SQL語句 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例4使用PL/SQL管理表案例完成步驟案例完成步驟- -修改數(shù)據(jù)表修改數(shù)據(jù)表教教師師演演示示講講解解1添加列【例4-2】考慮到需要了解商品的生產(chǎn)廠商的信息,要在SCOTT用戶方案的GOODS 表中添加一個長度為 20 個字符,名稱為g_Producer,類型為varchar的新的一列。ALTER TA

25、BLE SCOTT.GOODS ADD g_Producer varchar(20)O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例4使用PL/SQL管理表案例完成步驟案例完成步驟- -修改數(shù)據(jù)表修改數(shù)據(jù)表教教師師演演示示講講解解2修改列【例4-3】考慮到出生日期的實際長度和數(shù)據(jù)操作的方便性,要將SCOTT用戶方案中的GOODS表中的g_ProduceDate數(shù)據(jù)類型改為char型,且寬度為10。 ALTER TABLE SCOTT.GOODS MODIFY g_ProduceDate char(10)O r a

26、 c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例4使用PL/SQL管理表案例完成步驟案例完成步驟- -修改數(shù)據(jù)表修改數(shù)據(jù)表教教師師演演示示講講解解3刪除列使用ALTER TABLE 語句刪除列時,可以使用 DROP COLUMN關(guān)鍵字。【例4-4】如果不考慮商品的生產(chǎn)廠商信息,要在SCOTT用戶方案中的GOODS表中刪除已有列g(shù)_Producer。 ALTER TABLE SCOTT.GOODS DROP COLUMN g_Producer使用ALTER TABLE SCOTT. GOODS CASCADE;可以刪除與指定

27、列相關(guān)聯(lián)的約束 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例4使用PL/SQL管理表案例完成步驟案例完成步驟- -查看刪除表查看刪除表教教師師演演示示講講解解1查看表【例4-5】使用DESCRIBE命令查看用戶方案SCOTT下的商品表USERS。DESCRIBE SCOTT.Users;2刪除表使用PL/SQL刪除表的基本語法格式為:DROP TABLE 用戶方案.;【例4-6】使用DROP TABLE命令刪除用戶方案為SCOTT下的商品表GOODS。DROP TABLE SCOTT. GOODS;【例4-7

28、】使用DROP TABLE命令刪除用戶方案SCOTT中的商品表GOODS,并刪除商品表的所有外鍵約束。DROP TABLE SCOTT. GOODSCASCADE CONSTRAINS;O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例5使用SQL Developer操作數(shù)據(jù)記錄 掌握在SQL Developer中操作數(shù)據(jù)記錄的方式 。案例學(xué)習(xí)目標(biāo)案例學(xué)習(xí)目標(biāo) 在SQL Developer中添加數(shù)據(jù)、在SQL Developer中修改數(shù)據(jù)、在SQL Developer中刪除數(shù)據(jù) 。 案例知識要點案例知識要點 O r

29、 a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例5使用SQL Developer操作數(shù)據(jù)記錄案例完成步驟案例完成步驟 教教師師演演示示講講解解O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例6使用PL/SQL操作數(shù)據(jù)記錄 學(xué)習(xí)使用PL/SQL語句插入記錄、修改記錄和刪除記錄的語句 。案例學(xué)習(xí)目標(biāo)案例學(xué)習(xí)目標(biāo) INSERT語句插入記錄、UPDATE語句修改記錄、DELETE語句刪除記錄 。 案例知識要點案例知識要點 O r a c l eO

30、 r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例6使用PL/SQL操作數(shù)據(jù)記錄案例完成步驟案例完成步驟 教教師師演演示示講講解解1插入數(shù)據(jù)記錄插入數(shù)據(jù)記錄在在PL/SQL中,使用中,使用INSERT INTO語句實現(xiàn)在表中語句實現(xiàn)在表中插入數(shù)據(jù)記錄的操作,其語法格式為:插入數(shù)據(jù)記錄的操作,其語法格式為:INSERT INTO 用戶方案用戶方案.(, )VALUES(, );(1)插入所有列)插入所有列 (2)插入指定列)插入指定列 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與

31、 應(yīng) 用 教 程O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例6使用PL/SQL操作數(shù)據(jù)記錄案例完成步驟案例完成步驟 教教師師演演示示講講解解2更新數(shù)據(jù)記錄在在PL/SQL中,使用中,使用UPDATE語句實現(xiàn)更新表中數(shù)語句實現(xiàn)更新表中數(shù)據(jù)記錄的操作,其語法格式為:據(jù)記錄的操作,其語法格式為:UPDATE 用戶方案用戶方案.SET = , = WHERE 條件表達(dá)式條件表達(dá)式 ;(1)修改單條記錄)修改單條記錄 (2)修改多條記錄)修改多條記錄 O r a c l eO r a c l e 數(shù) 據(jù) 庫 基 礎(chǔ) 與

32、 應(yīng) 用 教 程數(shù) 據(jù) 庫 基 礎(chǔ) 與 應(yīng) 用 教 程課堂案例6使用PL/SQL操作數(shù)據(jù)記錄案例完成步驟案例完成步驟 教教師師演演示示講講解解3刪除數(shù)據(jù)記錄刪除數(shù)據(jù)記錄在在PL/SQL中,使用中,使用DELETE FROM語句實現(xiàn)刪除語句實現(xiàn)刪除表中數(shù)據(jù)記錄的操作,其語法格式為:表中數(shù)據(jù)記錄的操作,其語法格式為:DELETE FROM 用戶方案用戶方案.WHERE 條件表達(dá)式條件表達(dá)式;(1)刪除指定記錄)刪除指定記錄 (2)刪除所有記錄)刪除所有記錄 PL/SQl 簡介簡介nPL/SQL 是過程語言是過程語言(Procedural Language)與結(jié)構(gòu)化與結(jié)構(gòu)化查詢語言查詢語言(SQL)

33、結(jié)合而成的編程語言結(jié)合而成的編程語言nPL/SQL 是對是對 SQL 的擴(kuò)展的擴(kuò)展n支持多種數(shù)據(jù)類型,如大對象和集合類型,可使用條件和支持多種數(shù)據(jù)類型,如大對象和集合類型,可使用條件和循環(huán)等控制結(jié)構(gòu)循環(huán)等控制結(jié)構(gòu)n可用于創(chuàng)建存儲過程、觸發(fā)器和程序包,給可用于創(chuàng)建存儲過程、觸發(fā)器和程序包,給SQL語句的執(zhí)語句的執(zhí)行添加程序邏輯行添加程序邏輯n與與 Oracle 服務(wù)器和服務(wù)器和 Oracle 工具緊密集成,具備可移植工具緊密集成,具備可移植性、靈活性和安全性性、靈活性和安全性n支持支持 SQL,在,在 PL/SQL 中可以使用:中可以使用:u數(shù)據(jù)操縱命令數(shù)據(jù)操縱命令u事務(wù)控制命令事務(wù)控制命令u游

34、標(biāo)控制游標(biāo)控制uSQL 函數(shù)和函數(shù)和 SQL 運算符運算符n支持面向?qū)ο缶幊讨С置嫦驅(qū)ο缶幊?(OOP) n可移植性,可運行在任何操作系統(tǒng)和平臺上的可移植性,可運行在任何操作系統(tǒng)和平臺上的Oralce 數(shù)據(jù)庫數(shù)據(jù)庫n更佳的性能,更佳的性能,PL/SQL 經(jīng)過編譯執(zhí)行經(jīng)過編譯執(zhí)行n安全性,可以通過存儲過程限制用戶對數(shù)據(jù)的訪問安全性,可以通過存儲過程限制用戶對數(shù)據(jù)的訪問用戶將整個語句塊發(fā)送給 OracleOracleProcedureBegin ProcedureCall SQL Command EndnPL/SQL 引擎駐留在引擎駐留在 Oracle 服務(wù)器中服務(wù)器中n該引擎接受該引擎接受 PL

35、/SQL 塊并對其進(jìn)行編譯執(zhí)行塊并對其進(jìn)行編譯執(zhí)行將PL/SQL 塊發(fā)送給 Oracle 服務(wù)器用戶用戶執(zhí)行過程語句引擎將 SQL 語句發(fā)送給SQL 語句執(zhí)行器Oracle 服務(wù)器PL/SQL引擎引擎SQL 語句執(zhí)行器過程語句過程語句執(zhí)行器執(zhí)行器執(zhí)行 SQL 語句將結(jié)果發(fā)送給用戶OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程使用PL/SQL編程 常量和變量常量和變量-常量常量l常量是指在程序運行期間其值不能改變的量。常量是指在程序運行期間其值不能改變的量。 【例例5-1】定義常量定義常量PI(3.14159)。)。-設(shè)置打開控制臺輸出SET SERVEROUTPUT

36、ON-聲明一個變量或常量DECLARE PI CONSTANT NUMBER(6,5) := 3.14159;BEGIN-輸出指定變量或常量的值 DBMS_OUTPUT.PUT_LINE(PI = | PI);END; 其中,PUT_LINE過程中使用的過程中使用的“|”用于連接輸出內(nèi)容的兩部分用于連接輸出內(nèi)容的兩部分 OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 常量和變量常量和變量-變量變量l變量是指由程序讀取或賦值的存儲單元,用于臨時存儲數(shù)據(jù),變量中變量是指由程序讀取或賦值的存儲單元,用于臨時存儲數(shù)據(jù),變量中的數(shù)據(jù)可以隨著程序的運

37、行而發(fā)生變化。每個變量都必須有一個特定的的數(shù)據(jù)可以隨著程序的運行而發(fā)生變化。每個變量都必須有一個特定的數(shù)據(jù)類型,可以是系統(tǒng)數(shù)據(jù)類型,也可以是自定義數(shù)據(jù)類型。數(shù)據(jù)類型,可以是系統(tǒng)數(shù)據(jù)類型,也可以是自定義數(shù)據(jù)類型。 【例例5-2】編寫計算圓面積的編寫計算圓面積的PL/SQL塊。塊。SET SERVEROUTPUT ONDECLARE PI CONSTANT NUMBER(6,5) := 3.14159;-聲明兩個變量并賦初值 v_radiu FLOAT := 2; v_area FLOAT;BEGIN v_area := PI * v_radiu * v_radiu; DBMS_OUTPUT.PU

38、T_LINE(Area = | v_area);END;OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 條件結(jié)構(gòu)條件結(jié)構(gòu)-IF-IF結(jié)構(gòu)結(jié)構(gòu)【例例5-3】使用簡單使用簡單IF結(jié)構(gòu)判斷一個整數(shù)的奇偶性。結(jié)構(gòu)判斷一個整數(shù)的奇偶性。SET SERVEROUTPUT ONDECLARE v_number INTEGER := 518;BEGIN IF MOD(v_number, 2)=0 THEN DBMS_OUTPUT.PUT_LINE(v_number | 是一個偶數(shù)); ELSE DBMS_OUTPUT.PUT_LINE(v_number

39、| 是一個奇數(shù)); END IF;END;OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 條件結(jié)構(gòu)條件結(jié)構(gòu)-IF-IF結(jié)構(gòu)結(jié)構(gòu)【例例5-4】使用復(fù)使用復(fù)雜雜IF結(jié)構(gòu)輸出結(jié)構(gòu)輸出3個個整數(shù)之中的最大者。整數(shù)之中的最大者。OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 條件結(jié)構(gòu)條件結(jié)構(gòu)-CASE-CASE結(jié)構(gòu)結(jié)構(gòu)【例例5-5】使用單一選擇使用單一選擇符進(jìn)行等值比較的符進(jìn)行等值比較的CASE結(jié)構(gòu)將百分制成績轉(zhuǎn)換為結(jié)構(gòu)將百分制成績轉(zhuǎn)換為5分制成績。分制成績。 OracleOracle數(shù)據(jù)庫管

40、理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 條件結(jié)構(gòu)條件結(jié)構(gòu)-CASE-CASE結(jié)構(gòu)結(jié)構(gòu)【例例5-6】使用多種條件使用多種條件進(jìn)行非等值比較的進(jìn)行非等值比較的CASE結(jié)構(gòu)將百分制成績轉(zhuǎn)換為結(jié)構(gòu)將百分制成績轉(zhuǎn)換為5分制成績分制成績 。 OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)-While-While循環(huán)循環(huán)【例例5-7】使用使用WHILE循環(huán)求循環(huán)求1到到100的所有正整數(shù)之和。的所有正整數(shù)之和。SET SERVEROUTPUT ONDECLARE i INTEGER:=1; s INTE

41、GER:=0; BEGIN WHILE i100; END LOOP; DBMS_OUTPUT.PUT_LINE(1+2+.+100= | s);END;表達(dá)式循環(huán)體FALSETRUEOracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)-For-For循環(huán)循環(huán)使用FOR循環(huán)不需要顯式聲明循環(huán)控制變量的類型,而由PL/SQL隱式提供。默認(rèn)情況下,循環(huán)控制變量從下限值開始,每次循環(huán)結(jié)束后自動增加1,直至超過上限值為止;若指定REVERSE參數(shù),則循環(huán)控制變量從上限值開始,每次循環(huán)結(jié)束后自動減1,直至低于下限值為止。 循環(huán)控制變量=

42、下限值循環(huán)控制變量=上限值循環(huán)體循環(huán)控制變量減1TRUEFALSE OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)-For-For循環(huán)循環(huán)【例5-9】使用不帶REVERSE參數(shù)的FOR循環(huán)求1到100的所有正整數(shù)之和?!纠?-10】使用帶REVERSE參數(shù)的FOR循環(huán)求1到100的所有正整數(shù)之和。OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)- -跳轉(zhuǎn)語句跳轉(zhuǎn)語句【例5-11】借助于GOTO跳轉(zhuǎn)語句輸出10以內(nèi)第一個能同時被2和3整除的正整數(shù)。SE

43、T SERVEROUTPUT ONDECLARE num INTEGER:=1; BEGIN WHILE num=10 LOOP IF MOD(num, 2)=0 AND MOD(num, 3)=0 THEN GOTO display; END IF; num := num + 1; END LOOP; DBMS_OUTPUT.PUT_LINE(num);END;OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 常用系統(tǒng)函數(shù)常用系統(tǒng)函數(shù)- -數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù)OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使

44、用PL/SQL編程 常用系統(tǒng)函數(shù)常用系統(tǒng)函數(shù)- -數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù)【例例5-12】測試常用數(shù)學(xué)函數(shù)的用法。測試常用數(shù)學(xué)函數(shù)的用法。SET SERVEROUTPUT ONBEGIN DBMS_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四舍五入到小數(shù)點后四舍五入到小數(shù)點后3位為位為 | ROUND(3.14159, 3); D

45、BMS_OUTPUT.PUT_LINE(e = | EXP(1); DBMS_OUTPUT.PUT_LINE(大于或等于大于或等于-32.5的最小整數(shù)為的最小整數(shù)為 | CEIL(-32.5); DBMS_OUTPUT.PUT_LINE(小于或等于小于或等于-32.5的最大整數(shù)為的最大整數(shù)為 | FLOOR(-32.5);END;OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 常用系統(tǒng)函數(shù)常用系統(tǒng)函數(shù)- -字符串函數(shù)字符串函數(shù)OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 常用系統(tǒng)函

46、數(shù)常用系統(tǒng)函數(shù)- -字符串函數(shù)字符串函數(shù)【例例5-13】測試常用字符串函數(shù)的用法。測試常用字符串函數(shù)的用法。SET SERVEROUTPUT ONBEGIN DBMS_OUTPUT.PUT_LINE(a的的ACSCII值為值為 | ASCII(a); DBMS_OUTPUT.PUT_LINE(ACSCII值值97對應(yīng)的字符為對應(yīng)的字符為 | CHR(97); DBMS_OUTPUT.PUT_LINE(字符串字符串Hunan Railway的長度的長度為為 | LENGTH(Hunan Railway); DBMS_OUTPUT.PUT_LINE(將字符串將字符串Hunan Railway全部全

47、部轉(zhuǎn)換為大寫形式為轉(zhuǎn)換為大寫形式為 | UPPER(Hunan Railway); DBMS_OUTPUT.PUT_LINE(將字符串將字符串Hunan Railway全部全部轉(zhuǎn)換為小寫形式為轉(zhuǎn)換為小寫形式為 | LOWER(Hunan Railway);END;OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 常用系統(tǒng)函數(shù)常用系統(tǒng)函數(shù)- -日期函數(shù)日期函數(shù)OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 常用系統(tǒng)函數(shù)常用系統(tǒng)函數(shù)- -日期函數(shù)日期函數(shù)【例例5-14】測試常用日期函數(shù)的用

48、法。測試常用日期函數(shù)的用法。SET SERVEROUTPUT ONBEGIN DBMS_OUTPUT.PUT_LINE(當(dāng)前日期時間為 | SYSDATE); DBMS_OUTPUT.PUT_LINE(當(dāng)前月份的最后一天的日期為 | LAST_DAY(SYSDATE); DBMS_OUTPUT.PUT_LINE(字符串對應(yīng)日期 | TO_DATE(2007-5-24,YYYY-MM-DD); DBMS_OUTPUT.PUT_LINE(兩個日期相差的月份 | MONTHS_BETWEEN(14-4月 -99,SYSDATE);END;OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)

49、用實例教程課堂案例1使用PL/SQL編程 常用系統(tǒng)函數(shù)常用系統(tǒng)函數(shù)- -轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù)OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 常用系統(tǒng)函數(shù)常用系統(tǒng)函數(shù)- -轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù)【例例5-15】測試常用轉(zhuǎn)換函數(shù)的用法。測試常用轉(zhuǎn)換函數(shù)的用法。SET SERVEROUTPUT ONBEGIN DBMS_OUTPUT.PUT_LINE(轉(zhuǎn)換為數(shù)據(jù)庫字符集的轉(zhuǎn)換為數(shù)據(jù)庫字符集的ASCII字符串為字符串為 | ASCIISTR(湖南鐵道湖南鐵道); DBMS_OUTPUT.PUT_LINE(將當(dāng)前日期轉(zhuǎn)換為字符串類型數(shù)據(jù)為將當(dāng)前日期轉(zhuǎn)換為字符

50、串類型數(shù)據(jù)為 | CAST(SYSDATE AS VARCHAR2); DBMS_OUTPUT.PUT_LINE(將字符串轉(zhuǎn)換為將字符串轉(zhuǎn)換為ROWID數(shù)據(jù)類型為數(shù)據(jù)類型為 | CHARTOROWID(AAAAFdl/#$); DBMS_OUTPUT.PUT_LINE(字符集轉(zhuǎn)換字符集轉(zhuǎn)換 | CONVERT(湖南鐵道湖南鐵道,US7ASCII,WE8ISO8859P1);END;OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 %TYPE%TYPE變量變量Oracle 9i以后的版本提供了以后的版本提供了%TYPE定義方法。這樣當(dāng)數(shù)據(jù)表的

51、字定義方法。這樣當(dāng)數(shù)據(jù)表的字段類型修改后,段類型修改后,PL/SQL程序中相應(yīng)變量的類型也自動修改。程序中相應(yīng)變量的類型也自動修改。【例例5-16】使用使用%TYPE獲取查詢的商品的基本信息。獲取查詢的商品的基本信息。SET SERVEROUTPUT ONDECLARE v_gId Goods.g_ID%TYPE; v_gName Goods.g_Name%TYPE; v_gPrice Goods.g_Price%TYPE; v_gNumber Goods.g_Number%TYPE;BEGIN SELECT g_ID,g_Name,g_Price,g_Number INTO v_gId,v_

52、gName, v_gPrice, v_gNumber FROM SCOTT.Goods WHERE g_ID=010003; dbms_output.put_line(v_gId | / | v_gName |/ | v_gPrice | /| v_gNumber );END; OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 %ROWTYPE%ROWTYPE變量變量與與%TYPE類型類似,也可以在不確定查詢列的類型的情況下,使類型類似,也可以在不確定查詢列的類型的情況下,使用用%ROWTYPE類型的變量存儲查詢的一行數(shù)據(jù)類型的變量存儲查詢

53、的一行數(shù)據(jù) ?!纠?-17】使用使用%ROWTYPE獲取查詢的商品基本信息。獲取查詢的商品基本信息。SET SERVEROUTPUT ONDECLARE v_GoodRecord Goods%ROWTYPE;BEGIN SELECT * INTO v_GoodRecord FROM SCOTT.Goods WHERE g_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

54、);dbms_output.put_line(v_GoodRecord.g_Number );END;OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 異常處理異常處理為了提高應(yīng)用程序的健壯性,開發(fā)人員必須考慮程序可能出現(xiàn)的為了提高應(yīng)用程序的健壯性,開發(fā)人員必須考慮程序可能出現(xiàn)的各種錯誤,并進(jìn)行相應(yīng)的處理。在各種錯誤,并進(jìn)行相應(yīng)的處理。在Oracle中,為了處理中,為了處理PL/SQL應(yīng)用應(yīng)用程序的各種錯誤,程序的各種錯誤,Oracle提供了提供了三種類型三種類型的異常。的異常。(1)預(yù)定義異常:用于處理常見的)預(yù)定義異常:用于處理常見的O

55、racle錯誤錯誤(2)非預(yù)定義異常:用于處理預(yù)定義異常所不能處理的)非預(yù)定義異常:用于處理預(yù)定義異常所不能處理的Oracle錯錯誤誤(3)自定義異常:用于處理于)自定義異常:用于處理于Oracle錯誤無關(guān)的其他情況錯誤無關(guān)的其他情況OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 異常處理異常處理系統(tǒng)預(yù)定義異常系統(tǒng)預(yù)定義異常OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 異常處理異常處理系統(tǒng)預(yù)定義異常系統(tǒng)預(yù)定義異?!纠?-18】對對Goods表中的插入的重復(fù)商品號進(jìn)行異常處理(使表

56、中的插入的重復(fù)商品號進(jìn)行異常處理(使用預(yù)定義異常)。用預(yù)定義異常)。SET SERVEROUTPUT ONBEGIN INSERT INTO SCOTT.Goods VALUES(010001,諾基亞6700 Slide,01,1500,0.9,20,to_date(2009-06-01,yyyy-mm-dd),pImage/010001.gif,熱點,彩屏,1600萬色,TFT,240320像素,2.2英寸);EXCEPTIONWHEN DUP_VAL_ON_INDEX THENdbms_output.put_line(捕獲到DUP_VAL_ON_INDEX異常);dbms_output.p

57、ut_line(重復(fù)的商品編號);END;OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 異常處理異常處理非預(yù)定義異常非預(yù)定義異常使用非預(yù)定義異常需要包括以下三個步驟:使用非預(yù)定義異常需要包括以下三個步驟:(1)在定義部分定義異常名;)在定義部分定義異常名;(2)在異常和)在異常和Oracle錯誤之間建立關(guān)聯(lián)(需要使用偽過程錯誤之間建立關(guān)聯(lián)(需要使用偽過程EXCEPTION_INIT););(3)在異常處理部分捕捉并處理異常。)在異常處理部分捕捉并處理異常。【例例5-19】刪除商品類別表,并處理刪除商品類別表,并處理ORA-2292錯誤(

58、使用非預(yù)定義異錯誤(使用非預(yù)定義異常)。常)。SET SERVEROUTPUT ONDECLARE e_FK EXCEPTION;-1、定義部分 PRAGMA EXCEPTION_INIT(e_FK,-2292); -2、建立關(guān)聯(lián)關(guān)系BEGIN DELETE SCOTT.TypesWHERE t_Name=通信商品;EXCEPTION WHEN e_FK THEN -3、捕捉處理 DBMS_OUTPUT.PUT_LINE(該類別已被使用);END;OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程課堂案例1使用PL/SQL編程 異常處理異常處理自定義異常自定義異常使用自定

59、義異常時,需要包括以下三個步驟:使用自定義異常時,需要包括以下三個步驟:(1)需要在定義部分()需要在定義部分(DECLARE)定義異常;)定義異常;(2)再執(zhí)行部分()再執(zhí)行部分(BEGIN)觸發(fā)異常(使用)觸發(fā)異常(使用RAISE語句);語句);(3)在異常處理部分()在異常處理部分(EXCEPTION)捕捉并處理異常。)捕捉并處理異常。 OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程OracleOracle數(shù)據(jù)庫管理與應(yīng)用實例教程數(shù)據(jù)庫管理與應(yīng)用實例教程7.2 存儲過程概述 視圖特點視圖特點在在Oracle中,可以在數(shù)據(jù)庫中定義子程序,在子程序中將一些固定的操中

60、,可以在數(shù)據(jù)庫中定義子程序,在子程序中將一些固定的操作集中起來,由作集中起來,由Oracle數(shù)據(jù)庫服務(wù)器完成,以完成某個特定的功能。這數(shù)據(jù)庫服務(wù)器完成,以完成某個特定的功能。這種子程序稱為存儲過程(種子程序稱為存儲過程(Proce-Dure)。使用存儲過程具有如下的優(yōu)點:)。使用存儲過程具有如下的優(yōu)點:(1)存儲過程在服務(wù)器端運行,)存儲過程在服務(wù)器端運行,執(zhí)行速度快執(zhí)行速度快;(2)存儲過程執(zhí)行一次后駐留在)存儲過程執(zhí)行一次后駐留在Oracle數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)庫服務(wù)器的高速高速Cache中,中,以后再次執(zhí)行存儲過程時,只需從高速以后再次執(zhí)行存儲過程時,只需從高速Cache中調(diào)用已經(jīng)編譯好的

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論