![Oracle入門(mén)到精通(明日科技)配套PPT綜述綜述_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/5637d948-b2b5-4ac8-bd83-2354d07ae7de/5637d948-b2b5-4ac8-bd83-2354d07ae7de1.gif)
![Oracle入門(mén)到精通(明日科技)配套PPT綜述綜述_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/5637d948-b2b5-4ac8-bd83-2354d07ae7de/5637d948-b2b5-4ac8-bd83-2354d07ae7de2.gif)
![Oracle入門(mén)到精通(明日科技)配套PPT綜述綜述_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/5637d948-b2b5-4ac8-bd83-2354d07ae7de/5637d948-b2b5-4ac8-bd83-2354d07ae7de3.gif)
![Oracle入門(mén)到精通(明日科技)配套PPT綜述綜述_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/5637d948-b2b5-4ac8-bd83-2354d07ae7de/5637d948-b2b5-4ac8-bd83-2354d07ae7de4.gif)
![Oracle入門(mén)到精通(明日科技)配套PPT綜述綜述_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/5637d948-b2b5-4ac8-bd83-2354d07ae7de/5637d948-b2b5-4ac8-bd83-2354d07ae7de5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Oracle從入門(mén)到精通明日科技 Oracle,西方人認(rèn)為有“神諭、預(yù)言”之意,中國(guó)人則譯作“甲骨文”,是當(dāng)今世界最強(qiáng)大的數(shù)據(jù)庫(kù)軟件。所有這一切要從IBM的一篇論文談起,1970年的6月,IBM公司的研究員埃德加考特發(fā)表了一篇著名的論文大型共享數(shù)據(jù)庫(kù)數(shù)據(jù)的關(guān)系模型,這可以稱之為數(shù)據(jù)庫(kù)發(fā)展史上的一個(gè)轉(zhuǎn)折點(diǎn)。在當(dāng)時(shí)還是層次模型和網(wǎng)狀模型的數(shù)據(jù)庫(kù)產(chǎn)品占據(jù)市場(chǎng)主要位置的情況下,從這篇論文開(kāi)始,拉開(kāi)了關(guān)系型數(shù)據(jù)庫(kù)軟件革命的序幕。 1977年6月,Larry Ellison與Bob Miner和Ed Oates在硅谷共同創(chuàng)辦了一家名為“軟件開(kāi)發(fā)實(shí)驗(yàn)室”的軟件公司(Oracle公司的前身,英文縮寫(xiě)SDL)。
2、在Oates看到了埃德加考特的那篇著名的論文連同其他幾篇相關(guān)的文章之后,非常興奮,他找來(lái)Ellison和Miner共同閱讀,Ellison和Miner也預(yù)見(jiàn)到關(guān)系型數(shù)據(jù)庫(kù)軟件的巨大潛力。于是,這3個(gè)數(shù)據(jù)庫(kù)界的巨人開(kāi)始共同籌劃構(gòu)建可商用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(英文縮寫(xiě)RDBMS),并把這種商用數(shù)據(jù)庫(kù)產(chǎn)品命名為Oracle。因?yàn)樗麄兿嘈?,Oracle(字典里的解釋有“神諭、預(yù)言”之意)是一切智慧的源泉,這樣當(dāng)今世界最強(qiáng)大、最優(yōu)秀的Oracle數(shù)據(jù)庫(kù)誕生了。簡(jiǎn)述簡(jiǎn)述Oracle的發(fā)展史的發(fā)展史關(guān)系型數(shù)據(jù)庫(kù)的基本理論本講大綱:1、關(guān)系型數(shù)據(jù)庫(kù)與數(shù)據(jù)庫(kù)管理系統(tǒng)3、關(guān)系型數(shù)據(jù)庫(kù)的設(shè)計(jì)范式2 2、關(guān)關(guān)系型系
3、型數(shù)數(shù)據(jù)據(jù)庫(kù)庫(kù)的的E-RE-R模型模型關(guān)系型數(shù)據(jù)庫(kù)與數(shù)據(jù)庫(kù)管理系統(tǒng) 在關(guān)系數(shù)據(jù)模型中,關(guān)系可以看成由行和列交叉組成的二維表格,表中一行稱為一個(gè)元組,可以用來(lái)標(biāo)識(shí)實(shí)體集中的一個(gè)實(shí)體。表中的列稱為屬性,給每一列起一個(gè)名稱即為屬性名,表中的屬性名不能相同。列的取值范圍稱為域,同列具有相同的域,不同的列也可以有相同的域。表中任意兩行(元組)不能相同。能唯一標(biāo)識(shí)表中不同行的屬性或?qū)傩越M(即多個(gè)屬性的組合)稱為主鍵或復(fù)合主鍵。1實(shí)體和屬性 實(shí)體是一個(gè)數(shù)據(jù)對(duì)象,是指客觀存在并可以相互區(qū)分的事物,如一個(gè)教師、一個(gè)學(xué)生、一個(gè)雇員等等。每個(gè)實(shí)體由一組屬性來(lái)表示,如,一個(gè)具體的學(xué)生擁有學(xué)號(hào)、姓名、性別和班級(jí)等屬性,
4、其中學(xué)號(hào)可以唯一標(biāo)識(shí)具體某個(gè)學(xué)生這個(gè)實(shí)體。具有相同屬性的實(shí)體組合在一起就構(gòu)成實(shí)體集即實(shí)體集是實(shí)體的集合,而實(shí)體則是實(shí)體集中的某一個(gè)特例,例如,王同學(xué)這個(gè)實(shí)體就是學(xué)生實(shí)體集中的一個(gè)特例。2聯(lián)系 在實(shí)際應(yīng)用中,實(shí)體之間是存在聯(lián)系的,這種聯(lián)系必須在邏輯模型中表現(xiàn)出來(lái)。在E-R模型中,聯(lián)系用菱形表示,菱形框內(nèi)寫(xiě)明“聯(lián)系名”,并用“連接線”將有關(guān)實(shí)體連接起來(lái),同時(shí)在“連接線”的旁邊標(biāo)注上聯(lián)系的類型,兩個(gè)實(shí)體之間的聯(lián)系類型可以分為3類。關(guān)系型數(shù)據(jù)庫(kù)的E-R模型1增強(qiáng)信息生命周期管理和存儲(chǔ)管理能力 2全面回憶數(shù)據(jù)變化3最大限度提高信息可用性4Oracle快速文件 5更快的XML6透明的加密 7嵌入式OLAP
5、行列8連接匯合和查詢結(jié)果高速緩存9增強(qiáng)了應(yīng)用開(kāi)發(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ù)庫(kù)庫(kù)配置助手配置助手SQL*Plus工具 選擇“開(kāi)始”/“所有程序”/“Oracle-OraDb11g_home1”/“應(yīng)用程序開(kāi)發(fā)”/“SQL*Plus”命令,打開(kāi)的命令窗口如下圖所示。Oracle企業(yè)管理器 Oracle Enterprise
6、 Manager(OEM)是基于WEB界面的Oracle數(shù)據(jù)庫(kù)管理工具。啟動(dòng)Oracle 11g的OEM只需在瀏覽器中輸入其URL地址通常為https:/localhost:1518/em,然后連接主頁(yè)即可;也可以在“開(kāi)始”菜單的“Oracle程序組”中選擇“Database Control - orcl”菜單命令來(lái)啟動(dòng)Oracle 11g的OEM工具。數(shù)據(jù)庫(kù)配置助手 在 開(kāi) 始 菜 單 中 選 擇 “ 所 有 程 序 ” / “ O r a c l e - OraDb11g_home1”/“配置和移植工具”/“Database Configuration Assistant”菜單命令,就會(huì)打
7、開(kāi)如圖所示的窗口。啟動(dòng)與關(guān)閉數(shù)據(jù)庫(kù)實(shí)例本講大綱:1、啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例2 2、關(guān)閉數(shù)關(guān)閉數(shù)據(jù)據(jù)庫(kù)實(shí)庫(kù)實(shí)例例啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例 Oracle數(shù)據(jù)庫(kù)實(shí)例的啟動(dòng)過(guò)程分為3步驟,分別是啟動(dòng)實(shí)例、加載數(shù)據(jù)庫(kù)、打開(kāi)數(shù)據(jù)庫(kù)。用戶可以根據(jù)實(shí)際情況的需要,以不同的模式啟動(dòng)數(shù)據(jù)庫(kù),啟動(dòng)數(shù)據(jù)庫(kù)所使用的命令格式如下。 STARTUP nomount | mount | open | force resetrict pfile=filename關(guān)閉數(shù)據(jù)庫(kù)實(shí)例 與啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例相同,關(guān)閉數(shù)據(jù)庫(kù)實(shí)例也分為3個(gè)步驟,分別是關(guān)閉數(shù)據(jù)庫(kù)、卸載數(shù)據(jù)庫(kù)、關(guān)閉Oracle實(shí)例。在SQL*Plus中,可以使用shutdown語(yǔ)句關(guān)閉數(shù)據(jù)庫(kù),其具
8、體語(yǔ)法格式如下: SHUTDOWN normal | transactional | immediate | abort 在Oracle數(shù)據(jù)庫(kù)管理系統(tǒng)中有3個(gè)重要 的 概 念 需 要 理 解 , 那 就 是 實(shí) 例(Instance)、數(shù)據(jù)庫(kù)(Database)和數(shù)據(jù)庫(kù)服務(wù)器(Database Server)。其中,實(shí)例是指一組Oracle后臺(tái)進(jìn)程以及在服務(wù)器中分配的共享內(nèi)存區(qū)域;數(shù)據(jù)庫(kù)是由基于磁盤(pán)的數(shù)據(jù)文件、控制文件、日志文件、參數(shù)文件和歸檔日志文件等組成的物理文件集合;數(shù)據(jù)庫(kù)服務(wù)器是指管理數(shù)據(jù)庫(kù)的各種軟件工具(比如,sqlplus、OEM等)和實(shí)例及數(shù)據(jù)庫(kù)三個(gè)部分。從實(shí)例與數(shù)據(jù)庫(kù)之間的辯證
9、關(guān)系來(lái)講,實(shí)例用于管理和控制數(shù)據(jù)庫(kù);而數(shù)據(jù)庫(kù)為實(shí)例提供數(shù)據(jù)。一個(gè)數(shù)據(jù)庫(kù)可以被多個(gè)實(shí)例裝載和打開(kāi);而一個(gè)實(shí)例在其生存期內(nèi)只能裝載和打開(kāi)一個(gè)數(shù)據(jù)庫(kù)。ORACLE 11g體系結(jié)構(gòu)概述體系結(jié)構(gòu)概述邏輯存儲(chǔ)結(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邏輯存儲(chǔ)結(jié)構(gòu)中的最小的邏輯單位,也是執(zhí)行數(shù)據(jù)庫(kù)輸入輸出操作的最小存儲(chǔ)單位。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個(gè)操作系統(tǒng)塊構(gòu)成。Oracle數(shù)據(jù)塊有一定的標(biāo)準(zhǔn)大小,其大小被寫(xiě)入到初始化參數(shù)DB_BlOCK_SIZE中。另外,Oracle支持在同一個(gè)數(shù)據(jù)庫(kù)中使用多種大小的快,與標(biāo)準(zhǔn)塊大小不同的塊就是非標(biāo)準(zhǔn)塊。 數(shù)據(jù)區(qū)(也可稱作數(shù)據(jù)擴(kuò)展區(qū))是由一組連續(xù)的Oracle數(shù)據(jù)塊所構(gòu)成的Oracle存儲(chǔ)結(jié)構(gòu),一個(gè)或多個(gè)數(shù)據(jù)塊組成一個(gè)數(shù)據(jù)區(qū),一個(gè)或多個(gè)數(shù)據(jù)區(qū)再組成一個(gè)段(Segment)。當(dāng)一個(gè)段中的所有空間被使用完后,Oracle系統(tǒng)將自動(dòng)為該段分配一個(gè)新的數(shù)據(jù)區(qū),這也正符合Extent這個(gè)單詞所具有的“擴(kuò)展”的含
11、義,可見(jiàn)數(shù)據(jù)區(qū)是Oracle存儲(chǔ)分配的最小單位,Oracle就以數(shù)據(jù)區(qū)為單位進(jìn)行存儲(chǔ)控件的擴(kuò)展。 使用數(shù)據(jù)區(qū)的目的是用來(lái)保存特定數(shù)據(jù)類型的數(shù)據(jù),也是表中數(shù)據(jù)增長(zhǎng)的基本單位。在Oracle數(shù)據(jù)庫(kù)中,分配存儲(chǔ)空間就是以數(shù)據(jù)區(qū)為單位的。一個(gè)Oracle對(duì)象包含至少一個(gè)數(shù)據(jù)區(qū)。設(shè)置一個(gè)表或索引的存儲(chǔ)參數(shù)包含設(shè)置它的數(shù)據(jù)區(qū)大小。 數(shù)據(jù)區(qū)(Extent)段(Segment) 數(shù)據(jù)區(qū)(也可稱作數(shù)據(jù)擴(kuò)展區(qū))是由一組連續(xù)的Oracle數(shù)據(jù)塊所構(gòu)成的Oracle存儲(chǔ)結(jié)構(gòu),一個(gè)或多個(gè)數(shù)據(jù)塊組成一個(gè)數(shù)據(jù)區(qū),一個(gè)或多個(gè)數(shù)據(jù)區(qū)再組成一個(gè)段(Segment)。當(dāng)一個(gè)段中的所有空間被使用完后,Oracle系統(tǒng)將自動(dòng)為該段分配
12、一個(gè)新的數(shù)據(jù)區(qū),這也正符合Extent這個(gè)單詞所具有的“擴(kuò)展”的含義,可見(jiàn)數(shù)據(jù)區(qū)是Oracle存儲(chǔ)分配的最小單位,Oracle就以數(shù)據(jù)區(qū)為單位進(jìn)行存儲(chǔ)控件的擴(kuò)展。 使用數(shù)據(jù)區(qū)的目的是用來(lái)保存特定數(shù)據(jù)類型的數(shù)據(jù),也是表中數(shù)據(jù)增長(zhǎng)的基本單位。在Oracle數(shù)據(jù)庫(kù)中,分配存儲(chǔ)空間就是以數(shù)據(jù)區(qū)為單位的。一個(gè)Oracle對(duì)象包含至少一個(gè)數(shù)據(jù)區(qū)。設(shè)置一個(gè)表或索引的存儲(chǔ)參數(shù)包含設(shè)置它的數(shù)據(jù)區(qū)大小。表空間(TableSpace) Oracle使用表空間將相關(guān)的邏輯結(jié)構(gòu)(比如段、數(shù)據(jù)區(qū)等)組合在一起,表空間是數(shù)據(jù)庫(kù)的最大邏輯劃分區(qū)域,通常用來(lái)存放數(shù)據(jù)表、索引、回滾段等數(shù)據(jù)對(duì)象(即Segment),任何數(shù)據(jù)對(duì)象在
13、創(chuàng)建時(shí)都必須被指定存儲(chǔ)在某個(gè)表空間中。表空間(屬邏輯存儲(chǔ)結(jié)構(gòu))與數(shù)據(jù)文件(屬物理存儲(chǔ)結(jié)構(gòu))相對(duì)應(yīng),一個(gè)表空間由一個(gè)或多個(gè)數(shù)據(jù)文件組成,一個(gè)數(shù)據(jù)文件只屬于一個(gè)表空間;Oracle數(shù)據(jù)的存儲(chǔ)空間在邏輯上表現(xiàn)為表空間,而在物理上表現(xiàn)為數(shù)據(jù)文件。舉個(gè)例子來(lái)說(shuō),表空間相當(dāng)于操作系統(tǒng)中的文件夾,而數(shù)據(jù)文件就相當(dāng)于文件夾中的文件。每個(gè)數(shù)據(jù)庫(kù)至少有一個(gè)表空間(即SYSTEM表空間),表空間的大小等于所有從屬于它的數(shù)據(jù)文件大小的總和。物理存儲(chǔ)結(jié)構(gòu)本講大綱:1、數(shù)據(jù)文件3、日志文件4、 服務(wù)器參數(shù)文件5、密碼文件、警告文件和跟蹤文件2 2、控制文件控制文件數(shù)據(jù)文件 數(shù)據(jù)文件是用于保存用戶應(yīng)用程序數(shù)據(jù)和Oracle
14、系統(tǒng)內(nèi)部數(shù)據(jù)的文件,這些文件在操作系統(tǒng)中就是普通的操作系統(tǒng)文件,Oracle在創(chuàng)建表空間的同時(shí)會(huì)創(chuàng)建數(shù)據(jù)文件。Oracle數(shù)據(jù)庫(kù)在邏輯上由表空間組成,每個(gè)表空間可以包含一個(gè)或多個(gè)數(shù)據(jù)文件,一個(gè)數(shù)據(jù)文件只能隸屬于一個(gè)表空間。 控制文件是一個(gè)二進(jìn)制文件,它記錄了數(shù)據(jù)庫(kù)的物理結(jié)構(gòu),其中主要包含數(shù)據(jù)庫(kù)名、數(shù)據(jù)文件與日志文件的名字和位置、數(shù)據(jù)庫(kù)建立日期等信息??刂莆募话阍贠racle系統(tǒng)安裝時(shí)或創(chuàng)建數(shù)據(jù)庫(kù)時(shí)自動(dòng)創(chuàng)建,控制文件所存放的路徑由服務(wù)器參數(shù)文件spfileorcl.ora的control_files參數(shù)值來(lái)指定。 由于控制文件存放有數(shù)據(jù)文件、日志文件等的相關(guān)信息,因此,Oracle實(shí)例在啟動(dòng)時(shí)
15、必須訪問(wèn)控制文件。如果控制文件正常,實(shí)例才能加載并打開(kāi)數(shù)據(jù)庫(kù);但若控制文件中記錄了錯(cuò)誤的信息,或者實(shí)例無(wú)法找到一個(gè)可用的控制文件,則實(shí)例無(wú)法正常啟動(dòng)??刂莆募刂莆募?日志文件的主要功能是記錄對(duì)數(shù)據(jù)所作的修改,對(duì)數(shù)據(jù)庫(kù)所作的修改幾乎都記錄在日志文件中。在出現(xiàn)問(wèn)題時(shí),可以通過(guò)日志文件得到原始數(shù)據(jù),從而保障不丟失已有操作成果。Oracle的日志文件包括重做日志文件(Redo Log File)和歸檔日志文件(Archive Log File),它們是Oracle系統(tǒng)的主要文件之一,尤其是重做日志文件,它是Oracle數(shù)據(jù)庫(kù)系統(tǒng)正常運(yùn)行所不可或缺的。下面將介紹這兩種日志文件。日志文件服務(wù)器參數(shù)文件
16、服務(wù)器參數(shù)文件SPFILE(Server parameter File)是二進(jìn)制文件,用來(lái)記錄了Oracle數(shù)據(jù)庫(kù)的基本參數(shù)信息(如,數(shù)據(jù)庫(kù)名、控制文件所在路徑、日志緩沖大小等)。數(shù)據(jù)庫(kù)實(shí)例在啟動(dòng)之前,Oracle系統(tǒng)首先會(huì)讀取SPFILE參數(shù)文件中設(shè)置的這些參數(shù),并根據(jù)這些初始化參數(shù)來(lái)配置和啟動(dòng)實(shí)例。比如,設(shè)置標(biāo)準(zhǔn)數(shù)據(jù)塊的大?。磪?shù)db_block_size的值)、設(shè)置日志緩沖區(qū)的大?。磪?shù)log_buffer的值)等等,所以SPFILE參數(shù)文件非常重要。服務(wù)器參數(shù)文件在安裝Oracle數(shù)據(jù)庫(kù)系統(tǒng)時(shí)由系統(tǒng)自動(dòng)創(chuàng)建,文件的名稱為SPFILEsid.ora,sid為所創(chuàng)建的數(shù)據(jù)庫(kù)實(shí)例名。 與
17、早期版本的初始化參數(shù)文件INITsid.ora不同的是,SPFILE中的參數(shù)由Oracle系統(tǒng)自動(dòng)維護(hù),如果要對(duì)某些參數(shù)進(jìn)行修改,則盡可能不要直接對(duì)SPFILE進(jìn)行編輯,最好通過(guò)企業(yè)管理器(OEM)或ALTER SYSTEM命令來(lái)修改,所修改過(guò)的參數(shù)會(huì)自動(dòng)寫(xiě)到SPFILE中。 Oracle系統(tǒng)運(yùn)行時(shí),除了必須的數(shù)據(jù)文件、控制文件、日志文件及服務(wù)器參數(shù)文件外,還需要一些輔助文件,如,密碼文件、警告文件和跟蹤文件,下面將對(duì)這些輔助文件進(jìn)行簡(jiǎn)單的介紹。密碼文件、警告文件和跟蹤文件Oracle 11g服務(wù)器結(jié)構(gòu)本講大綱:1、系統(tǒng)全局區(qū)(SGA)2、程序全局區(qū)(PGA)3、前臺(tái)進(jìn)程4、后臺(tái)進(jìn)程系統(tǒng)全局區(qū)
18、(SGA) 系統(tǒng)全局區(qū)(System Global Area)是所有用戶進(jìn)程共享的一塊內(nèi)存區(qū)域,也就是說(shuō),SGA中的數(shù)據(jù)資源可以被多個(gè)用戶進(jìn)程共同使用。SGA主要由高速數(shù)據(jù)緩沖區(qū)、共享池、重做日志緩存區(qū)、java池和大型池等內(nèi)存結(jié)構(gòu)組成。SGA隨著數(shù)據(jù)庫(kù)實(shí)例的啟動(dòng)而加載到內(nèi)存中,當(dāng)數(shù)據(jù)庫(kù)實(shí)例關(guān)閉時(shí),SGA區(qū)域也就消失了。程序全局區(qū)(PGA) 程序全局區(qū)(Program Global Area)也可稱作用戶進(jìn)程全局區(qū),它的內(nèi)存區(qū)在進(jìn)程私有區(qū)而不是共享區(qū)中。雖然PGA是一個(gè)全局區(qū),可以把代碼、全局變量和數(shù)據(jù)結(jié)構(gòu)都可以存放在其中,但區(qū)域內(nèi)的資源并不像SGA一樣被所有的用戶進(jìn)程所共享,而是每個(gè)Orac
19、le服務(wù)器進(jìn)程都只擁有屬于自己的那部分PGA資源。 在程序全局區(qū)(PGA)中,一個(gè)服務(wù)進(jìn)程只能訪問(wèn)屬于它自己的那部分PGA資源區(qū),各個(gè)服務(wù)進(jìn)程的PGA區(qū)的總和即為實(shí)例的PGA區(qū)的大小。通常PGA區(qū)由私有SQL區(qū)和會(huì)話區(qū)組成。前臺(tái)進(jìn)程1用戶進(jìn)程 用戶進(jìn)程是指那些能夠產(chǎn)生或執(zhí)行SQL語(yǔ)句的應(yīng)用程序,無(wú)論是SQL*Plus,還是其它應(yīng)用程序,只要是能生成或執(zhí)行SQL語(yǔ)句,都被稱作用戶進(jìn)程。2服務(wù)器進(jìn)程 服務(wù)進(jìn)程就是用于處理用戶會(huì)話過(guò)程中向數(shù)據(jù)庫(kù)實(shí)例發(fā)出的SQL語(yǔ)句或SQL*Plus命令,它可以分為專用服務(wù)器模式和共享服務(wù)器模式。后臺(tái)進(jìn)程 Oracle后臺(tái)進(jìn)程是一組運(yùn)行于Oracle服務(wù)器端的后臺(tái)程序
20、,是Oracle實(shí)例的重要組成部分。進(jìn)程包括DBWR、CKPT、LGWR、ARCH、SMON、PMON、LCKN、RECO、DNNN、SNPN。其中SMON、PMON、DBWR、LGWR和CKPT這5個(gè)后臺(tái)進(jìn)程必須正常啟動(dòng),否則將導(dǎo)致數(shù)據(jù)庫(kù)實(shí)例崩潰。此外,還有很多輔助進(jìn)程,用于實(shí)現(xiàn)相關(guān)的輔助功能,如果這些輔助進(jìn)程發(fā)生問(wèn)題,只是某些功能受到影響,一般不會(huì)導(dǎo)致數(shù)據(jù)庫(kù)實(shí)例崩潰。數(shù)據(jù)字典本講大綱:1、Oracle數(shù)據(jù)字典簡(jiǎn)介2 2、OracleOracle常用數(shù)據(jù)字典常用數(shù)據(jù)字典Oracle數(shù)據(jù)字典簡(jiǎn)介 Oracle數(shù)據(jù)字典的名稱由前綴和后綴組成,使用下劃線“_”連接,其代表的含義如下:(1)DBA_
21、:包含數(shù)據(jù)庫(kù)實(shí)例的所有對(duì)象信息。 (2) V$_:當(dāng)前實(shí)例的動(dòng)態(tài)視圖,包含系統(tǒng)管理和系統(tǒng)優(yōu)化等所使用的視圖。 (3) USER_:記錄用戶的對(duì)象信息。 (4) GV_:分布式環(huán)境下所有實(shí)例的動(dòng)態(tài)視圖,包含系統(tǒng)管理和系統(tǒng)優(yōu)化使用的視圖。 (5) ALL_:記錄用戶的對(duì)象信息機(jī)被授權(quán)訪問(wèn)的對(duì)象信息。Oracle常用數(shù)據(jù)字典數(shù)據(jù)字典名稱數(shù)據(jù)字典名稱說(shuō)說(shuō) 明明dba_tablespaces關(guān)于表空間的信息關(guān)于表空間的信息dba_ts_quotas所有用戶表空間限額所有用戶表空間限額dba_free_space所有表空間中的自由分區(qū)所有表空間中的自由分區(qū)dba_segments描述數(shù)據(jù)庫(kù)中所有段的存儲(chǔ)空
22、間描述數(shù)據(jù)庫(kù)中所有段的存儲(chǔ)空間dba_extents數(shù)據(jù)庫(kù)中所有分區(qū)的信息數(shù)據(jù)庫(kù)中所有分區(qū)的信息dba_tables數(shù)據(jù)庫(kù)中所有數(shù)據(jù)表的描述數(shù)據(jù)庫(kù)中所有數(shù)據(jù)表的描述數(shù)據(jù)字典名稱數(shù)據(jù)字典名稱說(shuō)說(shuō) 明明v$database描述關(guān)于數(shù)據(jù)庫(kù)的相關(guān)信息描述關(guān)于數(shù)據(jù)庫(kù)的相關(guān)信息v$datafile數(shù)據(jù)庫(kù)使用的數(shù)據(jù)文件信息數(shù)據(jù)庫(kù)使用的數(shù)據(jù)文件信息v$log從控制文件中提取有關(guān)重做日志組的信息從控制文件中提取有關(guān)重做日志組的信息v$logfile有關(guān)實(shí)例重置日志組文件名及其位置的信息有關(guān)實(shí)例重置日志組文件名及其位置的信息 SQL*Plus工具主要用來(lái)進(jìn)行數(shù)據(jù)查詢和數(shù)據(jù)處理。利用SQL*Plus可將SQL和Or
23、acle專有的PL/SQL結(jié)合起來(lái)進(jìn)行數(shù)據(jù)查詢和處理。SQL*Plus工具具備以下功能:(1)定義變量,編寫(xiě)SQL語(yǔ)句。(2)插入、修改、刪除、查詢,以及執(zhí)行命令和PL/SQL語(yǔ)句。比如,執(zhí)行show parameter命令。(3)格式化查詢結(jié)構(gòu)、運(yùn)算處理、保存、打印機(jī)輸出等。(4)顯示任何一個(gè)表的字段定義,并實(shí)現(xiàn)與用戶進(jìn)行交互。(5)完成數(shù)據(jù)庫(kù)的幾乎所有管理工作。比如,維護(hù)表空間和數(shù)據(jù)表。(6)運(yùn)行存儲(chǔ)在數(shù)據(jù)庫(kù)中的子程序或包。(7)以sysdba身份登錄數(shù)據(jù)庫(kù)實(shí)例,可以實(shí)現(xiàn)啟動(dòng)/停止數(shù)據(jù)庫(kù)實(shí)例。SQL*Plus與數(shù)據(jù)庫(kù)的交互與數(shù)據(jù)庫(kù)的交互設(shè)置SQL*Plus的運(yùn)行環(huán)境本講大綱:1、簡(jiǎn)介SET
24、命令2 2、使用使用SETSET命令設(shè)置運(yùn)行環(huán)境命令設(shè)置運(yùn)行環(huán)境簡(jiǎn)介SET命令 在Oracle 11g數(shù)據(jù)庫(kù)中,用戶可以使用SET命令來(lái)設(shè)置SQL*Plus的運(yùn)行環(huán)境,SET命令的語(yǔ)法格式為: SET system_variable value 參數(shù)system_variable表示變量名,參數(shù)value表示變量值。1PAGESIZE變量2NEWPAGE變量3LINESIZE變量4PAUSE變量5NUMFORMAT變量使用SET命令設(shè)置運(yùn)行環(huán)境常用SQL*Plus命令本講大綱:1、HELP命令3、SPOOL命令 4、 其它常用命令2 2、DESCRIBEDESCRIBE命令命令HELP命令 H
25、ELP命令的語(yǔ)法形式如下。 HELP|? topic DESCRIBE命令的語(yǔ)法形式如下: describe object_name; describe可以縮寫(xiě)為desc,object_name表示將要查詢的對(duì)象名稱。DESCRIBE命令命令 SPOOL命令的語(yǔ)法格式如下: SPOOL file_name.ext CREATE | REPLACE | APPEND | OFF | OUT 參數(shù)file_name用于指定脫機(jī)文件的名稱,默認(rèn)的文件擴(kuò)展名為L(zhǎng)ST。SPOOL命令其它常用命令1DEFINE命令2SHOW命令3EDIT命令4SAVE命令5GET命令6start和命令格式化查詢結(jié)果本講大
26、綱:1、COLUMN命令2 2、TTITLETTITLE和和BTITLEBTITLE命令命令COLUMN命令 該命令可以實(shí)現(xiàn)格式化查詢結(jié)果、設(shè)置列寬度、重新設(shè)置列標(biāo)題等功能。其語(yǔ)法格式如下:COLUMN column_name | alias | optioncolumn_name:用于指定要設(shè)置的列的名稱。alias:用于指定列的別名,通過(guò)它可以把英文列標(biāo)題設(shè)置為漢字。option:用于指定某個(gè)列的顯示格式,TTITLE和BTITLE命令 TTITLE命令的語(yǔ)法格式如下: TTITLE printspec text|variable . | OFF|ON text:用于設(shè)置輸出結(jié)果的頭標(biāo)題(
27、即報(bào)表頭文字)。 variable:用于在頭標(biāo)題中輸出相應(yīng)的變量值。 OFF:表示禁止打印頭標(biāo)題。 ON:表示允許打印頭標(biāo)題。SQL語(yǔ)言簡(jiǎn)介本講大綱:1、SQL語(yǔ)言的特點(diǎn)3、SQL語(yǔ)言的編寫(xiě)規(guī)則2 2、SQLSQL語(yǔ)言的分類語(yǔ)言的分類SQL語(yǔ)言的特點(diǎn) SQL語(yǔ)言主要有以下特點(diǎn)。(1)集合性SQL可以在高層的數(shù)據(jù)結(jié)構(gòu)上進(jìn)行工作,工作時(shí)不是單條的處理記錄,而對(duì)數(shù)據(jù)進(jìn)程成組的處理。所有SQL語(yǔ)句都接受集合作為輸入,并且返回集合作為輸出,SQL的集合特性允許一條SQL語(yǔ)句的結(jié)果作為另一條SQL語(yǔ)句的輸入。(2)統(tǒng)一性SQL為許多任務(wù)提供了統(tǒng)一的命令,這樣方便用戶學(xué)習(xí)和使用,基本的SQL命令只需很少時(shí)間
28、就能學(xué)會(huì),甚至最高級(jí)的命令也可以在幾天內(nèi)掌握。(3)易于移植性由于所有主要的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)都支持SQL語(yǔ)言,這樣用戶就比較容易將原先使用SQL的技能從一個(gè)RDBMS轉(zhuǎn)到另一個(gè),而且用兼容SQL標(biāo)準(zhǔn)編寫(xiě)的程序都是可以移植的。(1)數(shù)據(jù)查詢語(yǔ)言(DQL)(2)數(shù)據(jù)操縱語(yǔ)言(DML)(3)事務(wù)控制語(yǔ)言(TCL)(4)數(shù)據(jù)定義語(yǔ)言(DDL)(5)數(shù)據(jù)控制語(yǔ)言(DCL) SQL語(yǔ)言的分類SQL語(yǔ)言的編寫(xiě)規(guī)則 SQL關(guān)鍵字不區(qū)分大小寫(xiě),既可以使用大寫(xiě)格式,也可以使用小寫(xiě)格式,或者大小寫(xiě)格式混用。用戶模式本講大綱:1、模式與模式對(duì)象2 2、示例模式、示例模式SCOTTSCOTT模式與模式對(duì)象 模式是一
29、個(gè)數(shù)據(jù)庫(kù)對(duì)象的集合。模式為一個(gè)數(shù)據(jù)庫(kù)用戶所有,并且具有與該用戶相同的名稱,比如,SYSTEM模式、SCOTT模式等。在一個(gè)模式內(nèi)部不可以直接訪問(wèn)其它模式的數(shù)據(jù)庫(kù)對(duì)象,即使在具有訪問(wèn)權(quán)限的情況下,也需要指定模式名稱才可以訪問(wèn)其它模式的數(shù)據(jù)庫(kù)對(duì)象。 模式對(duì)象是由用戶創(chuàng)建的邏輯結(jié)構(gòu),用以存儲(chǔ)或引用數(shù)據(jù)。例如,前面章節(jié)中所講過(guò)的段(比如,表、索引等),以及用戶所擁有的其它非段的的數(shù)據(jù)庫(kù)對(duì)象。這些非段的數(shù)據(jù)庫(kù)對(duì)象通常包括:約束、視圖、同義詞、過(guò)程以及程序包等。那么,簡(jiǎn)單的說(shuō),模式與模式對(duì)象之間的關(guān)系就是擁有與被擁有的關(guān)系,即模式擁有模式對(duì)象;而模式對(duì)象被模式所擁有。 Oracle提供的SCOTT模式的目
30、的,就是為了給用戶提供一些示例表和數(shù)據(jù)來(lái)展示Oracle數(shù)據(jù)庫(kù)的一些特性。SCOTT模式擁有的模式對(duì)象(都是數(shù)據(jù)表)如圖所示。示例模式SCOTT檢索數(shù)據(jù)本講大綱:1、簡(jiǎn)單查詢3、分組查詢 4、排序查詢 5、多表關(guān)聯(lián)查詢 2 2、篩選查詢、篩選查詢 簡(jiǎn)單查詢 只包含SELECT子句和FROM子句的查詢就是簡(jiǎn)單查詢,SELECT子句和FROM子句是SELECT語(yǔ)句的必選項(xiàng),也就是說(shuō)每個(gè)SELECT語(yǔ)句都必須包含這兩個(gè)子句。其中,SELECT子句用于選擇想要在查詢結(jié)果中顯示的列,對(duì)于這些要顯示的列,即可以使用列名來(lái)表示,也可以使用星號(hào)(*)來(lái)表示。在檢索數(shù)據(jù)時(shí),數(shù)據(jù)將按照SELECT子句后面指定的列
31、名的順序來(lái)顯示;如果使用星號(hào)(*),則表示檢索所有的列,這時(shí)數(shù)據(jù)將按照表結(jié)構(gòu)的自然順序來(lái)顯示。 在SELECT語(yǔ)句中,WHERE子句位于FROM子句之后,其語(yǔ)法格式如下: SELECT columns_list FROM table_name WHERE conditional_expression篩選查詢篩選查詢?cè)赟ELECT語(yǔ)句中,GROUP BY子句位于FROM子句之后,其語(yǔ)法格式如下:SELECT columns_listFROM table_nameWHERE conditional_expressionGROUP BY columns_list分組查詢排序查詢 在SELECT語(yǔ)句中
32、,可以使用ORDER BY子句對(duì)檢索的結(jié)果集進(jìn)行排序,該子句位于FROM子句之后,其語(yǔ)法格式如下:SELECT columns_listFROM table_nameWHERE conditional_expressionGROUP BY columns_listORDER BY order_by_expression ASC | DESC ,.n 在實(shí)際的應(yīng)用系統(tǒng)開(kāi)發(fā)中會(huì)設(shè)計(jì)多個(gè)數(shù)據(jù)表,每個(gè)表的信息不是獨(dú)立存在的,而是若干個(gè)表之間的信息存在一定的關(guān)系,這樣當(dāng)用戶查詢某一個(gè)表的信息時(shí),很可能需要查詢關(guān)聯(lián)數(shù)據(jù)表的信息,這就是多表關(guān)聯(lián)查詢。SELECT語(yǔ)句自身是支持多表關(guān)聯(lián)查詢的,多表關(guān)聯(lián)查詢要比
33、單表查詢復(fù)雜得多。在進(jìn)行多表關(guān)聯(lián)查詢時(shí),可能會(huì)涉及到表別名、內(nèi)連接、外連接、自然連接和交叉連接等概念多表關(guān)聯(lián)查詢Oracle常用系統(tǒng)函數(shù)本講大綱:1、字符類函數(shù) 2 2、數(shù)字類函數(shù)、數(shù)字類函數(shù) 3 3、日期和時(shí)間類函數(shù)、日期和時(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í)間類函數(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語(yǔ)句內(nèi)的另外一條SELECT語(yǔ)句,也被稱為內(nèi)查詢或是內(nèi)SELECT語(yǔ)句。在SELECT、INSERT、UPDATE或DELETE命令中允許是一個(gè)表達(dá)式的地方都可以包含子查詢,子查詢甚至可以包含在另外一個(gè)子查詢中。單行子查詢 單行子查詢是指返回一行數(shù)據(jù)的子查詢語(yǔ)句。當(dāng)在WHERE子句中引用單行子查詢時(shí),可以使用單行比較運(yùn)算符(=、=、=和)。多行子查詢 多行子查詢是指返回多行數(shù)據(jù)的子查詢語(yǔ)句。當(dāng)在WHERE子句中使用多行子查詢時(shí),必須使用多行比較符(IN、ANY、ALL)。關(guān)聯(lián)子查詢 在當(dāng)行子
36、查詢和多行子查詢中,內(nèi)查詢和外查詢是分開(kāi)執(zhí)行的,也就是說(shuō)內(nèi)查詢的執(zhí)行與外查詢的執(zhí)行是沒(méi)有關(guān)系的,外查詢僅僅是使用內(nèi)查詢的最終結(jié)果。在一些特殊需求的子查詢中,內(nèi)查詢的執(zhí)行需要借助于外查詢,而外查詢的執(zhí)行又離不開(kāi)內(nèi)查詢的執(zhí)行,這時(shí),內(nèi)查詢和外查詢是相互關(guān)聯(lián)的,這種子查詢就被稱為關(guān)聯(lián)子查詢。操作數(shù)據(jù)庫(kù)本講大綱:1、插入數(shù)據(jù)(INSERT語(yǔ)句) 3、刪除數(shù)據(jù)(刪除數(shù)據(jù)(DELETEDELETE語(yǔ)句和語(yǔ)句和TRUNCATETRUNCATE語(yǔ)句)語(yǔ)句)2 2、更新數(shù)據(jù)(、更新數(shù)據(jù)(UPDATEUPDATE語(yǔ)句)語(yǔ)句)插入數(shù)據(jù)(INSERT語(yǔ)句) INSERT語(yǔ)句的法格式如下: INSERT INTO ta
37、ble_name (column_name1,column_name2)VALUES(express1,express2)UPDATE語(yǔ)句的語(yǔ)法格式如下:UPDATE table_nameSET column_name1=express1,column_name2=express2.| (column_name1,column_name2)=(selectSubquery)WHERE condition更新數(shù)據(jù)(更新數(shù)據(jù)(UPDATE語(yǔ)句)語(yǔ)句)1、DELETE語(yǔ)句語(yǔ)法如下DELETE FROM table_nameWHERE condition2、TRUNCATE語(yǔ)句語(yǔ)法如下:TRUNCAT
38、E TABLE table_name刪除數(shù)據(jù)(DELETE語(yǔ)句和TRUNCATE語(yǔ)句)事務(wù)處理本講大綱:1、事務(wù)的概述2 2、操作事操作事務(wù)務(wù)事務(wù)的概述 事務(wù)包含4種重要的屬性,被統(tǒng)稱為ACID(原子性、一致性、隔離性和持久性),一個(gè)事務(wù)必須通過(guò)ACID。(1)原子性(Atomic):事務(wù)是一個(gè)整體的工作單元,事務(wù)對(duì)數(shù)據(jù)庫(kù)所做的操作要么全部執(zhí)行,要么全部取消。如果某條語(yǔ)句執(zhí)行失敗,則所有語(yǔ)句全部回滾。(2)一致性(ConDemoltent):事務(wù)在完成時(shí),必須使所有的數(shù)據(jù)都保持一致?tīng)顟B(tài)。在相關(guān)數(shù)據(jù)庫(kù)中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。如果事務(wù)成功,則所有數(shù)據(jù)將變?yōu)橐粋€(gè)新
39、的狀態(tài);如果事務(wù)失敗,則所有數(shù)據(jù)將處于開(kāi)始之前的狀態(tài)。(3)隔離性(Isolated):由事務(wù)所作的修改必須與其他事務(wù)所作的修改隔離。事務(wù)查看數(shù)據(jù)時(shí)數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是另一事務(wù)修改它之后的狀態(tài),事務(wù)不會(huì)查看中間狀態(tài)的數(shù)據(jù)。(4)持久性(Durability):當(dāng)事務(wù)提交后,對(duì)數(shù)據(jù)庫(kù)所做的修改就會(huì)永久保存下來(lái)。 Oracle 11g中的事務(wù)是隱式自動(dòng)開(kāi)始的,它不需要用戶顯示地執(zhí)行開(kāi)始事務(wù)語(yǔ)句。但對(duì)于事務(wù)的結(jié)束處理,則需要用戶進(jìn)行指定的操作,通常在以下情況時(shí),Oracle認(rèn)為一個(gè)事務(wù)結(jié)束了。(1)執(zhí)行COMMIT語(yǔ)句提交事務(wù)。(2)指定ROLLBACK語(yǔ)句撤銷
40、事務(wù)。(3)執(zhí)行一條數(shù)據(jù)定義語(yǔ)句,比如,CREATE、DROP或ALTER等語(yǔ)句。如果該語(yǔ)句執(zhí)行成功,那么Oracle系統(tǒng)會(huì)自動(dòng)執(zhí)行COMMIT命令;否則,則Oracle系統(tǒng)會(huì)自動(dòng)執(zhí)行ROLLBACK命令。(4)執(zhí)行一個(gè)數(shù)據(jù)控制命令,比如,GRANT、REVOKE等控制命令,這種操作執(zhí)行完畢,Oracle系統(tǒng)會(huì)自動(dòng)執(zhí)行COMMIT命令。(5)正常地?cái)嚅_(kāi)數(shù)據(jù)庫(kù)的連接、正常地退出SQL*Plus環(huán)境,則Oracle系統(tǒng)會(huì)自動(dòng)執(zhí)行COMMIT命令;否則,則Oracle系統(tǒng)會(huì)自動(dòng)執(zhí)行ROLLBACK命令。操作事務(wù)PL/SQL簡(jiǎn)介本講大綱:1、PL/SQL塊結(jié)構(gòu) 2 2、代碼注釋和標(biāo)示符、代碼注釋和標(biāo)示
41、符 PL/SQL塊結(jié)構(gòu) 標(biāo)準(zhǔn)PL/SQL塊的語(yǔ)法格式如下: DECLARE -聲明部分,可選 BEGIN -執(zhí)行部分,必須 EXCEPTION -異常處理部分,可選 END1單行注釋 單行注釋由連個(gè)連接字符“-”開(kāi)始,后面緊跟著注釋內(nèi)容。2多行注釋 多行注釋由/*開(kāi)頭,由*/結(jié)尾,這個(gè)大多數(shù)編程語(yǔ)言是相同的。3PL/SQL字符集 所有的PL/SQL程序元素(比如,關(guān)鍵字、變量名、常量名等)都是由一些字符序列組合而成的,而這些字符序列中的字符都必須取自PL/SQL語(yǔ)言所允許使用的字符集,那么這些合法的字符集主要包括以下內(nèi)容:u大寫(xiě)和小寫(xiě)字母:A-Z或a-z。u數(shù)字:0-9。u非顯示的字符:制表符
42、、空格和回車。u數(shù)學(xué)符號(hào):+,-,*,/,=等。u間隔符:包括(),?,!,;,:,#,%,$,&等。代碼注釋和標(biāo)示符數(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等。這些類型的變量用來(lái)存儲(chǔ)字符串或字符數(shù)據(jù)。 3日期類型 日期類型只有一個(gè)種即DATE類型,用來(lái)存儲(chǔ)日期和時(shí)間信息,DATE類型的存儲(chǔ)空間是7個(gè)字節(jié),分
43、別使用一個(gè)字節(jié)存儲(chǔ)世紀(jì)、年、月、天、小時(shí)、分鐘和秒。4布爾類型 布爾類型也只有一種即BOOLEAN,主要用于程序的流程控制和業(yè)務(wù)邏輯判斷,其變量值可以是TRUE、FALSE或NULL中的一種。1%TYPE類型 使用%TYPE關(guān)鍵字可以聲明一個(gè)與指定列名稱相同的數(shù)據(jù)類型,它通常緊跟在指定列名的后面。2RECORD類型,語(yǔ)法如下: type record_type is record ( var_member1 data_type not null :=default_value, var_membern data_type not null :=default_value)3%ROWTYPE類型
44、,語(yǔ)法如下: rowVar_name table_name%rowtype;特殊數(shù)據(jù)類型1定義變量 (長(zhǎng)度):=;2定義常量 constant :=;定義變量和常量流程控制語(yǔ)句本講大綱:1、選擇語(yǔ)句2 2、循環(huán)語(yǔ)句、循環(huán)語(yǔ)句 選擇語(yǔ)句1ifthen語(yǔ)句2Ifthenelse語(yǔ)句3ifthenelsif語(yǔ)句4case語(yǔ)句1loop語(yǔ)句loop plsql_sentence;exit when end_condition_ expend loop;2while語(yǔ)句while condition_expression loopplsql_sentence;end loop;3for語(yǔ)句for var
45、iable_ counter_name in reverse lower_limit.upper_limit loopplsql_sentence;end loop;循環(huán)語(yǔ)句循環(huán)語(yǔ)句PL/SQL游標(biāo)本講大綱:1、顯示游標(biāo)2 2、游標(biāo)的屬性游標(biāo)的屬性3 3、隱式游標(biāo)、隱式游標(biāo) 4 4、通過(guò)、通過(guò)forfor語(yǔ)句循環(huán)游標(biāo)語(yǔ)句循環(huán)游標(biāo) 顯示游標(biāo) 顯示游標(biāo)是由用戶聲明和操作的一種游標(biāo),通常用于操作查詢結(jié)果集(即由SELECT語(yǔ)句返回的查詢結(jié)果),使用它處理數(shù)據(jù)的步驟包括:聲明游標(biāo)、打開(kāi)游標(biāo)、讀取游標(biāo)和關(guān)閉游標(biāo)4個(gè)步驟。 游標(biāo)的屬性 無(wú)論是顯式游標(biāo)還是隱式游標(biāo),都具有%found、%notfound、%
46、isopen和%rowcount四個(gè)屬性,通過(guò)這4個(gè)屬性可以獲知SQL語(yǔ)句的執(zhí)行結(jié)果以及該游標(biāo)的狀態(tài)信息。下面對(duì)這4個(gè)屬性的功能進(jìn)行講解。(1)%found:布爾型屬性,如果SQL語(yǔ)句至少影響到一行數(shù)據(jù),則該屬性為true,否則為fasle。(2)%notfound:布爾型屬性,與%found屬性的功能相反。(3)%rowcount:數(shù)字型屬性,返回受SQL語(yǔ)句影響的行數(shù)。(4)%isopen:布爾型屬性,當(dāng)游標(biāo)已經(jīng)打開(kāi)時(shí)返回true,游標(biāo)關(guān)閉時(shí)則為false。隱式游標(biāo) 在執(zhí)行一個(gè)SQL語(yǔ)句時(shí),Oracle會(huì)自動(dòng)創(chuàng)建一個(gè)隱式游標(biāo)。這個(gè)游標(biāo)是內(nèi)存中處理該語(yǔ)句的工作區(qū)域。隱式游標(biāo)主要是處理數(shù)據(jù)操縱
47、語(yǔ)句(如,UPDATE、DELETE語(yǔ)句)的執(zhí)行結(jié)果,當(dāng)然特殊情況下,也可以處理SELECT語(yǔ)句的查詢結(jié)果。由于隱式游標(biāo)也有屬性,當(dāng)使用隱式游標(biāo)的屬性時(shí),需要在屬性前面加上隱式游標(biāo)的默認(rèn)名稱SQL。通過(guò)for語(yǔ)句循環(huán)游標(biāo)(1)在for語(yǔ)句中遍歷隱式游標(biāo)中的數(shù)據(jù)時(shí),通常在關(guān)鍵字“in”的后面提供由SELECT語(yǔ)句檢索的結(jié)果集,在檢索結(jié)果集的過(guò)程中,Oracle系統(tǒng)會(huì)自動(dòng)提供一個(gè)隱式的游標(biāo)sql。 (2)在for語(yǔ)句中遍歷顯式游標(biāo)中的數(shù)據(jù)時(shí),通常在關(guān)鍵字“in”的后面提供游標(biāo)的名稱,其語(yǔ)法格式如下: for var_auto_record in cur_name loop plsqlsentenc
48、e; end loop;PL/SQL異常處理本講大綱:1、預(yù)定義異常 2 2、自定義異常、自定義異常 預(yù)定義異常 當(dāng)PL/SQL程序違反了Oracle系統(tǒng)內(nèi)部規(guī)定的設(shè)計(jì)規(guī)范時(shí),就會(huì)自動(dòng)引發(fā)一個(gè)預(yù)定義的異常,例如,當(dāng)除數(shù)為零時(shí),就會(huì)引發(fā)“ZERO_DIVIED”異常。 系統(tǒng)預(yù)定義異常系統(tǒng)預(yù)定義異常說(shuō)說(shuō) 明明ZERO_DIVIDE除數(shù)為零時(shí)引發(fā)的異常除數(shù)為零時(shí)引發(fā)的異常ACCESS_INTO_NULL企圖為某個(gè)未初始化對(duì)象的屬性賦值企圖為某個(gè)未初始化對(duì)象的屬性賦值COLLECTION_IS_NULL企圖使用未初始化的集合元素企圖使用未初始化的集合元素CURSOR_ALREADY_OPEN企圖再次打
49、開(kāi)一個(gè)已經(jīng)打開(kāi)過(guò)的游標(biāo),但在重新打開(kāi)之前,游標(biāo)未關(guān)企圖再次打開(kāi)一個(gè)已經(jīng)打開(kāi)過(guò)的游標(biāo),但在重新打開(kāi)之前,游標(biāo)未關(guān)閉閉INVALID_CURSOR執(zhí)行一個(gè)非法的游標(biāo)操作,例如,關(guān)閉一個(gè)未打開(kāi)的游標(biāo)執(zhí)行一個(gè)非法的游標(biāo)操作,例如,關(guān)閉一個(gè)未打開(kāi)的游標(biāo)INVALID_NUMBER企圖將一個(gè)字符串轉(zhuǎn)換成一個(gè)無(wú)效的數(shù)字而失敗企圖將一個(gè)字符串轉(zhuǎn)換成一個(gè)無(wú)效的數(shù)字而失敗LOGIN_DENIED企圖使用無(wú)效的用戶名或密碼連接數(shù)據(jù)庫(kù)企圖使用無(wú)效的用戶名或密碼連接數(shù)據(jù)庫(kù)NO_DATA_FOUNDSELECT INTO語(yǔ)句沒(méi)有返回?cái)?shù)據(jù)語(yǔ)句沒(méi)有返回?cái)?shù)據(jù)ROWTYPE_MISMATCH主游標(biāo)變量與主游標(biāo)變量與PL/SQL游
50、標(biāo)變量的返回類型不兼容游標(biāo)變量的返回類型不兼容SELF_IS_NULL使用對(duì)象類型時(shí),使用空對(duì)象調(diào)用其方法使用對(duì)象類型時(shí),使用空對(duì)象調(diào)用其方法自定義異常1錯(cuò)誤編號(hào)異常 錯(cuò)誤號(hào)異常是指在Oracle系統(tǒng)發(fā)生錯(cuò)誤時(shí),系統(tǒng)會(huì)顯示錯(cuò)誤號(hào)和相關(guān)描述信息的異常,雖然直接使用錯(cuò)誤編號(hào)也可以完成異常處理,但錯(cuò)誤編號(hào)較為抽象,不易于用戶理解和記憶,對(duì)于這種異常,首先在PL/SQL塊的聲明部分(DECLARE部分)使用EXCEPTION類型定義一個(gè)異常變量名,然后使用語(yǔ)句PRAGMA EXCEPTION_INIT為“錯(cuò)誤編號(hào)”關(guān)聯(lián)“這個(gè)異常變量名”,接下來(lái)就可以像對(duì)待系統(tǒng)預(yù)定義異常一樣處理了。2業(yè)務(wù)邏輯異常 在實(shí)
51、際的應(yīng)用中,程序開(kāi)發(fā)人員可以根據(jù)具體的業(yè)務(wù)羅規(guī)則自定義一個(gè)異常。這樣,當(dāng)用戶操作違反業(yè)務(wù)邏輯規(guī)則時(shí),就引發(fā)一個(gè)自定義異常,從而中斷程序的正常執(zhí)行并轉(zhuǎn)到自定義的異常處理部分。 但無(wú)論是預(yù)定義異常,還是錯(cuò)誤編號(hào)異常,都是由Oracle系統(tǒng)判斷的錯(cuò)誤,但業(yè)務(wù)邏輯異常是Oracle系統(tǒng)本身是無(wú)法知道的,這樣就需要有一個(gè)引發(fā)異常的機(jī)制,引發(fā)業(yè)務(wù)邏輯異常通常使用RAISE語(yǔ)句來(lái)實(shí)現(xiàn)。當(dāng)引發(fā)一個(gè)異常時(shí),控制就會(huì)轉(zhuǎn)到EXCEPTION異常處理部分執(zhí)行異常處理語(yǔ)句。業(yè)務(wù)邏輯異常首先在DECLARE部分使用EXCEPTION類型聲明一個(gè)異常變量,然后在BEGIN部分根據(jù)一定的義務(wù)邏輯規(guī)則執(zhí)行RAISE語(yǔ)句(在RA
52、ISE關(guān)鍵字后面跟著異常變量名),最后在EXCEPTION部分編寫(xiě)異常處理語(yǔ)句。存儲(chǔ)過(guò)程本講大綱:1、創(chuàng)創(chuàng)建存建存儲(chǔ)過(guò)儲(chǔ)過(guò)程程2 2、存存儲(chǔ)過(guò)儲(chǔ)過(guò)程的程的參數(shù)參數(shù)3 3、ININ參數(shù)參數(shù)的默的默認(rèn)值認(rèn)值創(chuàng)建存儲(chǔ)過(guò)程語(yǔ)法格式如下:create or replace procedure pro_name (parameter1,parameter2) is|asbegin plsql_sentences;exception dowith _ sentences;end pro_name;1IN模式參數(shù)這是一種輸入類型的參數(shù),參數(shù)值由調(diào)用方傳入,并且只能被存儲(chǔ)過(guò)程讀取。(1)指定名稱傳遞指定名稱傳遞
53、是指在向存儲(chǔ)過(guò)程傳遞參數(shù)時(shí)需要指定參數(shù)名稱,即參數(shù)名稱在左側(cè),中間是賦值符號(hào)“=”,右側(cè)是參數(shù)值,其語(yǔ)法格式如下:pro_name(parameter1=value1,parameter2=value2)(2)按位置傳遞指定名稱傳遞參數(shù)雖然直觀易讀,但也有缺點(diǎn),就是參數(shù)過(guò)多時(shí),會(huì)顯得代碼冗長(zhǎng),反而變得不容易閱讀。這樣用戶就可以采取按位置傳遞參數(shù),采用這種方式時(shí),用戶提供的參數(shù)值順序必須與存儲(chǔ)過(guò)程中定義的參數(shù)順序相同。 (3)混合方式傳遞混合方式就是將前兩種方式結(jié)合到一起,這樣就可以兼顧二者的優(yōu)點(diǎn), 2OUT模式參數(shù)這是一種輸出類型的參數(shù),表示這個(gè)參數(shù)在存儲(chǔ)過(guò)程中已經(jīng)被賦值,并且這個(gè)參數(shù)值可以傳
54、遞到當(dāng)前存儲(chǔ)過(guò)程以外的環(huán)境中,關(guān)鍵字out位于參數(shù)名稱之后。 存儲(chǔ)過(guò)程的參數(shù) 前面的IN參數(shù)的值都是在調(diào)用存儲(chǔ)過(guò)程時(shí)傳入的,實(shí)際上,Oracle支持在聲明IN參數(shù)的同時(shí)給其初始化默認(rèn)值,這樣在存儲(chǔ)過(guò)程調(diào)用時(shí),如果沒(méi)有向IN參數(shù)傳入值,則存儲(chǔ)過(guò)程可以使用默認(rèn)值進(jìn)行操作。IN參數(shù)的默認(rèn)值函數(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_ sentence
55、;exception dowith _ sentences;end fun_name; 由于函數(shù)有返回值,所以在調(diào)用函數(shù)時(shí),必須使用一個(gè)變量來(lái)保存函數(shù)的返回值,這樣函數(shù)和這個(gè)變量就組成了一個(gè)賦值表達(dá)式。 調(diào)用函數(shù)觸發(fā)器本講大綱:1、觸發(fā)器簡(jiǎn)介 2 2、語(yǔ)句級(jí)觸發(fā)器、語(yǔ)句級(jí)觸發(fā)器 3 3、行級(jí)別觸發(fā)器、行級(jí)別觸發(fā)器 4 4、替換觸發(fā)器、替換觸發(fā)器 5 5、用戶事件觸發(fā)器、用戶事件觸發(fā)器 觸發(fā)器簡(jiǎn)介語(yǔ)法格式如下:create or replace trigger tri_name before | after | instead of tri_event on table_name | view_
56、name | user_name | db_name for each row when tri_conditionbeginplsql_sentences;end tri_name; 語(yǔ)句級(jí)觸發(fā)器,顧名思義,就是針對(duì)一條DML語(yǔ)句而引起的觸發(fā)器執(zhí)行。在語(yǔ)句級(jí)觸發(fā)器中,不使用for each row子句,也就是說(shuō)無(wú)論數(shù)據(jù)操作影響多少行,觸發(fā)器都只會(huì)執(zhí)行一次。 語(yǔ)句級(jí)觸發(fā)器語(yǔ)句級(jí)觸發(fā)器 不言而喻,行級(jí)觸發(fā)器會(huì)針對(duì)DML操作所影響的每一行數(shù)據(jù)都執(zhí)行一次觸發(fā)器。創(chuàng)建這種觸發(fā)器時(shí),必須在語(yǔ)法中使用for each for這個(gè)選項(xiàng)。使用行級(jí)觸發(fā)器的一個(gè)典型應(yīng)用就是給數(shù)據(jù)表生成主鍵值,下面就來(lái)講解這個(gè)典型
57、應(yīng)用的實(shí)現(xiàn)過(guò)程。行級(jí)別觸發(fā)器行級(jí)別觸發(fā)器 替換觸發(fā)器即instead of觸發(fā)器,它的“觸發(fā)時(shí)機(jī)”關(guān)鍵字是instead of,而不是before或after。與其它類型觸發(fā)器不同是,替換觸發(fā)器定義在視圖(一種數(shù)據(jù)庫(kù)對(duì)象,在后面章節(jié)中會(huì)講解到)上的,而不是定義在表上。由于視圖是由多個(gè)基表連接組成的邏輯結(jié)構(gòu),所以一般不允許用戶進(jìn)行DML操作(如insert、update、delete等操作),這樣當(dāng)用戶為視圖編寫(xiě)“替換觸發(fā)器”后,用戶對(duì)視圖的DML操作實(shí)際上就變成了執(zhí)行觸發(fā)器中的PL/SQL語(yǔ)句塊,這樣就可以通過(guò)在“替換觸發(fā)器”中編寫(xiě)適當(dāng)?shù)拇a對(duì)構(gòu)成視圖的各個(gè)基表進(jìn)行操作。替換觸發(fā)器替換觸發(fā)器
58、用戶事件觸發(fā)器是因進(jìn)行DDL操作或用戶登錄、退出等操作而引起運(yùn)行的一種觸發(fā)器,引起該類型觸發(fā)器運(yùn)行的常見(jiàn)用戶事件包括:CREATE、ALTER、DROP、ANALYZE、COMMENT、GRANT、REVOKE、RENAME、TRUNCATE、SUSPEND、LOGON和LOGOFF等。用戶事件觸發(fā)器用戶事件觸發(fā)器程序包本講大綱:1、程序包的規(guī)范2 2、程序包的主體程序包的主體程序包的規(guī)范 該“規(guī)范”用于規(guī)定在程序包中可以使用哪些變量、類型、游標(biāo)和子程序(指各種命名的PL/SQL塊),需要注意的是:程序包一定要在“包主體”之前被創(chuàng)建,其語(yǔ)法格式如下: create or replace pac
59、kage pack_name is declare_variable; declare_type; declare_cursor; declare_function; declare_ procedure; end pack_name; 與創(chuàng)建“規(guī)范”不同的是,創(chuàng)建“程序包主體”使用CREATE PACKAGE BODY語(yǔ)句,而不是CREATE PACKAGE,這一點(diǎn)需要讀者注意,創(chuàng)建程序包主體的代碼如下:create or replace package body pack_name is inner_variable cursor_body function_title begin fun
60、_plsql; exception dowith _ sentences; end fun_name procedure_title begin pro_plsql; exception dowith _ sentences; end pro_nameend pack_name;程序包的主體管理控制文件本講大綱:1、簡(jiǎn)介控制文件簡(jiǎn)介控制文件 2 2、控制文件的多路復(fù)用、控制文件的多路復(fù)用 3 3、創(chuàng)建控制文件、創(chuàng)建控制文件4 4、備份和恢復(fù)控制文件、備份和恢復(fù)控制文件 5 5、刪除控制文件、刪除控制文件 6 6、查詢控制文件的信息、查詢控制文件的信息 簡(jiǎn)介控制文件 在Oracle數(shù)據(jù)庫(kù)中,控制
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度離婚后財(cái)產(chǎn)分割與共同生活費(fèi)用承擔(dān)協(xié)議
- 2025年度養(yǎng)老服務(wù)機(jī)構(gòu)專用房產(chǎn)租賃協(xié)議
- 二零二五年度貨車運(yùn)輸貨物跟蹤與反饋合同
- 2025年度股份占比協(xié)議書(shū)模板:知識(shí)產(chǎn)權(quán)入股股份占比協(xié)議書(shū)
- 二零二五年度企業(yè)食堂衛(wèi)生安全責(zé)任合同
- 2025年度越野輪車銷售與服務(wù)協(xié)議
- 跨學(xué)科知識(shí)體系的整合與實(shí)踐
- 家庭環(huán)境下的孩子勞動(dòng)習(xí)慣養(yǎng)成教育
- 科技教育在小學(xué)語(yǔ)文教育中的運(yùn)用
- 部編教材《春》教學(xué)設(shè)計(jì)
- 2025年個(gè)人合法二手車買(mǎi)賣(mài)合同(4篇)
- 2025年山西國(guó)際能源集團(tuán)限公司所屬企業(yè)招聘43人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 青海省海北藏族自治州(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)統(tǒng)編版隨堂測(cè)試(上學(xué)期)試卷及答案
- 外研版(三起)小學(xué)英語(yǔ)三年級(jí)下冊(cè)Unit 1 Animal friends Get ready start up 課件
- 江蘇省無(wú)錫市2023-2024學(xué)年高三上學(xué)期期終教學(xué)質(zhì)量調(diào)研測(cè)試語(yǔ)文試題(解析版)
- 銅礦隱蔽致災(zāi)普查治理工作計(jì)劃
- 農(nóng)業(yè)行政執(zhí)法現(xiàn)狀及相關(guān)法律法規(guī)課件
- 測(cè)量管理體系內(nèi)審檢查表
- 班組月度考核評(píng)分表
- 部編版一年級(jí)下冊(cè)《道德與法治》教學(xué)工作計(jì)劃及全冊(cè)教案
- 三重一大事項(xiàng)決策流程
評(píng)論
0/150
提交評(píng)論