Oracle入門到精通(明日科技)配套PPT_第1頁
Oracle入門到精通(明日科技)配套PPT_第2頁
Oracle入門到精通(明日科技)配套PPT_第3頁
Oracle入門到精通(明日科技)配套PPT_第4頁
Oracle入門到精通(明日科技)配套PPT_第5頁
已閱讀5頁,還剩340頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Oracle從入門到精通明日科技 Oracle,西方人認為有“神諭、預言”之意,中國人則譯作“甲骨文”,是當今世界最強大的數(shù)據(jù)庫軟件。所有這一切要從IBM的一篇論文談起,1970年的6月,IBM公司的研究員埃德加考特發(fā)表了一篇著名的論文大型共享數(shù)據(jù)庫數(shù)據(jù)的關(guān)系模型,這可以稱之為數(shù)據(jù)庫發(fā)展史上的一個轉(zhuǎn)折點。在當時還是層次模型和網(wǎng)狀模型的數(shù)據(jù)庫產(chǎn)品占據(jù)市場主要位置的情況下,從這篇論文開始,拉開了關(guān)系型數(shù)據(jù)庫軟件革命的序幕。 1977年6月,Larry Ellison與Bob Miner和Ed Oates在硅谷共同創(chuàng)辦了一家名為“軟件開發(fā)實驗室”的軟件公司(Oracle公司的前身,英文縮寫SDL)。

2、在Oates看到了埃德加考特的那篇著名的論文連同其他幾篇相關(guān)的文章之后,非常興奮,他找來Ellison和Miner共同閱讀,Ellison和Miner也預見到關(guān)系型數(shù)據(jù)庫軟件的巨大潛力。于是,這3個數(shù)據(jù)庫界的巨人開始共同籌劃構(gòu)建可商用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(英文縮寫RDBMS),并把這種商用數(shù)據(jù)庫產(chǎn)品命名為Oracle。因為他們相信,Oracle(字典里的解釋有“神諭、預言”之意)是一切智慧的源泉,這樣當今世界最強大、最優(yōu)秀的Oracle數(shù)據(jù)庫誕生了。簡述簡述Oracle的發(fā)展史的發(fā)展史關(guān)系型數(shù)據(jù)庫的基本理論本講大綱:1、關(guān)系型數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)3、關(guān)系型數(shù)據(jù)庫的設(shè)計范式2 2、關(guān)關(guān)系型系

3、型數(shù)數(shù)據(jù)據(jù)庫庫的的E-RE-R模型模型關(guān)系型數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng) 在關(guān)系數(shù)據(jù)模型中,關(guān)系可以看成由行和列交叉組成的二維表格,表中一行稱為一個元組,可以用來標識實體集中的一個實體。表中的列稱為屬性,給每一列起一個名稱即為屬性名,表中的屬性名不能相同。列的取值范圍稱為域,同列具有相同的域,不同的列也可以有相同的域。表中任意兩行(元組)不能相同。能唯一標識表中不同行的屬性或?qū)傩越M(即多個屬性的組合)稱為主鍵或復合主鍵。1實體和屬性 實體是一個數(shù)據(jù)對象,是指客觀存在并可以相互區(qū)分的事物,如一個教師、一個學生、一個雇員等等。每個實體由一組屬性來表示,如,一個具體的學生擁有學號、姓名、性別和班級等屬性,

4、其中學號可以唯一標識具體某個學生這個實體。具有相同屬性的實體組合在一起就構(gòu)成實體集即實體集是實體的集合,而實體則是實體集中的某一個特例,例如,王同學這個實體就是學生實體集中的一個特例。2聯(lián)系 在實際應用中,實體之間是存在聯(lián)系的,這種聯(lián)系必須在邏輯模型中表現(xiàn)出來。在E-R模型中,聯(lián)系用菱形表示,菱形框內(nèi)寫明“聯(lián)系名”,并用“連接線”將有關(guān)實體連接起來,同時在“連接線”的旁邊標注上聯(lián)系的類型,兩個實體之間的聯(lián)系類型可以分為3類。關(guān)系型數(shù)據(jù)庫的E-R模型1增強信息生命周期管理和存儲管理能力 2全面回憶數(shù)據(jù)變化3最大限度提高信息可用性4Oracle快速文件 5更快的XML6透明的加密 7嵌入式OLAP

5、行列8連接匯合和查詢結(jié)果高速緩存9增強了應用開發(fā)能力 Oracle 11g的新功能的新功能Oracle 11g的安裝與卸載本講大綱:1、Oracle 11g的安裝2 2、Oracle 11gOracle 11g的卸的卸載載Oracle 11g的管理工具本講大綱:1、SQL*Plus工具2 2、OracleOracle企企業(yè)業(yè)管理器管理器3 3、數(shù)數(shù)據(jù)據(jù)庫庫配置助手配置助手SQL*Plus工具 選擇“開始”/“所有程序”/“Oracle-OraDb11g_home1”/“應用程序開發(fā)”/“SQL*Plus”命令,打開的命令窗口如下圖所示。Oracle企業(yè)管理器 Oracle Enterprise

6、 Manager(OEM)是基于WEB界面的Oracle數(shù)據(jù)庫管理工具。啟動Oracle 11g的OEM只需在瀏覽器中輸入其URL地址通常為https:/localhost:1518/em,然后連接主頁即可;也可以在“開始”菜單的“Oracle程序組”中選擇“Database Control - orcl”菜單命令來啟動Oracle 11g的OEM工具。數(shù)據(jù)庫配置助手 在 開 始 菜 單 中 選 擇 “ 所 有 程 序 ” / “ O r a c l e - OraDb11g_home1”/“配置和移植工具”/“Database Configuration Assistant”菜單命令,就會打

7、開如圖所示的窗口。啟動與關(guān)閉數(shù)據(jù)庫實例本講大綱:1、啟動數(shù)據(jù)庫實例2 2、關(guān)閉數(shù)關(guān)閉數(shù)據(jù)據(jù)庫實庫實例例啟動數(shù)據(jù)庫實例 Oracle數(shù)據(jù)庫實例的啟動過程分為3步驟,分別是啟動實例、加載數(shù)據(jù)庫、打開數(shù)據(jù)庫。用戶可以根據(jù)實際情況的需要,以不同的模式啟動數(shù)據(jù)庫,啟動數(shù)據(jù)庫所使用的命令格式如下。 STARTUP nomount | mount | open | force resetrict pfile=filename關(guān)閉數(shù)據(jù)庫實例 與啟動數(shù)據(jù)庫實例相同,關(guān)閉數(shù)據(jù)庫實例也分為3個步驟,分別是關(guān)閉數(shù)據(jù)庫、卸載數(shù)據(jù)庫、關(guān)閉Oracle實例。在SQL*Plus中,可以使用shutdown語句關(guān)閉數(shù)據(jù)庫,其具

8、體語法格式如下: SHUTDOWN normal | transactional | immediate | abort 在Oracle數(shù)據(jù)庫管理系統(tǒng)中有3個重要 的 概 念 需 要 理 解 , 那 就 是 實 例(Instance)、數(shù)據(jù)庫(Database)和數(shù)據(jù)庫服務器(Database Server)。其中,實例是指一組Oracle后臺進程以及在服務器中分配的共享內(nèi)存區(qū)域;數(shù)據(jù)庫是由基于磁盤的數(shù)據(jù)文件、控制文件、日志文件、參數(shù)文件和歸檔日志文件等組成的物理文件集合;數(shù)據(jù)庫服務器是指管理數(shù)據(jù)庫的各種軟件工具(比如,sqlplus、OEM等)和實例及數(shù)據(jù)庫三個部分。從實例與數(shù)據(jù)庫之間的辯證

9、關(guān)系來講,實例用于管理和控制數(shù)據(jù)庫;而數(shù)據(jù)庫為實例提供數(shù)據(jù)。一個數(shù)據(jù)庫可以被多個實例裝載和打開;而一個實例在其生存期內(nèi)只能裝載和打開一個數(shù)據(jù)庫。ORACLE 11g體系結(jié)構(gòu)概述體系結(jié)構(gòu)概述邏輯存儲結(jié)構(gòu)本講大綱:1、數(shù)據(jù)塊(Data Blocks)3、段(Segment)2 2、數(shù)數(shù)據(jù)據(jù)區(qū)區(qū)(ExtentExtent)4、表空間(TableSpace)數(shù)據(jù)塊(Data Blocks) 數(shù)據(jù)塊是Oracle邏輯存儲結(jié)構(gòu)中的最小的邏輯單位,也是執(zhí)行數(shù)據(jù)庫輸入輸出操作的最小存儲單位。Oracle數(shù)據(jù)存放在“Oracle數(shù)據(jù)塊”中,而不是“操作系統(tǒng)塊”中。通常Oracle數(shù)據(jù)塊是操作系統(tǒng)塊的整數(shù)倍,如果

10、操作系統(tǒng)快的大小為2048B,并且Oracle數(shù)據(jù)塊的大小為8192B,則表示Oracle數(shù)據(jù)塊由4個操作系統(tǒng)塊構(gòu)成。Oracle數(shù)據(jù)塊有一定的標準大小,其大小被寫入到初始化參數(shù)DB_BlOCK_SIZE中。另外,Oracle支持在同一個數(shù)據(jù)庫中使用多種大小的快,與標準塊大小不同的塊就是非標準塊。 數(shù)據(jù)區(qū)(也可稱作數(shù)據(jù)擴展區(qū))是由一組連續(xù)的Oracle數(shù)據(jù)塊所構(gòu)成的Oracle存儲結(jié)構(gòu),一個或多個數(shù)據(jù)塊組成一個數(shù)據(jù)區(qū),一個或多個數(shù)據(jù)區(qū)再組成一個段(Segment)。當一個段中的所有空間被使用完后,Oracle系統(tǒng)將自動為該段分配一個新的數(shù)據(jù)區(qū),這也正符合Extent這個單詞所具有的“擴展”的含

11、義,可見數(shù)據(jù)區(qū)是Oracle存儲分配的最小單位,Oracle就以數(shù)據(jù)區(qū)為單位進行存儲控件的擴展。 使用數(shù)據(jù)區(qū)的目的是用來保存特定數(shù)據(jù)類型的數(shù)據(jù),也是表中數(shù)據(jù)增長的基本單位。在Oracle數(shù)據(jù)庫中,分配存儲空間就是以數(shù)據(jù)區(qū)為單位的。一個Oracle對象包含至少一個數(shù)據(jù)區(qū)。設(shè)置一個表或索引的存儲參數(shù)包含設(shè)置它的數(shù)據(jù)區(qū)大小。 數(shù)據(jù)區(qū)(Extent)段(Segment) 數(shù)據(jù)區(qū)(也可稱作數(shù)據(jù)擴展區(qū))是由一組連續(xù)的Oracle數(shù)據(jù)塊所構(gòu)成的Oracle存儲結(jié)構(gòu),一個或多個數(shù)據(jù)塊組成一個數(shù)據(jù)區(qū),一個或多個數(shù)據(jù)區(qū)再組成一個段(Segment)。當一個段中的所有空間被使用完后,Oracle系統(tǒng)將自動為該段分配

12、一個新的數(shù)據(jù)區(qū),這也正符合Extent這個單詞所具有的“擴展”的含義,可見數(shù)據(jù)區(qū)是Oracle存儲分配的最小單位,Oracle就以數(shù)據(jù)區(qū)為單位進行存儲控件的擴展。 使用數(shù)據(jù)區(qū)的目的是用來保存特定數(shù)據(jù)類型的數(shù)據(jù),也是表中數(shù)據(jù)增長的基本單位。在Oracle數(shù)據(jù)庫中,分配存儲空間就是以數(shù)據(jù)區(qū)為單位的。一個Oracle對象包含至少一個數(shù)據(jù)區(qū)。設(shè)置一個表或索引的存儲參數(shù)包含設(shè)置它的數(shù)據(jù)區(qū)大小。表空間(TableSpace) Oracle使用表空間將相關(guān)的邏輯結(jié)構(gòu)(比如段、數(shù)據(jù)區(qū)等)組合在一起,表空間是數(shù)據(jù)庫的最大邏輯劃分區(qū)域,通常用來存放數(shù)據(jù)表、索引、回滾段等數(shù)據(jù)對象(即Segment),任何數(shù)據(jù)對象在

13、創(chuàng)建時都必須被指定存儲在某個表空間中。表空間(屬邏輯存儲結(jié)構(gòu))與數(shù)據(jù)文件(屬物理存儲結(jié)構(gòu))相對應,一個表空間由一個或多個數(shù)據(jù)文件組成,一個數(shù)據(jù)文件只屬于一個表空間;Oracle數(shù)據(jù)的存儲空間在邏輯上表現(xiàn)為表空間,而在物理上表現(xiàn)為數(shù)據(jù)文件。舉個例子來說,表空間相當于操作系統(tǒng)中的文件夾,而數(shù)據(jù)文件就相當于文件夾中的文件。每個數(shù)據(jù)庫至少有一個表空間(即SYSTEM表空間),表空間的大小等于所有從屬于它的數(shù)據(jù)文件大小的總和。物理存儲結(jié)構(gòu)本講大綱:1、數(shù)據(jù)文件3、日志文件4、 服務器參數(shù)文件5、密碼文件、警告文件和跟蹤文件2 2、控制文件控制文件數(shù)據(jù)文件 數(shù)據(jù)文件是用于保存用戶應用程序數(shù)據(jù)和Oracle

14、系統(tǒng)內(nèi)部數(shù)據(jù)的文件,這些文件在操作系統(tǒng)中就是普通的操作系統(tǒng)文件,Oracle在創(chuàng)建表空間的同時會創(chuàng)建數(shù)據(jù)文件。Oracle數(shù)據(jù)庫在邏輯上由表空間組成,每個表空間可以包含一個或多個數(shù)據(jù)文件,一個數(shù)據(jù)文件只能隸屬于一個表空間。 控制文件是一個二進制文件,它記錄了數(shù)據(jù)庫的物理結(jié)構(gòu),其中主要包含數(shù)據(jù)庫名、數(shù)據(jù)文件與日志文件的名字和位置、數(shù)據(jù)庫建立日期等信息??刂莆募话阍贠racle系統(tǒng)安裝時或創(chuàng)建數(shù)據(jù)庫時自動創(chuàng)建,控制文件所存放的路徑由服務器參數(shù)文件spfileorcl.ora的control_files參數(shù)值來指定。 由于控制文件存放有數(shù)據(jù)文件、日志文件等的相關(guān)信息,因此,Oracle實例在啟動時

15、必須訪問控制文件。如果控制文件正常,實例才能加載并打開數(shù)據(jù)庫;但若控制文件中記錄了錯誤的信息,或者實例無法找到一個可用的控制文件,則實例無法正常啟動??刂莆募刂莆募?日志文件的主要功能是記錄對數(shù)據(jù)所作的修改,對數(shù)據(jù)庫所作的修改幾乎都記錄在日志文件中。在出現(xiàn)問題時,可以通過日志文件得到原始數(shù)據(jù),從而保障不丟失已有操作成果。Oracle的日志文件包括重做日志文件(Redo Log File)和歸檔日志文件(Archive Log File),它們是Oracle系統(tǒng)的主要文件之一,尤其是重做日志文件,它是Oracle數(shù)據(jù)庫系統(tǒng)正常運行所不可或缺的。下面將介紹這兩種日志文件。日志文件服務器參數(shù)文件

16、服務器參數(shù)文件SPFILE(Server parameter File)是二進制文件,用來記錄了Oracle數(shù)據(jù)庫的基本參數(shù)信息(如,數(shù)據(jù)庫名、控制文件所在路徑、日志緩沖大小等)。數(shù)據(jù)庫實例在啟動之前,Oracle系統(tǒng)首先會讀取SPFILE參數(shù)文件中設(shè)置的這些參數(shù),并根據(jù)這些初始化參數(shù)來配置和啟動實例。比如,設(shè)置標準數(shù)據(jù)塊的大?。磪?shù)db_block_size的值)、設(shè)置日志緩沖區(qū)的大小(即參數(shù)log_buffer的值)等等,所以SPFILE參數(shù)文件非常重要。服務器參數(shù)文件在安裝Oracle數(shù)據(jù)庫系統(tǒng)時由系統(tǒng)自動創(chuàng)建,文件的名稱為SPFILEsid.ora,sid為所創(chuàng)建的數(shù)據(jù)庫實例名。 與

17、早期版本的初始化參數(shù)文件INITsid.ora不同的是,SPFILE中的參數(shù)由Oracle系統(tǒng)自動維護,如果要對某些參數(shù)進行修改,則盡可能不要直接對SPFILE進行編輯,最好通過企業(yè)管理器(OEM)或ALTER SYSTEM命令來修改,所修改過的參數(shù)會自動寫到SPFILE中。 Oracle系統(tǒng)運行時,除了必須的數(shù)據(jù)文件、控制文件、日志文件及服務器參數(shù)文件外,還需要一些輔助文件,如,密碼文件、警告文件和跟蹤文件,下面將對這些輔助文件進行簡單的介紹。密碼文件、警告文件和跟蹤文件Oracle 11g服務器結(jié)構(gòu)本講大綱:1、系統(tǒng)全局區(qū)(SGA)2、程序全局區(qū)(PGA)3、前臺進程4、后臺進程系統(tǒng)全局區(qū)

18、(SGA) 系統(tǒng)全局區(qū)(System Global Area)是所有用戶進程共享的一塊內(nèi)存區(qū)域,也就是說,SGA中的數(shù)據(jù)資源可以被多個用戶進程共同使用。SGA主要由高速數(shù)據(jù)緩沖區(qū)、共享池、重做日志緩存區(qū)、java池和大型池等內(nèi)存結(jié)構(gòu)組成。SGA隨著數(shù)據(jù)庫實例的啟動而加載到內(nèi)存中,當數(shù)據(jù)庫實例關(guān)閉時,SGA區(qū)域也就消失了。程序全局區(qū)(PGA) 程序全局區(qū)(Program Global Area)也可稱作用戶進程全局區(qū),它的內(nèi)存區(qū)在進程私有區(qū)而不是共享區(qū)中。雖然PGA是一個全局區(qū),可以把代碼、全局變量和數(shù)據(jù)結(jié)構(gòu)都可以存放在其中,但區(qū)域內(nèi)的資源并不像SGA一樣被所有的用戶進程所共享,而是每個Orac

19、le服務器進程都只擁有屬于自己的那部分PGA資源。 在程序全局區(qū)(PGA)中,一個服務進程只能訪問屬于它自己的那部分PGA資源區(qū),各個服務進程的PGA區(qū)的總和即為實例的PGA區(qū)的大小。通常PGA區(qū)由私有SQL區(qū)和會話區(qū)組成。前臺進程1用戶進程 用戶進程是指那些能夠產(chǎn)生或執(zhí)行SQL語句的應用程序,無論是SQL*Plus,還是其它應用程序,只要是能生成或執(zhí)行SQL語句,都被稱作用戶進程。2服務器進程 服務進程就是用于處理用戶會話過程中向數(shù)據(jù)庫實例發(fā)出的SQL語句或SQL*Plus命令,它可以分為專用服務器模式和共享服務器模式。后臺進程 Oracle后臺進程是一組運行于Oracle服務器端的后臺程序

20、,是Oracle實例的重要組成部分。進程包括DBWR、CKPT、LGWR、ARCH、SMON、PMON、LCKN、RECO、DNNN、SNPN。其中SMON、PMON、DBWR、LGWR和CKPT這5個后臺進程必須正常啟動,否則將導致數(shù)據(jù)庫實例崩潰。此外,還有很多輔助進程,用于實現(xiàn)相關(guān)的輔助功能,如果這些輔助進程發(fā)生問題,只是某些功能受到影響,一般不會導致數(shù)據(jù)庫實例崩潰。數(shù)據(jù)字典本講大綱:1、Oracle數(shù)據(jù)字典簡介2 2、OracleOracle常用數(shù)據(jù)字典常用數(shù)據(jù)字典Oracle數(shù)據(jù)字典簡介 Oracle數(shù)據(jù)字典的名稱由前綴和后綴組成,使用下劃線“_”連接,其代表的含義如下:(1)DBA_

21、:包含數(shù)據(jù)庫實例的所有對象信息。 (2) V$_:當前實例的動態(tài)視圖,包含系統(tǒng)管理和系統(tǒng)優(yōu)化等所使用的視圖。 (3) USER_:記錄用戶的對象信息。 (4) GV_:分布式環(huán)境下所有實例的動態(tài)視圖,包含系統(tǒng)管理和系統(tǒng)優(yōu)化使用的視圖。 (5) ALL_:記錄用戶的對象信息機被授權(quán)訪問的對象信息。Oracle常用數(shù)據(jù)字典數(shù)據(jù)字典名稱數(shù)據(jù)字典名稱說說 明明dba_tablespaces關(guān)于表空間的信息關(guān)于表空間的信息dba_ts_quotas所有用戶表空間限額所有用戶表空間限額dba_free_space所有表空間中的自由分區(qū)所有表空間中的自由分區(qū)dba_segments描述數(shù)據(jù)庫中所有段的存儲空

22、間描述數(shù)據(jù)庫中所有段的存儲空間dba_extents數(shù)據(jù)庫中所有分區(qū)的信息數(shù)據(jù)庫中所有分區(qū)的信息dba_tables數(shù)據(jù)庫中所有數(shù)據(jù)表的描述數(shù)據(jù)庫中所有數(shù)據(jù)表的描述數(shù)據(jù)字典名稱數(shù)據(jù)字典名稱說說 明明v$database描述關(guān)于數(shù)據(jù)庫的相關(guān)信息描述關(guān)于數(shù)據(jù)庫的相關(guān)信息v$datafile數(shù)據(jù)庫使用的數(shù)據(jù)文件信息數(shù)據(jù)庫使用的數(shù)據(jù)文件信息v$log從控制文件中提取有關(guān)重做日志組的信息從控制文件中提取有關(guān)重做日志組的信息v$logfile有關(guān)實例重置日志組文件名及其位置的信息有關(guān)實例重置日志組文件名及其位置的信息 SQL*Plus工具主要用來進行數(shù)據(jù)查詢和數(shù)據(jù)處理。利用SQL*Plus可將SQL和Or

23、acle專有的PL/SQL結(jié)合起來進行數(shù)據(jù)查詢和處理。SQL*Plus工具具備以下功能:(1)定義變量,編寫SQL語句。(2)插入、修改、刪除、查詢,以及執(zhí)行命令和PL/SQL語句。比如,執(zhí)行show parameter命令。(3)格式化查詢結(jié)構(gòu)、運算處理、保存、打印機輸出等。(4)顯示任何一個表的字段定義,并實現(xiàn)與用戶進行交互。(5)完成數(shù)據(jù)庫的幾乎所有管理工作。比如,維護表空間和數(shù)據(jù)表。(6)運行存儲在數(shù)據(jù)庫中的子程序或包。(7)以sysdba身份登錄數(shù)據(jù)庫實例,可以實現(xiàn)啟動/停止數(shù)據(jù)庫實例。SQL*Plus與數(shù)據(jù)庫的交互與數(shù)據(jù)庫的交互設(shè)置SQL*Plus的運行環(huán)境本講大綱:1、簡介SET

24、命令2 2、使用使用SETSET命令設(shè)置運行環(huán)境命令設(shè)置運行環(huán)境簡介SET命令 在Oracle 11g數(shù)據(jù)庫中,用戶可以使用SET命令來設(shè)置SQL*Plus的運行環(huán)境,SET命令的語法格式為: SET system_variable value 參數(shù)system_variable表示變量名,參數(shù)value表示變量值。1PAGESIZE變量2NEWPAGE變量3LINESIZE變量4PAUSE變量5NUMFORMAT變量使用SET命令設(shè)置運行環(huán)境常用SQL*Plus命令本講大綱:1、HELP命令3、SPOOL命令 4、 其它常用命令2 2、DESCRIBEDESCRIBE命令命令HELP命令 H

25、ELP命令的語法形式如下。 HELP|? topic DESCRIBE命令的語法形式如下: describe object_name; describe可以縮寫為desc,object_name表示將要查詢的對象名稱。DESCRIBE命令命令 SPOOL命令的語法格式如下: SPOOL file_name.ext CREATE | REPLACE | APPEND | OFF | OUT 參數(shù)file_name用于指定脫機文件的名稱,默認的文件擴展名為LST。SPOOL命令其它常用命令1DEFINE命令2SHOW命令3EDIT命令4SAVE命令5GET命令6start和命令格式化查詢結(jié)果本講大

26、綱:1、COLUMN命令2 2、TTITLETTITLE和和BTITLEBTITLE命令命令COLUMN命令 該命令可以實現(xiàn)格式化查詢結(jié)果、設(shè)置列寬度、重新設(shè)置列標題等功能。其語法格式如下:COLUMN column_name | alias | optioncolumn_name:用于指定要設(shè)置的列的名稱。alias:用于指定列的別名,通過它可以把英文列標題設(shè)置為漢字。option:用于指定某個列的顯示格式,TTITLE和BTITLE命令 TTITLE命令的語法格式如下: TTITLE printspec text|variable . | OFF|ON text:用于設(shè)置輸出結(jié)果的頭標題(

27、即報表頭文字)。 variable:用于在頭標題中輸出相應的變量值。 OFF:表示禁止打印頭標題。 ON:表示允許打印頭標題。SQL語言簡介本講大綱:1、SQL語言的特點3、SQL語言的編寫規(guī)則2 2、SQLSQL語言的分類語言的分類SQL語言的特點 SQL語言主要有以下特點。(1)集合性SQL可以在高層的數(shù)據(jù)結(jié)構(gòu)上進行工作,工作時不是單條的處理記錄,而對數(shù)據(jù)進程成組的處理。所有SQL語句都接受集合作為輸入,并且返回集合作為輸出,SQL的集合特性允許一條SQL語句的結(jié)果作為另一條SQL語句的輸入。(2)統(tǒng)一性SQL為許多任務提供了統(tǒng)一的命令,這樣方便用戶學習和使用,基本的SQL命令只需很少時間

28、就能學會,甚至最高級的命令也可以在幾天內(nèi)掌握。(3)易于移植性由于所有主要的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)都支持SQL語言,這樣用戶就比較容易將原先使用SQL的技能從一個RDBMS轉(zhuǎn)到另一個,而且用兼容SQL標準編寫的程序都是可以移植的。(1)數(shù)據(jù)查詢語言(DQL)(2)數(shù)據(jù)操縱語言(DML)(3)事務控制語言(TCL)(4)數(shù)據(jù)定義語言(DDL)(5)數(shù)據(jù)控制語言(DCL) SQL語言的分類SQL語言的編寫規(guī)則 SQL關(guān)鍵字不區(qū)分大小寫,既可以使用大寫格式,也可以使用小寫格式,或者大小寫格式混用。用戶模式本講大綱:1、模式與模式對象2 2、示例模式、示例模式SCOTTSCOTT模式與模式對象 模式是一

29、個數(shù)據(jù)庫對象的集合。模式為一個數(shù)據(jù)庫用戶所有,并且具有與該用戶相同的名稱,比如,SYSTEM模式、SCOTT模式等。在一個模式內(nèi)部不可以直接訪問其它模式的數(shù)據(jù)庫對象,即使在具有訪問權(quán)限的情況下,也需要指定模式名稱才可以訪問其它模式的數(shù)據(jù)庫對象。 模式對象是由用戶創(chuàng)建的邏輯結(jié)構(gòu),用以存儲或引用數(shù)據(jù)。例如,前面章節(jié)中所講過的段(比如,表、索引等),以及用戶所擁有的其它非段的的數(shù)據(jù)庫對象。這些非段的數(shù)據(jù)庫對象通常包括:約束、視圖、同義詞、過程以及程序包等。那么,簡單的說,模式與模式對象之間的關(guān)系就是擁有與被擁有的關(guān)系,即模式擁有模式對象;而模式對象被模式所擁有。 Oracle提供的SCOTT模式的目

30、的,就是為了給用戶提供一些示例表和數(shù)據(jù)來展示Oracle數(shù)據(jù)庫的一些特性。SCOTT模式擁有的模式對象(都是數(shù)據(jù)表)如圖所示。示例模式SCOTT檢索數(shù)據(jù)本講大綱:1、簡單查詢3、分組查詢 4、排序查詢 5、多表關(guān)聯(lián)查詢 2 2、篩選查詢、篩選查詢 簡單查詢 只包含SELECT子句和FROM子句的查詢就是簡單查詢,SELECT子句和FROM子句是SELECT語句的必選項,也就是說每個SELECT語句都必須包含這兩個子句。其中,SELECT子句用于選擇想要在查詢結(jié)果中顯示的列,對于這些要顯示的列,即可以使用列名來表示,也可以使用星號(*)來表示。在檢索數(shù)據(jù)時,數(shù)據(jù)將按照SELECT子句后面指定的列

31、名的順序來顯示;如果使用星號(*),則表示檢索所有的列,這時數(shù)據(jù)將按照表結(jié)構(gòu)的自然順序來顯示。 在SELECT語句中,WHERE子句位于FROM子句之后,其語法格式如下: SELECT columns_list FROM table_name WHERE conditional_expression篩選查詢篩選查詢在SELECT語句中,GROUP BY子句位于FROM子句之后,其語法格式如下:SELECT columns_listFROM table_nameWHERE conditional_expressionGROUP BY columns_list分組查詢排序查詢 在SELECT語句中

32、,可以使用ORDER BY子句對檢索的結(jié)果集進行排序,該子句位于FROM子句之后,其語法格式如下:SELECT columns_listFROM table_nameWHERE conditional_expressionGROUP BY columns_listORDER BY order_by_expression ASC | DESC ,.n 在實際的應用系統(tǒng)開發(fā)中會設(shè)計多個數(shù)據(jù)表,每個表的信息不是獨立存在的,而是若干個表之間的信息存在一定的關(guān)系,這樣當用戶查詢某一個表的信息時,很可能需要查詢關(guān)聯(lián)數(shù)據(jù)表的信息,這就是多表關(guān)聯(lián)查詢。SELECT語句自身是支持多表關(guān)聯(lián)查詢的,多表關(guān)聯(lián)查詢要比

33、單表查詢復雜得多。在進行多表關(guān)聯(lián)查詢時,可能會涉及到表別名、內(nèi)連接、外連接、自然連接和交叉連接等概念多表關(guān)聯(lián)查詢Oracle常用系統(tǒng)函數(shù)本講大綱:1、字符類函數(shù) 2 2、數(shù)字類函數(shù)、數(shù)字類函數(shù) 3 3、日期和時間類函數(shù)、日期和時間類函數(shù) 4 4、轉(zhuǎn)換類函數(shù)、轉(zhuǎn)換類函數(shù) 5 5、聚合類函數(shù)、聚合類函數(shù) 字符類函數(shù)(1)ASCII(c)函數(shù)和CHR(i)函數(shù)(2)CONCAT(s1,s2)函數(shù)(3)INITCAP(s)函數(shù)(4)INSTR(s1,s2,i,j)函數(shù)(5)LENGTH(s)函數(shù)(6)LOWER(s)函數(shù)和UPPER函數(shù)(s)(7)LTRIM(s1,s2)函數(shù)、RTRIM(s1,s2)

34、函數(shù)和TRIM(s1,s2)函數(shù)(8)REPLACE(s1,s2,s3)函數(shù)(9)SUBSTR(s,i,j)函數(shù)數(shù)字類函數(shù)(1)CEIL(n)函數(shù)(2)ROUND(n1,n2)函數(shù)(3)POWER(n1,n2)函數(shù)日期和時間類函數(shù)(1)SYSDATE()函數(shù)(2)ADD_MONTHS(d,i)函數(shù)轉(zhuǎn)換類函數(shù)(1)TO_CHAR()函數(shù)(2)TO_NUMBER(s,formatlan)函數(shù)聚合類函數(shù)(1)AVG(xDISTINCT|ALL)函數(shù)(2)COUNT(xDISTINCT|ALL)函數(shù)(3)SUM(xDISTINCT|ALL)函數(shù)子查詢的用法本講大綱:1、什么是子查詢 2 2、單行子查詢

35、、單行子查詢 3 3、多行子查詢、多行子查詢 4 4、關(guān)聯(lián)子查詢關(guān)聯(lián)子查詢什么是子查詢 子查詢是在SQL語句內(nèi)的另外一條SELECT語句,也被稱為內(nèi)查詢或是內(nèi)SELECT語句。在SELECT、INSERT、UPDATE或DELETE命令中允許是一個表達式的地方都可以包含子查詢,子查詢甚至可以包含在另外一個子查詢中。單行子查詢 單行子查詢是指返回一行數(shù)據(jù)的子查詢語句。當在WHERE子句中引用單行子查詢時,可以使用單行比較運算符(=、=、=和)。多行子查詢 多行子查詢是指返回多行數(shù)據(jù)的子查詢語句。當在WHERE子句中使用多行子查詢時,必須使用多行比較符(IN、ANY、ALL)。關(guān)聯(lián)子查詢 在當行子

36、查詢和多行子查詢中,內(nèi)查詢和外查詢是分開執(zhí)行的,也就是說內(nèi)查詢的執(zhí)行與外查詢的執(zhí)行是沒有關(guān)系的,外查詢僅僅是使用內(nèi)查詢的最終結(jié)果。在一些特殊需求的子查詢中,內(nèi)查詢的執(zhí)行需要借助于外查詢,而外查詢的執(zhí)行又離不開內(nèi)查詢的執(zhí)行,這時,內(nèi)查詢和外查詢是相互關(guān)聯(lián)的,這種子查詢就被稱為關(guān)聯(lián)子查詢。操作數(shù)據(jù)庫本講大綱:1、插入數(shù)據(jù)(INSERT語句) 3、刪除數(shù)據(jù)(刪除數(shù)據(jù)(DELETEDELETE語句和語句和TRUNCATETRUNCATE語句)語句)2 2、更新數(shù)據(jù)(、更新數(shù)據(jù)(UPDATEUPDATE語句)語句)插入數(shù)據(jù)(INSERT語句) INSERT語句的法格式如下: INSERT INTO ta

37、ble_name (column_name1,column_name2)VALUES(express1,express2)UPDATE語句的語法格式如下:UPDATE table_nameSET column_name1=express1,column_name2=express2.| (column_name1,column_name2)=(selectSubquery)WHERE condition更新數(shù)據(jù)(更新數(shù)據(jù)(UPDATE語句)語句)1、DELETE語句語法如下DELETE FROM table_nameWHERE condition2、TRUNCATE語句語法如下:TRUNCAT

38、E TABLE table_name刪除數(shù)據(jù)(DELETE語句和TRUNCATE語句)事務處理本講大綱:1、事務的概述2 2、操作事操作事務務事務的概述 事務包含4種重要的屬性,被統(tǒng)稱為ACID(原子性、一致性、隔離性和持久性),一個事務必須通過ACID。(1)原子性(Atomic):事務是一個整體的工作單元,事務對數(shù)據(jù)庫所做的操作要么全部執(zhí)行,要么全部取消。如果某條語句執(zhí)行失敗,則所有語句全部回滾。(2)一致性(ConDemoltent):事務在完成時,必須使所有的數(shù)據(jù)都保持一致狀態(tài)。在相關(guān)數(shù)據(jù)庫中,所有規(guī)則都必須應用于事務的修改,以保持所有數(shù)據(jù)的完整性。如果事務成功,則所有數(shù)據(jù)將變?yōu)橐粋€新

39、的狀態(tài);如果事務失敗,則所有數(shù)據(jù)將處于開始之前的狀態(tài)。(3)隔離性(Isolated):由事務所作的修改必須與其他事務所作的修改隔離。事務查看數(shù)據(jù)時數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務修改它之前的狀態(tài),要么是另一事務修改它之后的狀態(tài),事務不會查看中間狀態(tài)的數(shù)據(jù)。(4)持久性(Durability):當事務提交后,對數(shù)據(jù)庫所做的修改就會永久保存下來。 Oracle 11g中的事務是隱式自動開始的,它不需要用戶顯示地執(zhí)行開始事務語句。但對于事務的結(jié)束處理,則需要用戶進行指定的操作,通常在以下情況時,Oracle認為一個事務結(jié)束了。(1)執(zhí)行COMMIT語句提交事務。(2)指定ROLLBACK語句撤銷

40、事務。(3)執(zhí)行一條數(shù)據(jù)定義語句,比如,CREATE、DROP或ALTER等語句。如果該語句執(zhí)行成功,那么Oracle系統(tǒng)會自動執(zhí)行COMMIT命令;否則,則Oracle系統(tǒng)會自動執(zhí)行ROLLBACK命令。(4)執(zhí)行一個數(shù)據(jù)控制命令,比如,GRANT、REVOKE等控制命令,這種操作執(zhí)行完畢,Oracle系統(tǒng)會自動執(zhí)行COMMIT命令。(5)正常地斷開數(shù)據(jù)庫的連接、正常地退出SQL*Plus環(huán)境,則Oracle系統(tǒng)會自動執(zhí)行COMMIT命令;否則,則Oracle系統(tǒng)會自動執(zhí)行ROLLBACK命令。操作事務PL/SQL簡介本講大綱:1、PL/SQL塊結(jié)構(gòu) 2 2、代碼注釋和標示符、代碼注釋和標示

41、符 PL/SQL塊結(jié)構(gòu) 標準PL/SQL塊的語法格式如下: DECLARE -聲明部分,可選 BEGIN -執(zhí)行部分,必須 EXCEPTION -異常處理部分,可選 END1單行注釋 單行注釋由連個連接字符“-”開始,后面緊跟著注釋內(nèi)容。2多行注釋 多行注釋由/*開頭,由*/結(jié)尾,這個大多數(shù)編程語言是相同的。3PL/SQL字符集 所有的PL/SQL程序元素(比如,關(guān)鍵字、變量名、常量名等)都是由一些字符序列組合而成的,而這些字符序列中的字符都必須取自PL/SQL語言所允許使用的字符集,那么這些合法的字符集主要包括以下內(nèi)容:u大寫和小寫字母:A-Z或a-z。u數(shù)字:0-9。u非顯示的字符:制表符

42、、空格和回車。u數(shù)學符號:+,-,*,/,=等。u間隔符:包括(),?,!,;,:,#,%,$,&等。代碼注釋和標示符數(shù)據(jù)類型、變量和常量本講大綱:1、基本數(shù)據(jù)類型2 2、特殊特殊數(shù)數(shù)據(jù)據(jù)類類型型3 3、定定義變義變量和常量量和常量基本數(shù)據(jù)類型1數(shù)值類型 數(shù)值類型主要包括NUMBER、PLS_INTEGER和BINARY_INTEGER三種基本類型 2字符類型 字符類型主要包括VARCHAR2、CHAR、LONG、NCHAR和NVARCHAR2等。這些類型的變量用來存儲字符串或字符數(shù)據(jù)。 3日期類型 日期類型只有一個種即DATE類型,用來存儲日期和時間信息,DATE類型的存儲空間是7個

43、字節(jié),分別使用一個字節(jié)存儲世紀、年、月、天、小時、分鐘和秒。4布爾類型 布爾類型也只有一種即BOOLEAN,主要用于程序的流程控制和業(yè)務邏輯判斷,其變量值可以是TRUE、FALSE或NULL中的一種。1%TYPE類型 使用%TYPE關(guān)鍵字可以聲明一個與指定列名稱相同的數(shù)據(jù)類型,它通常緊跟在指定列名的后面。2RECORD類型,語法如下: type record_type is record ( var_member1 data_type not null :=default_value, var_membern data_type not null :=default_value)3%ROWTY

44、PE類型,語法如下: rowVar_name table_name%rowtype;特殊數(shù)據(jù)類型1定義變量 (長度):=;2定義常量 constant :=;定義變量和常量流程控制語句本講大綱:1、選擇語句2 2、循環(huán)語句、循環(huán)語句 選擇語句1ifthen語句2Ifthenelse語句3ifthenelsif語句4case語句1loop語句loop plsql_sentence;exit when end_condition_ expend loop;2while語句while condition_expression loopplsql_sentence;end loop;3for語句for

45、 variable_ counter_name in reverse lower_limit.upper_limit loopplsql_sentence;end loop;循環(huán)語句循環(huán)語句PL/SQL游標本講大綱:1、顯示游標2 2、游標的屬性游標的屬性3 3、隱式游標、隱式游標 4 4、通過、通過forfor語句循環(huán)游標語句循環(huán)游標 顯示游標 顯示游標是由用戶聲明和操作的一種游標,通常用于操作查詢結(jié)果集(即由SELECT語句返回的查詢結(jié)果),使用它處理數(shù)據(jù)的步驟包括:聲明游標、打開游標、讀取游標和關(guān)閉游標4個步驟。 游標的屬性 無論是顯式游標還是隱式游標,都具有%found、%notfou

46、nd、%isopen和%rowcount四個屬性,通過這4個屬性可以獲知SQL語句的執(zhí)行結(jié)果以及該游標的狀態(tài)信息。下面對這4個屬性的功能進行講解。(1)%found:布爾型屬性,如果SQL語句至少影響到一行數(shù)據(jù),則該屬性為true,否則為fasle。(2)%notfound:布爾型屬性,與%found屬性的功能相反。(3)%rowcount:數(shù)字型屬性,返回受SQL語句影響的行數(shù)。(4)%isopen:布爾型屬性,當游標已經(jīng)打開時返回true,游標關(guān)閉時則為false。隱式游標 在執(zhí)行一個SQL語句時,Oracle會自動創(chuàng)建一個隱式游標。這個游標是內(nèi)存中處理該語句的工作區(qū)域。隱式游標主要是處理

47、數(shù)據(jù)操縱語句(如,UPDATE、DELETE語句)的執(zhí)行結(jié)果,當然特殊情況下,也可以處理SELECT語句的查詢結(jié)果。由于隱式游標也有屬性,當使用隱式游標的屬性時,需要在屬性前面加上隱式游標的默認名稱SQL。通過for語句循環(huán)游標(1)在for語句中遍歷隱式游標中的數(shù)據(jù)時,通常在關(guān)鍵字“in”的后面提供由SELECT語句檢索的結(jié)果集,在檢索結(jié)果集的過程中,Oracle系統(tǒng)會自動提供一個隱式的游標sql。 (2)在for語句中遍歷顯式游標中的數(shù)據(jù)時,通常在關(guān)鍵字“in”的后面提供游標的名稱,其語法格式如下: for var_auto_record in cur_name loop plsqlsen

48、tence; end loop;PL/SQL異常處理本講大綱:1、預定義異常 2 2、自定義異常、自定義異常 預定義異常 當PL/SQL程序違反了Oracle系統(tǒng)內(nèi)部規(guī)定的設(shè)計規(guī)范時,就會自動引發(fā)一個預定義的異常,例如,當除數(shù)為零時,就會引發(fā)“ZERO_DIVIED”異常。 系統(tǒng)預定義異常系統(tǒng)預定義異常說說 明明ZERO_DIVIDE除數(shù)為零時引發(fā)的異常除數(shù)為零時引發(fā)的異常ACCESS_INTO_NULL企圖為某個未初始化對象的屬性賦值企圖為某個未初始化對象的屬性賦值COLLECTION_IS_NULL企圖使用未初始化的集合元素企圖使用未初始化的集合元素CURSOR_ALREADY_OPEN企

49、圖再次打開一個已經(jīng)打開過的游標,但在重新打開之前,游標未關(guān)企圖再次打開一個已經(jīng)打開過的游標,但在重新打開之前,游標未關(guān)閉閉INVALID_CURSOR執(zhí)行一個非法的游標操作,例如,關(guān)閉一個未打開的游標執(zhí)行一個非法的游標操作,例如,關(guān)閉一個未打開的游標INVALID_NUMBER企圖將一個字符串轉(zhuǎn)換成一個無效的數(shù)字而失敗企圖將一個字符串轉(zhuǎn)換成一個無效的數(shù)字而失敗LOGIN_DENIED企圖使用無效的用戶名或密碼連接數(shù)據(jù)庫企圖使用無效的用戶名或密碼連接數(shù)據(jù)庫NO_DATA_FOUNDSELECT INTO語句沒有返回數(shù)據(jù)語句沒有返回數(shù)據(jù)ROWTYPE_MISMATCH主游標變量與主游標變量與PL/

50、SQL游標變量的返回類型不兼容游標變量的返回類型不兼容SELF_IS_NULL使用對象類型時,使用空對象調(diào)用其方法使用對象類型時,使用空對象調(diào)用其方法自定義異常1錯誤編號異常 錯誤號異常是指在Oracle系統(tǒng)發(fā)生錯誤時,系統(tǒng)會顯示錯誤號和相關(guān)描述信息的異常,雖然直接使用錯誤編號也可以完成異常處理,但錯誤編號較為抽象,不易于用戶理解和記憶,對于這種異常,首先在PL/SQL塊的聲明部分(DECLARE部分)使用EXCEPTION類型定義一個異常變量名,然后使用語句PRAGMA EXCEPTION_INIT為“錯誤編號”關(guān)聯(lián)“這個異常變量名”,接下來就可以像對待系統(tǒng)預定義異常一樣處理了。2業(yè)務邏輯異

51、常 在實際的應用中,程序開發(fā)人員可以根據(jù)具體的業(yè)務羅規(guī)則自定義一個異常。這樣,當用戶操作違反業(yè)務邏輯規(guī)則時,就引發(fā)一個自定義異常,從而中斷程序的正常執(zhí)行并轉(zhuǎn)到自定義的異常處理部分。 但無論是預定義異常,還是錯誤編號異常,都是由Oracle系統(tǒng)判斷的錯誤,但業(yè)務邏輯異常是Oracle系統(tǒng)本身是無法知道的,這樣就需要有一個引發(fā)異常的機制,引發(fā)業(yè)務邏輯異常通常使用RAISE語句來實現(xiàn)。當引發(fā)一個異常時,控制就會轉(zhuǎn)到EXCEPTION異常處理部分執(zhí)行異常處理語句。業(yè)務邏輯異常首先在DECLARE部分使用EXCEPTION類型聲明一個異常變量,然后在BEGIN部分根據(jù)一定的義務邏輯規(guī)則執(zhí)行RAISE語句

52、(在RAISE關(guān)鍵字后面跟著異常變量名),最后在EXCEPTION部分編寫異常處理語句。存儲過程本講大綱:1、創(chuàng)創(chuàng)建存建存儲過儲過程程2 2、存存儲過儲過程的程的參數(shù)參數(shù)3 3、ININ參數(shù)參數(shù)的默的默認值認值創(chuàng)建存儲過程語法格式如下:create or replace procedure pro_name (parameter1,parameter2) is|asbegin plsql_sentences;exception dowith _ sentences;end pro_name;1IN模式參數(shù)這是一種輸入類型的參數(shù),參數(shù)值由調(diào)用方傳入,并且只能被存儲過程讀取。(1)指定名稱傳遞指定

53、名稱傳遞是指在向存儲過程傳遞參數(shù)時需要指定參數(shù)名稱,即參數(shù)名稱在左側(cè),中間是賦值符號“=”,右側(cè)是參數(shù)值,其語法格式如下:pro_name(parameter1=value1,parameter2=value2)(2)按位置傳遞指定名稱傳遞參數(shù)雖然直觀易讀,但也有缺點,就是參數(shù)過多時,會顯得代碼冗長,反而變得不容易閱讀。這樣用戶就可以采取按位置傳遞參數(shù),采用這種方式時,用戶提供的參數(shù)值順序必須與存儲過程中定義的參數(shù)順序相同。 (3)混合方式傳遞混合方式就是將前兩種方式結(jié)合到一起,這樣就可以兼顧二者的優(yōu)點, 2OUT模式參數(shù)這是一種輸出類型的參數(shù),表示這個參數(shù)在存儲過程中已經(jīng)被賦值,并且這個參數(shù)

54、值可以傳遞到當前存儲過程以外的環(huán)境中,關(guān)鍵字out位于參數(shù)名稱之后。 存儲過程的參數(shù) 前面的IN參數(shù)的值都是在調(diào)用存儲過程時傳入的,實際上,Oracle支持在聲明IN參數(shù)的同時給其初始化默認值,這樣在存儲過程調(diào)用時,如果沒有向IN參數(shù)傳入值,則存儲過程可以使用默認值進行操作。IN參數(shù)的默認值函數(shù)本講大綱:1、創(chuàng)建函數(shù) 2 2、調(diào)用函數(shù)調(diào)用函數(shù) 3 3、刪除函數(shù)刪除函數(shù) 創(chuàng)建函數(shù)create or replace function fun_name(parameter1,parameter2) return data_type is inner_variablebegin plsql_ sent

55、ence;exception dowith _ sentences;end fun_name; 由于函數(shù)有返回值,所以在調(diào)用函數(shù)時,必須使用一個變量來保存函數(shù)的返回值,這樣函數(shù)和這個變量就組成了一個賦值表達式。 調(diào)用函數(shù)觸發(fā)器本講大綱:1、觸發(fā)器簡介 2 2、語句級觸發(fā)器、語句級觸發(fā)器 3 3、行級別觸發(fā)器、行級別觸發(fā)器 4 4、替換觸發(fā)器、替換觸發(fā)器 5 5、用戶事件觸發(fā)器、用戶事件觸發(fā)器 觸發(fā)器簡介語法格式如下:create or replace trigger tri_name before | after | instead of tri_event on table_name | v

56、iew_name | user_name | db_name for each row when tri_conditionbeginplsql_sentences;end tri_name; 語句級觸發(fā)器,顧名思義,就是針對一條DML語句而引起的觸發(fā)器執(zhí)行。在語句級觸發(fā)器中,不使用for each row子句,也就是說無論數(shù)據(jù)操作影響多少行,觸發(fā)器都只會執(zhí)行一次。 語句級觸發(fā)器語句級觸發(fā)器 不言而喻,行級觸發(fā)器會針對DML操作所影響的每一行數(shù)據(jù)都執(zhí)行一次觸發(fā)器。創(chuàng)建這種觸發(fā)器時,必須在語法中使用for each for這個選項。使用行級觸發(fā)器的一個典型應用就是給數(shù)據(jù)表生成主鍵值,下面就來講解

57、這個典型應用的實現(xiàn)過程。行級別觸發(fā)器行級別觸發(fā)器 替換觸發(fā)器即instead of觸發(fā)器,它的“觸發(fā)時機”關(guān)鍵字是instead of,而不是before或after。與其它類型觸發(fā)器不同是,替換觸發(fā)器定義在視圖(一種數(shù)據(jù)庫對象,在后面章節(jié)中會講解到)上的,而不是定義在表上。由于視圖是由多個基表連接組成的邏輯結(jié)構(gòu),所以一般不允許用戶進行DML操作(如insert、update、delete等操作),這樣當用戶為視圖編寫“替換觸發(fā)器”后,用戶對視圖的DML操作實際上就變成了執(zhí)行觸發(fā)器中的PL/SQL語句塊,這樣就可以通過在“替換觸發(fā)器”中編寫適當?shù)拇a對構(gòu)成視圖的各個基表進行操作。替換觸發(fā)器替換

58、觸發(fā)器 用戶事件觸發(fā)器是因進行DDL操作或用戶登錄、退出等操作而引起運行的一種觸發(fā)器,引起該類型觸發(fā)器運行的常見用戶事件包括:CREATE、ALTER、DROP、ANALYZE、COMMENT、GRANT、REVOKE、RENAME、TRUNCATE、SUSPEND、LOGON和LOGOFF等。用戶事件觸發(fā)器用戶事件觸發(fā)器程序包本講大綱:1、程序包的規(guī)范2 2、程序包的主體程序包的主體程序包的規(guī)范 該“規(guī)范”用于規(guī)定在程序包中可以使用哪些變量、類型、游標和子程序(指各種命名的PL/SQL塊),需要注意的是:程序包一定要在“包主體”之前被創(chuàng)建,其語法格式如下: create or replace

59、 package pack_name is declare_variable; declare_type; declare_cursor; declare_function; declare_ procedure; end pack_name; 與創(chuàng)建“規(guī)范”不同的是,創(chuàng)建“程序包主體”使用CREATE PACKAGE BODY語句,而不是CREATE PACKAGE,這一點需要讀者注意,創(chuàng)建程序包主體的代碼如下:create or replace package body pack_name is inner_variable cursor_body function_title begin

60、 fun_plsql; exception dowith _ sentences; end fun_name procedure_title begin pro_plsql; exception dowith _ sentences; end pro_nameend pack_name;程序包的主體管理控制文件本講大綱:1、簡介控制文件簡介控制文件 2 2、控制文件的多路復用、控制文件的多路復用 3 3、創(chuàng)建控制文件、創(chuàng)建控制文件4 4、備份和恢復控制文件、備份和恢復控制文件 5 5、刪除控制文件、刪除控制文件 6 6、查詢控制文件的信息、查詢控制文件的信息 簡介控制文件 在Oracle數(shù)據(jù)庫中,控制

溫馨提示

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

評論

0/150

提交評論