Oracle復(fù)習(xí)大綱_第1頁(yè)
Oracle復(fù)習(xí)大綱_第2頁(yè)
Oracle復(fù)習(xí)大綱_第3頁(yè)
Oracle復(fù)習(xí)大綱_第4頁(yè)
Oracle復(fù)習(xí)大綱_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、復(fù)習(xí)大綱² 教材上的所有選擇題第3、5、6、7、8、9、10、13、15章的選擇題。² SQL語(yǔ)言基礎(chǔ)MERGE語(yǔ)句、在FROM子句中使用子查詢、在DDL語(yǔ)句中使用子查詢、使用WITH子句的子查詢。² PL/SQL程序設(shè)計(jì)實(shí)驗(yàn)4(存儲(chǔ)過(guò)程、函數(shù)、包、觸發(fā)器、匿名程序塊)、游標(biāo)。一. Oracle數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)1.Oracle數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)1) 實(shí)例(1) 內(nèi)存結(jié)構(gòu)a) 系統(tǒng)全局區(qū)SGA:數(shù)據(jù)高速緩沖區(qū)、日志緩沖區(qū)、共享池、大型池、Java池、流池等b) 程序全局區(qū)PGA c) 用戶全局區(qū)UGA(2) Oracle進(jìn)程:后臺(tái)進(jìn)程、前臺(tái)進(jìn)程(包括服務(wù)進(jìn)程、用戶進(jìn)程)2

2、) 數(shù)據(jù)庫(kù)(1) 邏輯結(jié)構(gòu):表空間、數(shù)據(jù)段、數(shù)據(jù)區(qū)和數(shù)據(jù)塊(2) 物理結(jié)構(gòu):數(shù)據(jù)文件、控制文件、重做日志文件(日志文件)、歸檔文件、初始化參數(shù)文件、跟蹤文件、口令文件、警告文件、備份文件等2.Oracle數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)1) 表空間TableSpace (最大的邏輯數(shù)據(jù)存儲(chǔ)層次)2) 數(shù)據(jù)段Segment3) 數(shù)據(jù)區(qū)Extent4) 數(shù)據(jù)塊Block(最小的邏輯數(shù)據(jù)存儲(chǔ)層次)3.Oracle數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)1) 數(shù)據(jù)文件2) 控制文件3) 重做日志文件4) 歸檔文件5) 初始化參數(shù)文件6) 跟蹤文件7) 口令文件8) 警告文件9) 備份文件4.Oracle服務(wù) OracleCSService

3、OracleDBControlORCL OracleOraDb10g_home1iSQL*Plus OracleOraDb10g_home1TNSListener OracleServiceORCL 其中,ORCL為Oracle服務(wù)名(SID),Listener為監(jiān)聽程序名5.監(jiān)聽程序配置文件listener.ora和本地Net服務(wù)名配置文件tnsnames.ora1) Oracle客戶端程序Net Configuration Assistant完成的監(jiān)聽程序配置結(jié)果保存的文件名為listener.ora2) 本地Net服務(wù)名配置結(jié)果保存的文件名為tnsnames.ora6.Oracle的主要

4、內(nèi)存區(qū)域系統(tǒng)全局區(qū)SGA、程序全局區(qū)PGA 、用戶全局區(qū)UGA7.Oracle的后臺(tái)進(jìn)程包括處理器監(jiān)視進(jìn)程PMON、系統(tǒng)監(jiān)視器SMON、數(shù)據(jù)庫(kù)寫入器DBWr、日志寫入器LGWR、歸檔器ARCn、檢查點(diǎn)進(jìn)程CKPT等。8.表空間分類1) 系統(tǒng)表空間(1) 系統(tǒng)表空間SYSTEM(2) 輔助系統(tǒng)表空間SYSAUX2) 非系統(tǒng)表空間(1) 撤銷表空間UNDOTBS1(2) 臨時(shí)表空間TEMP(3) 用戶表空間:USERS、EXAMPLE(實(shí)例表空間)3) 大文件表空間、小文件表空間一個(gè)大文件表空間只包含一個(gè)大數(shù)據(jù)文件。9. 關(guān)閉數(shù)據(jù)庫(kù)shutdown1) 正常關(guān)閉:shutdown normal 命

5、令2) 立即關(guān)閉:shutdown immediate命令3) 異常關(guān)閉:shutdown abort命令10.啟動(dòng)數(shù)據(jù)庫(kù)startup1) 正常啟動(dòng):打開一個(gè)現(xiàn)場(chǎng),將數(shù)據(jù)庫(kù)裝入,然后打開數(shù)據(jù)庫(kù)供用戶使用;2) 安裝和非安裝啟動(dòng):(1) 安裝啟動(dòng):選項(xiàng)是MOUNT,只將數(shù)據(jù)庫(kù)裝入現(xiàn)場(chǎng),而不打開數(shù)據(jù)庫(kù)(2) 非安裝啟動(dòng):選項(xiàng)是NOMOUNT,只建立數(shù)據(jù)庫(kù)現(xiàn)場(chǎng),不裝入現(xiàn)場(chǎng),不打開數(shù)據(jù)庫(kù)供用戶使用3) 獨(dú)占和共享啟動(dòng)(1) 獨(dú)占啟動(dòng):選項(xiàng)是EXCLUSIVE,只允許一個(gè)例程使用該數(shù)據(jù)庫(kù)(2) 共享啟動(dòng):選項(xiàng)是SHARED,允許多個(gè)例程使用數(shù)據(jù)庫(kù)(3) 這兩者只在選擇了并行選件時(shí)才有效,它們都裝入數(shù)據(jù)

6、庫(kù)并打開。4) 約束啟動(dòng)選項(xiàng)是RESTRICT,只能為有特殊權(quán)限的數(shù)據(jù)庫(kù)管理員使用。5) 強(qiáng)制啟動(dòng)選項(xiàng)是FORCE6) 帶初始化參數(shù)文件的啟動(dòng)11. Oracle系統(tǒng)的常用管理工具1) SQL*Plus2) SQLPlus Worksheet 3) Enterprise Manager Console(EMC)4) 瀏覽器模式下的管理工具(1) OEM(企業(yè)管理器)(2) iSQL*Plus5) PL/SQL Developer,英宇世紀(jì)公司(Allround Automations)二. 安全管理、grant/revoke1.用戶的類型及職責(zé):1) 超級(jí)用戶(internal、sys):創(chuàng)建

7、一個(gè)新的數(shù)據(jù)庫(kù)、啟動(dòng)和關(guān)閉數(shù)據(jù)庫(kù)、修改數(shù)據(jù)庫(kù)運(yùn)行模式、完成數(shù)據(jù)庫(kù)的備份與恢復(fù)、修改數(shù)據(jù)庫(kù)的結(jié)構(gòu)、創(chuàng)建用戶、權(quán)限管理等2) 數(shù)據(jù)庫(kù)管理員(sys、system):具有DBA角色的用戶,可以執(zhí)行數(shù)據(jù)庫(kù)內(nèi)部的任意操作3) 其它用戶(如scott等):可以進(jìn)行數(shù)據(jù)庫(kù)開發(fā)、創(chuàng)建任何實(shí)體、不具有修改數(shù)據(jù)庫(kù)結(jié)構(gòu)的權(quán)限2. Oracle數(shù)據(jù)庫(kù)初始用戶1) SYS:是數(shù)據(jù)庫(kù)中具有最高權(quán)限的數(shù)據(jù)庫(kù)管理員,可以啟動(dòng)、修改和關(guān)閉數(shù)據(jù)庫(kù),擁有數(shù)據(jù)字典;2) SYSTEM:是一個(gè)輔助的數(shù)據(jù)庫(kù)管理員,不能啟動(dòng)和關(guān)閉數(shù)據(jù)庫(kù),但可以進(jìn)行其他一些管理工作,如創(chuàng)建用戶、刪除用戶等。3) SCOTT:用于測(cè)試網(wǎng)絡(luò)連接的用戶,其口令為

8、tiger。4) PUBLIC:實(shí)質(zhì)上是一個(gè)用戶組,數(shù)據(jù)庫(kù)中任何一個(gè)用戶都屬于該組成員。要為數(shù)據(jù)庫(kù)中每個(gè)用戶都授予某個(gè)權(quán)限,只需把權(quán)限授予PUBLIC就可以了。3. CONNECT、RESOURCE、DBA角色的區(qū)別(1) CONNECT ( 連接角色)只可登錄oracle ,不可以創(chuàng)建數(shù)據(jù)庫(kù)實(shí)體??梢赃M(jìn)行 SELECT ,INSERT,UPDATE和DELETE操作。(2) RESOURCE (資源角色)可以創(chuàng)建實(shí)體(表,視圖等),不可以創(chuàng)建修改數(shù)據(jù)庫(kù)結(jié)構(gòu)??梢赃M(jìn)行CONNECT所做的工作,此外,還可以進(jìn)行CREATE TABLE、CREATE SEQUENCE、CREATE PROCEDU

9、RE、CREATE TRIGGER、CREATE INDEX及CREATE CLUSTER等。(3) DBA(數(shù)據(jù)庫(kù)管理員角色)擁有全部特權(quán),是系統(tǒng)最高權(quán)限,只有它才能修改數(shù)據(jù)庫(kù)結(jié)構(gòu) ??梢赃M(jìn)行除 RESOURCE外,還可以進(jìn)行數(shù)據(jù)庫(kù)的管理操作。4.權(quán)限用戶對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的權(quán)利,包括系統(tǒng)權(quán)限、對(duì)象權(quán)限。5.角色和權(quán)限的關(guān)系權(quán)限和角色都是安全性機(jī)制的內(nèi)容之一。兩者的相同點(diǎn)是都允許用戶執(zhí)行某些操作。不同點(diǎn)是后者是前者的集合。權(quán)限之間不能授予,但是角色之間可以授予。角色還可以擁有口令。因此,使用角色是比使用權(quán)限更高一層的安全管理機(jī)制。6.概要文件的概念Oracle的資源管理是通過(guò)概要文件(prof

10、ile)來(lái)實(shí)現(xiàn)的。概要文件實(shí)際上是一個(gè)具有一定名稱的資源限定集,通過(guò)概要文件為用戶設(shè)置資源限額來(lái)限制用戶對(duì)數(shù)據(jù)庫(kù)或?qū)嵗匈Y源的使用,可以為每類用戶設(shè)置一個(gè)概要文件,而不必在用戶上單獨(dú)設(shè)置。7.修改用戶alter user解鎖UNLOCK/加鎖LOCK選項(xiàng),ALTER USER scott ACCOUNT UNLOCK|LOCK。8.刪除用戶drop user級(jí)聯(lián)刪除選項(xiàng)CASCADE可以同時(shí)刪除該用戶擁有的所有對(duì)象。9.GRANT語(yǔ)句1) 為用戶授予系統(tǒng)權(quán)限,使用WITH ADMIN OPTION選項(xiàng)表示該用戶可以將這種系統(tǒng)權(quán)限轉(zhuǎn)授予其他用戶。格式:GRANT 系統(tǒng)權(quán)限名 TO 用戶名|角色名

11、|PUBLIC WITH ADMIN OPTION2) 為用戶授予對(duì)象權(quán)限,使用WITH GRANT OPTION選項(xiàng)表示該用戶可以將這種對(duì)象權(quán)限轉(zhuǎn)授予其他用戶。格式:GRANT 對(duì)象權(quán)限名(列名) ON 對(duì)象 TO 用戶名|角色名|PUBLIC WITH GRANT OPTION10.權(quán)限有關(guān)的數(shù)據(jù)字典視圖1) USER_SYS_PRIVS查看分配給某個(gè)用戶的系統(tǒng)權(quán)限信息2) USER_TAB_PRIVS_MADE和USER_COL_PRIVS_MADE查看該用戶分配給其他用戶的對(duì)象權(quán)限信息3) USER_TAB_PRIVS_RECD和USER_COL_PRIVS_RECD查看其他用戶分配給

12、該用戶的對(duì)象權(quán)限信息。三. 表1. Oracle數(shù)據(jù)庫(kù)系統(tǒng)支持的表的種類1) 關(guān)系表包括堆表、外部表、索引組織表、臨時(shí)表、分區(qū)表、簇表、散列簇表2) 對(duì)象表3 )XML type 表2.外部表(用戶權(quán)限:CREATE ANY DIRECTORY、CREATE TABLE)的概念外部表是指在Oracle數(shù)據(jù)庫(kù)之外的文件系統(tǒng)中存儲(chǔ)的只讀表,使用外部表,無(wú)須將數(shù)據(jù)復(fù)制到數(shù)據(jù)庫(kù)中并且強(qiáng)制更新,可以讓數(shù)據(jù)依然保留在普通文件中,并且允許數(shù)據(jù)庫(kù)對(duì)其進(jìn)行實(shí)地讀取。因此,外部應(yīng)用可以采用它認(rèn)為合適的方法更新數(shù)據(jù)。應(yīng)該具有 CREATE ANY DIRECTORY 和 CREATE TABLE系統(tǒng)權(quán)限。3.創(chuàng)建表

13、CREATE TABLE的子句ON COMMIT PRESERVE | DELETE選項(xiàng)的作用。ON COMMIT 子句控制臨時(shí)表中數(shù)據(jù)的持續(xù)時(shí)間。其中,DELETE選項(xiàng)表示臨時(shí)表中的數(shù)據(jù)將在事務(wù)結(jié)束時(shí)被刪除,PRESERVE選項(xiàng)表示臨時(shí)表中的數(shù)據(jù)將在會(huì)話結(jié)束時(shí)被刪除。四. SQL語(yǔ)言基礎(chǔ)1. 子查詢的分類和使用規(guī)則按照子查詢的執(zhí)行方式,可以分為相關(guān)子查詢和不相關(guān)子查詢;按照子查詢返回結(jié)果集的特點(diǎn),可以分為單行子查詢,多行子查詢,多列子查詢。使用子查詢的基本規(guī)則是:子查詢必須使用括號(hào)括起來(lái),否則無(wú)法判斷子查詢語(yǔ)句的開始和結(jié)束。子查詢中不能包括Order by子句。子查詢?cè)试S嵌套多層,但是最多嵌

14、套255層。在子查詢中可以使用兩種比較運(yùn)算符:?jiǎn)涡羞\(yùn)算符和多行運(yùn)算符。2. 連接查詢:笛卡爾積、內(nèi)連接、外連接、自連接、交叉連接3. 連接查詢和子查詢?cè)诤芏嗖樵兦闆r下,既可以使用子查詢,也可以使用連接查詢。相對(duì)而言,連接查詢的效率高于對(duì)應(yīng)的子查詢的效率。但是,經(jīng)常情況是連接查詢語(yǔ)句的復(fù)雜程度遠(yuǎn)遠(yuǎn)高于子查詢語(yǔ)句的復(fù)雜程度。如果能夠使用連接查詢完成的操作,應(yīng)該盡可能地使用連接查詢,而不使用子查詢。4. 高級(jí)查詢:集合查詢、層次查詢、情景查詢、分析查詢5. 單行子查詢:內(nèi)層子查詢只返回單行單列值,采用的運(yùn)算符是=。6. 多行子查詢:內(nèi)層子查詢返回多行值,采用的運(yùn)算符包括 IN、ANY 和ALL。7.

15、 TRUNCATE TABLE語(yǔ)句和不帶 WHERE 的 DELETE語(yǔ)句的區(qū)別和聯(lián)系聯(lián)系:兩個(gè)語(yǔ)句功能是一樣的,都是刪除表中的所有數(shù)據(jù);區(qū)別:TRUNCATE TABLE 速度更快,占用的日志更少。1) TRUNCATE TABLE 直接釋放數(shù)據(jù)頁(yè),在事務(wù)日志中只記錄數(shù)據(jù)頁(yè)的釋放;2) DELETE 是一行一行地刪除,在事務(wù)日志中要記錄每一條記錄的刪除。8. 為什么TRUNCATE TABLE語(yǔ)句不能代替無(wú)WHERE的 DELETE語(yǔ)句?1) 要保留標(biāo)識(shí)的情況下不能用 TRUNCATE TABLE,因?yàn)?TRUNCATE TABLE 會(huì)重置標(biāo)識(shí);2) 需要使用觸發(fā)器的情況下不能使用 TRUN

16、CATE TABLE ,它不會(huì)激發(fā)觸發(fā)器;3) 對(duì)于由 FOREIGN KEY 約束引用的表(即主鍵所在的表,不是外鍵所在的表)不能使用 TRUNCATE TABLE;4) 對(duì)于參與了索引視圖的表不能使用 TRUNCATE TABLE ,注意指索引視圖,并非普通視圖。以下9-13為必須掌握的基本SQL語(yǔ)句,9. MERGE語(yǔ)句包括了兩個(gè)數(shù)據(jù)操縱命令,如果合并條件成立則執(zhí)行UPDATE 命令,如果合并條件不成立則執(zhí)行INSERT命令?,F(xiàn)有表source_emp和target_emp,表中數(shù)據(jù)如下。利用source_emp表中的數(shù)據(jù)更新target_emp表中的數(shù)據(jù),對(duì)target_emp表中存在

17、的員工信息進(jìn)行更新,對(duì)不存在的員工進(jìn)行信息插入。 SELECT * FROM source_emp;EMPNO ENAME DEPTNO-100 JOAN 10110 SMITH 20120 TOM 30SELECT * FROM target_emp;EMPNO ENAME DEPTNO-100 MARRY 2020 JACK 40 -合并語(yǔ)句MERGE INTO target_emp t USING source_emp s ON (t.empno=s.empno)WHEN MATCHED THEN UPDATE SET t.ename=s.ename,t.deptno=s.deptnoW

18、HEN NOT MATCHED THEN INSERT VALUES(s.empno,s.ename,s.deptno);-合并語(yǔ)句執(zhí)行后的結(jié)果SELECT * FROM target_emp;EMPNO ENAME DEPTNO-100 JOAN 1020 JACK 40110 SMITH 20120 TOM 30 10. 數(shù)據(jù)復(fù)制語(yǔ)句(將某個(gè)查詢結(jié)果插入到一個(gè)目標(biāo)表中)1) INSERT INTO SELECT語(yǔ)句語(yǔ)句格式:Insert into目標(biāo)表名(column1, column2,.) 子查詢要求目標(biāo)表必須存在,子查詢子句為SELECT語(yǔ)句。2) CREATE TABLE AS語(yǔ)句

19、,利用子查詢創(chuàng)建表及復(fù)制數(shù)據(jù)語(yǔ)句格式:CREATE TABLE NewTable(column1, column2,.) AS 子查詢子查詢子句為SELECT語(yǔ)句。例句見【12.在DDL語(yǔ)句中使用子查詢】11. 在FROM子句中使用子查詢當(dāng)在FROM子句中使用子查詢時(shí),該子查詢被作為視圖對(duì)待,必須為該子查詢指定別名。例1 查詢各個(gè)員工的員工號(hào)、員工名及其所在部門平均工資。SELECT empno,ename,d.avgsal FROM emp,(SELECT deptno,avg(sal) avgsal FROM emp GROUP BY deptno) dWHERE emp.deptno=d

20、.deptno;例2 查詢各個(gè)部門號(hào)、部門名、部門人數(shù)及部門平均工資。SELECT dept.deptno,dname, d.amount,d.avgsal FROM dept, (SELECT deptno,count(*)amount, avg(sal) avgsal FROM emp GROUP BY deptno) d WHERE dept.deptno=d.deptno; 12.在DDL語(yǔ)句中使用子查詢可以在CREATE TABLE和CREATE VIEW語(yǔ)句中使用子查詢來(lái)創(chuàng)建表和視圖。CREATE TABLE emp_subquery AS SELECT empno,ename,s

21、al FROM emp;CREATE VIEW emp_view_subqueryASSELECT * FROM emp WHERE sal>2000;13.使用WITH子句的子查詢?nèi)绻谝粋€(gè)SQL語(yǔ)句中多次使用同一個(gè)子查詢,可以通過(guò)WITH子句給子查詢指定一個(gè)名字,從而可以實(shí)現(xiàn)通過(guò)名字引用該子查詢,而不必每次都完整寫出該子查詢。見例2。例1 查詢?nèi)藬?shù)最多的部門的信息。SELECT * FROM deptWHERE deptno IN (SELECT deptno FROM emp GROUP BY deptno HAVING count(*)>=ALL( SELECT count

22、(*) FROM emp GROUP BY deptno);例2 【例1】中相同的子查詢連續(xù)出現(xiàn)了兩次,因此可以按下列方式編寫查詢語(yǔ)句。WITH deptinfo AS(SELECT deptno,count(*) num FROM emp GROUP BY deptno) SELECT * FROM dept WHERE deptno IN(SELECT deptno FROM deptinfo WHERE num=(SELECT max(num) FROM deptinfo); 五. PL/SQL1.對(duì)象定義:屬性和方法2.集合類型:記錄、可變數(shù)組、PL/SQL表、關(guān)聯(lián)數(shù)組和嵌套表3.嵌套

23、表的概念 嵌套表是能夠在數(shù)據(jù)庫(kù)表的列中存儲(chǔ)的對(duì)象集合。嵌套表與索引表非常類似。它們之間最主要的區(qū)別在于,嵌套表可以存儲(chǔ)在數(shù)據(jù)庫(kù)的列中,而索引表不行。使用嵌套表非常類似于在用戶數(shù)據(jù)庫(kù)的列中存儲(chǔ)一個(gè)記錄數(shù)組。4.控制語(yǔ)句的種類1) 選擇結(jié)構(gòu)(1) IF語(yǔ)句(IFTHENELSEIFELSEEND IF)(2) CASE語(yǔ)句(CASE WHEN.THENEND CASE)2) 循環(huán)結(jié)構(gòu)(1) 簡(jiǎn)單循環(huán)(LOOP.END LOOP)(2) WHILE循環(huán)(WHILELOOPEND LOOP)(3) FOR循環(huán)(FORLOOP.END LOOP)3) 跳轉(zhuǎn)結(jié)構(gòu)(<<標(biāo)號(hào)>>GOT

24、O 標(biāo)號(hào))5.游標(biāo)的概念和分類1) 游標(biāo)的概念游標(biāo)(CURSOR)是Oracle系統(tǒng)在內(nèi)存中開辟的一個(gè)工作區(qū),在其中存放SELECT語(yǔ)句返回的查詢結(jié)果。使用游標(biāo)時(shí),SELECT語(yǔ)句查詢的結(jié)果可以是單條記錄,多條記錄,也可以是零條記錄。游標(biāo)工作區(qū)中,存在著一個(gè)指針(POINTER),在初始狀態(tài)它指向查詢結(jié)果的首記錄。2) 游標(biāo)的分類(1) 顯式游標(biāo)用戶定義、操作,用于處理返回多行數(shù)據(jù)的SELECT查詢。顯式游標(biāo)是必須通過(guò)編寫必要的PL/SQL例程來(lái)進(jìn)行管理的游標(biāo)。顯式游標(biāo)操作步驟:定義游標(biāo)、打開游標(biāo)、從游標(biāo)中獲取數(shù)據(jù)、處理數(shù)據(jù)、關(guān)閉游標(biāo)。(2) 隱式游標(biāo)由系統(tǒng)自動(dòng)進(jìn)行操作,用于處理DML語(yǔ)句和返

25、回單行數(shù)據(jù)的SELECT查詢。一種是在用戶的PL/SQL中使用數(shù)據(jù)操縱語(yǔ)言時(shí),由ORACLE預(yù)先定義的名稱為SQL的隱式游標(biāo)( SQL 游標(biāo) );另一種是CURSOR FOR LOOP的隱式游標(biāo)。6.程序包的概念包是包含一個(gè)或多個(gè)子程序單元(過(guò)程、函數(shù)等)的容器,是一種全局結(jié)構(gòu),類型有數(shù)據(jù)庫(kù)內(nèi)置包和用戶創(chuàng)建的包,由包規(guī)范和包體組成。包規(guī)范聲明了軟件包中所有內(nèi)容,如過(guò)程、函數(shù)、游標(biāo)、類型、異常和變量等,其中過(guò)程和函數(shù)只包括原型信息,不包含任何子程序代碼。 包體中包含了在包頭中的過(guò)程和函數(shù)的實(shí)現(xiàn)代碼。包體中還可以包括在規(guī)范中沒(méi)有聲明的變量、游標(biāo)、類型、異常、過(guò)程和函數(shù),但是它們是私有元素,只能由同

26、一包體中其他過(guò)程和函數(shù)使用。7.觸發(fā)器的概念觸發(fā)器是一種特殊類型的存儲(chǔ)過(guò)程,編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器中。當(dāng)特定事件發(fā)生時(shí),由系統(tǒng)自動(dòng)調(diào)用執(zhí)行,而不能由應(yīng)用程序顯式地調(diào)用執(zhí)行。觸發(fā)器不接受任何參數(shù)。觸發(fā)器主要用于維護(hù)那些通過(guò)創(chuàng)建表時(shí)的聲明約束不可能實(shí)現(xiàn)的復(fù)雜的完整性約束,并對(duì)數(shù)據(jù)庫(kù)中特定事件進(jìn)行監(jiān)控和響應(yīng)。8.觸發(fā)器的分類1) DML觸發(fā)器建立在基本表上的觸發(fā)器,響應(yīng)基本表的INSERT,UPDATE,DELETE操作。DML觸發(fā)器的種類(1) 語(yǔ)句級(jí)前觸發(fā)器(2) 語(yǔ)句級(jí)后觸發(fā)器(3) 行級(jí)前觸發(fā)器(4) 行級(jí)后觸發(fā)器2) INSTEAD OF觸發(fā)器建立在視圖上的觸發(fā)器,響應(yīng)視圖上的INSER

27、T,UPDATE,DELETE操作。3) 系統(tǒng)觸發(fā)器建立在系統(tǒng)或模式上的觸發(fā)器,響應(yīng)系統(tǒng)事件和DDL(CREATE,ALTER,DROP)操作。 9.DML觸發(fā)器的執(zhí)行順序1) 如果存在,則執(zhí)行語(yǔ)句級(jí)前BEFORE觸發(fā)器。2) 對(duì)于受觸發(fā)事件影響的每一個(gè)記錄:(1) 如果存在,則執(zhí)行行級(jí)前觸發(fā)器;(2) 執(zhí)行當(dāng)前記錄的DML操作(觸發(fā)事件);(3) 如果存在,則執(zhí)行行級(jí)后觸發(fā)器。3) 如果存在,則執(zhí)行語(yǔ)句級(jí)后AFTER觸發(fā)器。 10. 存儲(chǔ)過(guò)程和觸發(fā)器的區(qū)別和聯(lián)系聯(lián)系:兩者都是使用PL/SQL編寫,都可以完成指定的任務(wù),觸發(fā)器是一種特殊類型的存儲(chǔ)過(guò)程。區(qū)別:存儲(chǔ)過(guò)程需要手工執(zhí)行,可以有輸入、輸

28、出參數(shù)。觸發(fā)器是自動(dòng)觸發(fā)執(zhí)行的,它包括了觸發(fā)事件、觸發(fā)時(shí)間、觸發(fā)動(dòng)作,它沒(méi)有輸入、輸出參數(shù),但是可以引用數(shù)據(jù)修改前后的狀態(tài)。11.觸發(fā)器中的前映像:old和后映像:new數(shù)組變量:old 和:new 僅適用于行觸發(fā)器for each row,這兩個(gè)變量是系統(tǒng)自動(dòng)提供的數(shù)組變量。:new用來(lái)記錄新插入的值,:old用來(lái)記錄被刪除的值。使用insert語(yǔ)句觸發(fā)只有:new里有值,使用delete語(yǔ)句觸發(fā)只有:old里有值,使用update語(yǔ)句觸發(fā):new和:old里都有值12. 游標(biāo)程序?qū)嵗?) 利用簡(jiǎn)單循環(huán)統(tǒng)計(jì)并輸出各個(gè)部門的平均工資。DECLARE CURSOR c_dept_stat IS

29、SELECT deptno,avg(sal) avgsal FROM emp GROUP BY deptno; v_dept c_dept_stat%ROWTYPE;BEGINOPEN c_dept_stat;LOOP FETCH c_dept_stat INTO v_dept; EXIT WHEN c_dept_stat%NOTFOUND; DBMS_OUTPUT.PUT_LINE(v_dept.deptno|' '| v_dept.avgsal); END LOOP; CLOSE c_dept_stat;END;2) 利用WHILE循環(huán)統(tǒng)計(jì)并輸出各個(gè)部門的平均工資。DECL

30、ARE CURSOR c_dept_stat IS SELECT deptno,avg(sal) avgsal FROM emp GROUP BY deptno; v_dept c_dept_stat%ROWTYPE;BEGIN OPEN c_dept_stat; FETCH c_dept_stat INTO v_dept; WHILE c_dept_stat%FOUND LOOP DBMS_OUTPUT.PUT_LINE(v_dept.deptno|' '| v_dept.avgsal); FETCH c_dept_stat INTO v_dept; END LOOP; CLOSE c_dept_stat;END; 3) 利用FOR循環(huán)統(tǒng)計(jì)并輸出各個(gè)部門的平均工資。DECLARE CURSOR c_dept_stat IS SELECT deptno,avg(sal) avgsal FROM emp GROUP BY deptno;BEGIN FOR v_dept IN c_dept_stat LOOP DBMS_OUTPUT.P

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論