《數(shù)據(jù)庫(kù)高級(jí)應(yīng)用技術(shù)》教案電子教案授課教案整本書教案電子講義_第1頁(yè)
《數(shù)據(jù)庫(kù)高級(jí)應(yīng)用技術(shù)》教案電子教案授課教案整本書教案電子講義_第2頁(yè)
《數(shù)據(jù)庫(kù)高級(jí)應(yīng)用技術(shù)》教案電子教案授課教案整本書教案電子講義_第3頁(yè)
《數(shù)據(jù)庫(kù)高級(jí)應(yīng)用技術(shù)》教案電子教案授課教案整本書教案電子講義_第4頁(yè)
《數(shù)據(jù)庫(kù)高級(jí)應(yīng)用技術(shù)》教案電子教案授課教案整本書教案電子講義_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

課程教案

系部:_____________________

課程代碼:_____________________

課程名稱:_____________________

課程組成員:___________________

第一講

教學(xué)周第1周節(jié)次第1、2節(jié)

章節(jié)內(nèi)容關(guān)系數(shù)據(jù)庫(kù)范式設(shè)計(jì)

授課方式理論課(V)討論課()實(shí)驗(yàn)課(V)習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1.數(shù)據(jù)庫(kù)范式的概念

2.數(shù)據(jù)庫(kù)范式的作用

3.數(shù)據(jù)庫(kù)范式的原理

4.數(shù)據(jù)庫(kù)范式的適用范圍

重點(diǎn):

三大范式的原理標(biāo)準(zhǔn)

難點(diǎn):

數(shù)據(jù)庫(kù)范式在數(shù)據(jù)庫(kù)設(shè)計(jì)中的運(yùn)用

課堂教學(xué)組織:

1、數(shù)據(jù)庫(kù)范式的概念、作用

2、第一范式的標(biāo)準(zhǔn)

?數(shù)據(jù)庫(kù)表中的字段都是單一屬性,

?字段不可再分

?同一列中不能有多個(gè)值

3、第二范式的標(biāo)準(zhǔn)

?滿足第一范式

?每張表均有主鍵

?單字段主鍵

?聯(lián)合主鍵

4、第三范式的標(biāo)準(zhǔn)

?數(shù)據(jù)庫(kù)表滿足第二范式

?數(shù)據(jù)表的非主鍵字段不存在傳遞依賴關(guān)系

?非主鍵字段不能決定其它非主鍵字段

5、數(shù)據(jù)庫(kù)范式應(yīng)用舉例

6、數(shù)據(jù)庫(kù)范式錯(cuò)誤糾正

擬提問題:

在進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)為什么要遵循數(shù)據(jù)庫(kù)范式基本原則。

課后作業(yè):

完成一個(gè)借書模塊的數(shù)據(jù)庫(kù)設(shè)計(jì),需滿足數(shù)據(jù)庫(kù)三大范式,并符合如下的要求:

?讀者人數(shù)眾多、可借圖書眾多

?需維護(hù)讀者的姓名、年齡、職業(yè)、學(xué)歷、地址、電話、是否可借閱等信息

?需維護(hù)圖書的書名、出版社、ISBN號(hào)-、出版日期、價(jià)格等信息

?需維護(hù)出借的日期、到期時(shí)間、是否續(xù)期等信息

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第二講

教學(xué)周第1周節(jié)次第3、4節(jié)

章節(jié)內(nèi)容數(shù)據(jù)庫(kù)關(guān)系模式(D

授課方式理論課(J)討論課()實(shí)驗(yàn)課()習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、關(guān)系數(shù)據(jù)庫(kù)基本概念

2、關(guān)系模式定義

3、關(guān)系模式分解標(biāo)準(zhǔn)

重點(diǎn):

關(guān)系模式分解標(biāo)準(zhǔn)

難點(diǎn):

關(guān)系模式分解的函數(shù)傳遞依賴

課堂教學(xué)組織:

1、關(guān)系數(shù)據(jù)庫(kù)基本概念

?關(guān)系(Relation)

?關(guān)系模式(RelationSchema)

?元組(Tuple)

?碼(Key)

?超碼(SuperKey)

?候選碼(CandidateKey)

?主碼(PrimaryKey)

2、關(guān)系模式定義

關(guān)系模式是由5個(gè)元素來定義,表示為:R(U,D,dom,I,F)

?R為關(guān)系名

?U為組成該關(guān)系的屬性名的集合

?D為U中屬性的域的集合

?dom為屬性集U向域集D的映射

?I為完整約束集合

?F為屬性間數(shù)據(jù)的依賴關(guān)系集合

3、關(guān)系模式分解標(biāo)準(zhǔn)

?分解具有無(wú)損連接性。

?分解要保持函數(shù)依賴性。

?分解既要保持函數(shù)依賴,又要具有無(wú)損連接性。

擬提問題:

關(guān)系與關(guān)系模式有什么聯(lián)系與區(qū)別?

課后作業(yè):

完成教材P14頁(yè)練習(xí)題。

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第三講

教學(xué)周第2周節(jié)次第5、6節(jié)

章節(jié)內(nèi)容數(shù)據(jù)庫(kù)關(guān)系模式(2)

授課方式理論課(V)討論課()實(shí)驗(yàn)課()習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、關(guān)系模式分解原理

2、關(guān)系模式分解算法

重點(diǎn):

無(wú)損連接分解過程

難點(diǎn):

判別多元分解的無(wú)損性

課堂教學(xué)組織:

1、關(guān)系模式分解原理

?分解過程:

規(guī)范化過程中將一個(gè)關(guān)系模式分解為若干個(gè)關(guān)系模式,應(yīng)該保證分解后產(chǎn)生的模式和原

來的模式等價(jià)。將一個(gè)關(guān)系模式R(U,F)分解為若干個(gè)關(guān)系模式R1(U1,F1),R2(U2,F2)…

Rn(Un,Fn)(其中U=U1U2…Un,R1為F在U1上的投影),這意味著相應(yīng)的將存儲(chǔ)在

一個(gè)二維表r中的數(shù)據(jù)分散到若干個(gè)二維表rl,r2,…,rn中(其中rl是r在屬性組U1

上的投影)。

?有損分解

將關(guān)系r投影為rl,r2,???,rn時(shí)并不會(huì)丟失信息,但對(duì)rl,r2,…,rn作自然連接可能會(huì)

產(chǎn)生一些原來r中沒有的元組,從而無(wú)法區(qū)別那些元組是r中原來有的,即數(shù)據(jù)庫(kù)中應(yīng)

該存在的數(shù)據(jù),在這個(gè)意義上丟失了信息。

?無(wú)損分解

關(guān)系模式R(U,F)分解為關(guān)系模式R1(U1,F1),R2(U2,F2)是具有無(wú)損連接性的分解的充

分必要條件是(U1CU2-U1-U2)6F+,或者(U2AUlfU2-U1)eF+

2、關(guān)系模式分解算法

?關(guān)系模式分解的分解算法中有如下幾個(gè)重要引理:

(1)分解具有無(wú)損連接性和分解保持函數(shù)依賴是兩個(gè)互相獨(dú)立的標(biāo)準(zhǔn)。

(2)若要求分解具有無(wú)損連接性,那么模式分解一定可以達(dá)到4NF。

(3)若要求分界保持函數(shù)依賴,那么模式分解可以達(dá)到3NF,但不一定能達(dá)到BCNF。

(4)若要求分解既具有無(wú)損連接性,又保持函數(shù)依賴,則模式分解可以達(dá)到3NF,但

不一定能達(dá)到BCNFo

?判別一個(gè)二元分解的無(wú)損連接性

若F+中至少存在如下函數(shù)依賴中的一個(gè):

(1)(U1AU2)-U1-U2

(2)(U1AU2)-U2-U1

則P={R1<U1>,R2〈U2>}是R的無(wú)損分解。反之也成立。

擬提問題:

如何判別一個(gè)二元分解是否為無(wú)損連接分解?

課后作業(yè):

自己動(dòng)手,重新操作教材P12-13有損分解與無(wú)損分解例子。

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第四講

教學(xué)周第2周節(jié)次第7、8節(jié)

章節(jié)內(nèi)容關(guān)系數(shù)據(jù)庫(kù)事務(wù)基本知識(shí)(1)

授課方式理論課(J)討論課()實(shí)驗(yàn)課()習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、ACID特性

2、事務(wù)模型

3、并發(fā)事務(wù)

重點(diǎn):

事務(wù)模型

難點(diǎn):

并發(fā)事務(wù)控制

課堂教學(xué)組織:

1、ACID特性

?原子性(Atomicity)

?一致性(Consistency)

?隔離性(Isolation)

?持久性(Durability)

2、事務(wù)模型

?顯式事務(wù)

?隱式事務(wù)

?自動(dòng)事務(wù)

3、并發(fā)事務(wù)

當(dāng)多個(gè)用戶對(duì)同一數(shù)據(jù)進(jìn)行操作時(shí),會(huì)產(chǎn)生如下問題:

?丟失更新

?臟讀

?非重復(fù)讀

?幻讀

擬提問題:

如何理解數(shù)據(jù)庫(kù)事務(wù)的ACTD特性?

課后作業(yè):

完成教材P26頁(yè)練習(xí)題(1-6)。

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第五講

教學(xué)周第3周節(jié)次第9、10節(jié)

章節(jié)內(nèi)容關(guān)系數(shù)據(jù)庫(kù)事務(wù)基本知識(shí)(2)

授課方式理論課討論課()實(shí)驗(yàn)課()習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、隔離級(jí)別

2、事務(wù)鎖

重點(diǎn):

事務(wù)鎖機(jī)制

難點(diǎn):

合理設(shè)置事務(wù)隔離級(jí)別

課堂教學(xué)組織:

1、隔離級(jí)別

?未提交讀(readuncommitted)

?提交讀(readcommitted)

?可重復(fù)讀(RepeatableRead)

?可串行化(Serializable)

2、事務(wù)鎖

?共享鎖(S鎖)

共享封鎖是為讀操作設(shè)置的一種封鎖,所以也稱作讀鎖,或簡(jiǎn)稱s鎖

目的是想讀到一組不變的數(shù)據(jù),也就是在讀數(shù)據(jù)的過程中,不允許其他用戶對(duì)該數(shù)據(jù)進(jìn)

行任何修改操作。

這種封鎖可以保證最大的讀并發(fā)性,任何數(shù)量的用戶都可以同時(shí)對(duì)同樣的數(shù)據(jù)施加這種

共享鎖。已經(jīng)實(shí)施共享鎖的表拒絕來自其他事務(wù)的獨(dú)占封鎖和更新封鎖。

?更新鎖(U鎖)

當(dāng)需要對(duì)一個(gè)記錄或一組記錄進(jìn)行更新時(shí)(不包括插入和刪除)使用更新封鎖,該封鎖

的目的是防止其他用戶在同一時(shí)刻修改同一記錄。

已經(jīng)實(shí)施更新封鎖的記錄,拒絕來自其他用戶的任何封鎖。

?排他鎖(X鎖)

排他封鎖也叫獨(dú)占封鎖,

它是為寫(修改、增加、刪除)操作設(shè)置的一種封鎖,也稱為寫封鎖,或簡(jiǎn)稱為X鎖,

這是最嚴(yán)格的一類封鎖。當(dāng)需要對(duì)表實(shí)施插入、刪除或修改操作時(shí),應(yīng)該使用獨(dú)占封鎖。

已經(jīng)實(shí)施獨(dú)占封鎖的表,拒絕來自其他用戶的任何封鎖。

擬提問題:

死鎖產(chǎn)生的原因與條件?

課后作業(yè):

完成教材P26練習(xí)題(7-12)。

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第六講

教學(xué)周第3周節(jié)次第11、12節(jié)

章節(jié)內(nèi)容關(guān)系數(shù)據(jù)庫(kù)事務(wù)操作

授課方式理論課(J)討論課()實(shí)驗(yàn)課(J)習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、隔離級(jí)別設(shè)置

2、手動(dòng)事務(wù)控制操作

3、自動(dòng)事務(wù)控制操作

重點(diǎn):

事務(wù)控制操作

難點(diǎn):

恰當(dāng)使用事務(wù)維護(hù)數(shù)據(jù)準(zhǔn)確性

課堂教學(xué)組織:

1、隔離級(jí)別設(shè)置

查詢事務(wù)隔離級(jí)別

?SELECT@@global.txisolation

設(shè)置事務(wù)隔離級(jí)別

MySQL引擎為:innodb的事務(wù)級(jí)別設(shè)置方法是:

?set+作用域+transactionisolationlevel+隔離級(jí)別

設(shè)置隔離級(jí)別為:未提交讀

setglobaltransactionisolationlevelREADUNCOMMITTED

設(shè)置隔離級(jí)別為:提交讀

setglobaltransactionisolationlevelREADCOMITTED

設(shè)置隔離級(jí)別為:可重復(fù)讀

setglobaltransactionisolationlevelREPEATABLEREAD

設(shè)置隔離級(jí)別為:可串行化

setglobaltransactionisolationlevelSERIALIZABLE

2、事務(wù)控制操作

語(yǔ)法命令

?開啟事務(wù)

方式一

starttransaction

方式二

begin

?提交事務(wù)

commit

?回滾事務(wù)

rollback

擬提問題:

常用的關(guān)系數(shù)據(jù)庫(kù)事務(wù)操作命令有哪些?

課后作業(yè):

按要求建立數(shù)據(jù)庫(kù)表環(huán)境,并用事務(wù)命令進(jìn)行按要求進(jìn)行事務(wù)控制操作。

?建立學(xué)生表、課程表、學(xué)生選課表

/學(xué)生表:學(xué)號(hào)、姓名、年級(jí)、專業(yè)、入學(xué)年份、已修學(xué)分等

/課程表:課程號(hào)、課程名、學(xué)分、課程性質(zhì)(選修、必修)、課程歸屬專業(yè)等

/學(xué)生選課表:學(xué)號(hào)、課程號(hào)、成績(jī)

往以上數(shù)據(jù)表插入若干條記錄

?在數(shù)據(jù)庫(kù)命令行帶事務(wù)(成功/失?。┻M(jìn)行以下操作

/增加一個(gè)學(xué)生數(shù)據(jù)(同時(shí)往三張表寫入對(duì)應(yīng)數(shù)據(jù))

/刪除一個(gè)學(xué)生數(shù)據(jù)(同時(shí)刪除三張表對(duì)應(yīng)的此學(xué)生數(shù)據(jù))

/修改某門課程的性質(zhì),同時(shí)修改此門課程對(duì)應(yīng)的學(xué)生的成績(jī)。

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第七講

教學(xué)周第4周節(jié)次第13、14節(jié)

章節(jié)內(nèi)容存儲(chǔ)過程基本語(yǔ)法(1)

授課方式理論課(J)討論課()實(shí)驗(yàn)課(J)習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、存儲(chǔ)過程的種類

2、存儲(chǔ)過程創(chuàng)建

3、儲(chǔ)過程調(diào)用

重點(diǎn):

存儲(chǔ)過程創(chuàng)建

難點(diǎn):

存儲(chǔ)過程創(chuàng)建語(yǔ)法調(diào)試

課堂教學(xué)組織:

1、存儲(chǔ)過程的種類

?系統(tǒng)存儲(chǔ)過程

?本地存儲(chǔ)過程

?臨時(shí)存儲(chǔ)過程

?遠(yuǎn)程存儲(chǔ)過程

?擴(kuò)展存儲(chǔ)過程

2、存儲(chǔ)過程創(chuàng)建

創(chuàng)建語(yǔ)法格式:

CREATEPROCEDURE存儲(chǔ)過程名([過程參數(shù)[,..」])

BEGIN

過程控制語(yǔ)句(Transaction-SQL)

END

3、儲(chǔ)過程調(diào)用

調(diào)用格式如下:

CALL+存儲(chǔ)過程名+參數(shù)

例如:CALLfirst_proc(100)

擬提問題:

存儲(chǔ)過程與單條SQL語(yǔ)句有什么聯(lián)系與區(qū)別?

課后作業(yè):

自己動(dòng)手,在數(shù)據(jù)庫(kù)客戶端逐一創(chuàng)建、運(yùn)行本次課PPT講稿上的每個(gè)例子。

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第八講

教學(xué)周第4周節(jié)次第15、16節(jié)

章節(jié)內(nèi)容存儲(chǔ)過程基本語(yǔ)法(2)

授課方式理論課(J)討論課()實(shí)驗(yàn)課(習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、IN輸入?yún)?shù)

2、OUT輸出參數(shù)

3、INOUT輸入輸出參數(shù)

重點(diǎn):

全部

難點(diǎn):

根據(jù)場(chǎng)合靈活選擇合適的參數(shù)類型

課堂教學(xué)組織:

1、IN輸入?yún)?shù)

表示該參數(shù)為輸入型參數(shù),只能從外面?zhèn)髦档酱鎯?chǔ)過程內(nèi)部,反過來則無(wú)效,即:在存

儲(chǔ)過程內(nèi)部修改該參數(shù)值將不會(huì)返回到外部。此參數(shù)值必須在調(diào)用存儲(chǔ)過程中指定。

?IN參數(shù)案例:

DELIMITER//

CREATEPROCEDUREdemoinparameter(INpidint,INpscoreaddint)

BEGIN

updateusersetscore=(score+pscoreadd)whereuserid=pid;

END;

//

DELIMITER;

2、OUT輸出參數(shù)

表示該參數(shù)為輸出型參數(shù),只能從存儲(chǔ)過程內(nèi)部傳值到存儲(chǔ)過程外部,反過來則無(wú)效,

即:該值可在存儲(chǔ)過程內(nèi)部被改變,并可返回。此參數(shù)值必須在調(diào)用存儲(chǔ)調(diào)用過程中賦

值。

?OUT參數(shù)案例:

DELIMITER//

CREATEPROCEDUREdemooutparameter(OUTpoutint)

BEGIN

SELECTCOUNT(*)INTOpoutFROMuser;

END

//

DELIMITER;

3.INOUT輸入輸出參數(shù)

表示該參數(shù)為輸入輸出型參數(shù),同時(shí)俱備輸入、輸出功能,既可從外面?zhèn)髦档酱鎯?chǔ)過程

內(nèi)部,也可以從存儲(chǔ)過程內(nèi)部傳值到存儲(chǔ)過程外部。

?INOUT參數(shù)案例:

DELIMITER//

CREATEPROCEDUREdemo_inout_parameter

(INOUTp_inout_numint,INOUTp_inout_strvarchar(50))

BEGIN

DECLAREidintdefault0;

SETid=p_inout_num;

UPDATEuserSETemail=pinoutstrWHEREuserid=id;

SELECTscoreINTOp_inout_numFROMuserWHEREuser_id=id;

SELECTphoneINTOp_inout_strFROMuserWHEREuser_id=id;

END

//

DELIMITER;

擬提問題:

存儲(chǔ)過程的OUT參數(shù)與編程語(yǔ)言中方法的返回值有什么異同?

課后作業(yè):

寫一個(gè)存儲(chǔ)過程,實(shí)現(xiàn)以下功能:

2、把上面USRE表中積分(score)大于60的用戶同步到一個(gè)VIP_USER表中

3、給積分60以下的女性會(huì)員(sex字段值為0),每人加5分

4、返回以上操作以后男會(huì)員的平均分與女會(huì)員的平均分

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第九講

教學(xué)周第5周節(jié)次第17、18節(jié)

章節(jié)內(nèi)容存儲(chǔ)過程基本語(yǔ)法(3)

授課方式理論課(J)討論課()實(shí)驗(yàn)課(J)習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、會(huì)話變量

2、存儲(chǔ)過程變量

重點(diǎn):

存儲(chǔ)過程變量

難點(diǎn):

變量作用范圍

課堂教學(xué)組織:

1、會(huì)話變量

會(huì)話變量也叫用戶變量,可以在一個(gè)客戶端會(huì)話的任何地方聲明,作用域是整個(gè)會(huì)話,

會(huì)話斷開后,會(huì)話變量也就消失。

?會(huì)話變量定義:

會(huì)話變量名以@開頭,使用set直接賦值,在一個(gè)會(huì)話內(nèi),會(huì)話變量只須初始化一次。

例如:SET@num=l

表示聲明了一個(gè)名字叫“@num”的會(huì)話變量,其初始值為1。

2、存儲(chǔ)過程變量

存儲(chǔ)過程變量,只能在存儲(chǔ)過程中使用,存儲(chǔ)過程變量存在于數(shù)據(jù)庫(kù)服務(wù)器上,而不是

在于客戶端。

?存儲(chǔ)過程變量的按如下格式定義:

DECLARE+變量名+數(shù)據(jù)類型+[DEFAULTVALUE]

①DECLARE為聲明存儲(chǔ)過程變量的關(guān)鍵字;

②變量名可以任意,但盡可能要達(dá)到能表意的目的;

③數(shù)據(jù)類型為MySQL的數(shù)據(jù)類型,如:int,float,date,varchar(length);

?[DEFAULTVALUE]為變量的初始值,可有可無(wú),若不指定,則自動(dòng)賦null值。

?存儲(chǔ)過程變量賦值

變量賦值采用關(guān)鍵字SET開頭,后面跟變量名,賦值符號(hào)用等號(hào)“="表示,等號(hào)的

右邊為所需要賦予的值,可以是具體值,也可以是個(gè)表達(dá)式,還可以是個(gè)查詢返回值。

賦值格式:SET變量名=表達(dá)式值

?變量取值

存儲(chǔ)過程變量的取值與其它面向?qū)ο蟮木幊陶Z(yǔ)言一樣,直接調(diào)用變量名就可以取得變

量上存儲(chǔ)的值。

?變量作用范圍:

存儲(chǔ)過程變量為數(shù)據(jù)庫(kù)服務(wù)器上的變量,存儲(chǔ)在服務(wù)器中,但其作用域并不能認(rèn)為是

整個(gè)數(shù)據(jù)庫(kù)服務(wù)器。

存儲(chǔ)過程變量作用域的認(rèn)定按下三個(gè)步驟進(jìn)行:

①.從變量所在位置開始,往上回溯,從最靠近變量的第一個(gè)begin開始;

②.往下延伸,找到與上面begin相匹配的end結(jié)束;

③.內(nèi)部的變量比外部變量在其作用域范圍內(nèi)享有更高的優(yōu)先權(quán)。

擬提問題:

存儲(chǔ)過程變量與會(huì)話的異同?

課后作業(yè):

寫一個(gè)存儲(chǔ)過程,實(shí)現(xiàn)以下功能:

?給本章教材上User表,增加一個(gè)備注字段(mark)

?用DECLARE定義幾個(gè)存儲(chǔ)過程變量

?變量1值為:“不活躍會(huì)員”

?變量2值為:“普通會(huì)員”

?變量3值為:“高級(jí)會(huì)員”

?根據(jù)上面定義的變量填充mark字段

?如果積分在60分以下,填充變量1的值

?如果積分在60-79分,填充變量2的值

?如果積分在80分以上,填充變量3的值

?返回以上操作以后每個(gè)等級(jí)會(huì)員的個(gè)數(shù)

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第十講

教學(xué)周第5周節(jié)次第19、20節(jié)

章節(jié)內(nèi)容存儲(chǔ)過程流程控制TF條件語(yǔ)句

授課方式理論課(J)討論課()實(shí)驗(yàn)課(J)習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、IF語(yǔ)句結(jié)構(gòu)

2、IF條件函數(shù)

重點(diǎn):

IF語(yǔ)句

難點(diǎn):

IF條件函數(shù)靈活運(yùn)用

課堂教學(xué)組織:

1、1F語(yǔ)句結(jié)構(gòu)

IF語(yǔ)句是最普通的條件控制語(yǔ)句,其語(yǔ)法簡(jiǎn)單易懂,在存儲(chǔ)過程代碼中隨處可見,也

是使用頻率最高的條件判斷語(yǔ)句。

?語(yǔ)法格式:if…then…elseif…then…else…endif

/if后面跟判斷條件

/elseif后面跟判斷條件

/then后面跟條件分支語(yǔ)句塊

“可以有多個(gè)elseif…then語(yǔ)句塊,也可以沒有

/else表示以上條件均不滿足時(shí)會(huì)執(zhí)行的語(yǔ)句塊

/整個(gè)條件語(yǔ)句塊的最后面以endif表示結(jié)束

?IF語(yǔ)句案例:

DELIMITER//

CREATEPROCEDUREproc_iCelse(INifLparameterint)

begin

declarecondition_paraint;

setcondition_para=ifLparameter;

ifcondition_para=1then

INSERTINTO'user'

('user_name','pass_word','email、,'phone','sex','score')

VALUES

('ifLuser*,'if_user7if_user@,,188888888,,W,!00);

elseifcondition_para=2then

update'user'setscore=200whereuser_id<=5;

elseifcondition_para=3then

update'user'setscore=400whereuser_id>5;

else

update'user'setscore=1000;

endif;

end;

//

DELIMITER;

2、IF條件函數(shù)

?IF語(yǔ)法格式:

IF(exprl,expr2,expr3)

(1)如果exprl是TRUE則IF()的返回值為expr2

(2)否則返回值則為expr3

(3)IF()的返回值為數(shù)字值或字符串值

如:SELECTUSER_NAME,IF(SCORE>60,'鉆石級(jí)普通級(jí)')AS'等級(jí)'FROMUSER

擬提問題:

存儲(chǔ)過程IF條件控制與編程語(yǔ)言中的IF條件控制語(yǔ)句有哪些異同點(diǎn)?

課后作業(yè):

寫一個(gè)存儲(chǔ)過程,用不同的方法實(shí)現(xiàn)以下功能:

?如果輸入?yún)?shù)值為1,把user表數(shù)據(jù)同步到user_info表;

?如果輸入?yún)?shù)值為2,刪除user_info表數(shù)據(jù);

?如果輸入?yún)?shù)值為3,把user表數(shù)據(jù)同步到user_bak表;

?如果輸入?yún)?shù)值為4,刪除usejbak表數(shù)據(jù);

?如果輸入?yún)?shù)值為5,同時(shí)刪除user_info、user_bak表數(shù)據(jù)。

user、userinfo、userbak三個(gè)表結(jié)構(gòu)相同,參考本章教材上user.sql腳本

?用if…then…elseif…then…else語(yǔ)句實(shí)現(xiàn)

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第十一講

教學(xué)周第6周節(jié)次第21、22節(jié)

章節(jié)內(nèi)容存儲(chǔ)過程流程控制-CASE條件語(yǔ)句

授課方式理論課(J)討論課()實(shí)驗(yàn)課(J)習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、CASE語(yǔ)句結(jié)構(gòu)

2、SELECT語(yǔ)句中CASE語(yǔ)法

重點(diǎn):

CASE語(yǔ)句結(jié)構(gòu)

難點(diǎn):

SELECT語(yǔ)句中CASE語(yǔ)法

課堂教學(xué)組織:

1、CASE語(yǔ)句結(jié)構(gòu)

CASE語(yǔ)句靈活性非常高,不但可以用在存儲(chǔ)過程中,也可以用在單個(gè)的SQL語(yǔ)句中

作條件選擇。

?語(yǔ)法格式:case…when…then…else

/case后面跟條件變量

/when后面跟條件值

/then后面跟條件分支語(yǔ)句塊

/可以有多個(gè)when…then語(yǔ)句塊,也可以只有有一個(gè)

/else表示以上條件均不滿足時(shí)會(huì)執(zhí)行的語(yǔ)句塊

/整個(gè)條件語(yǔ)句塊最后面以endcase表示結(jié)束

?CASE語(yǔ)句案例:

DELIMITER//

CREATEPROCEDUREproc_case_when(INcase_parameterint)

begin

declarecondition_paraint;

setcondition_para=case_parameter;

casecondition_para

when1then

INSERTINTO'user'

('user_name','pass_word'email'phone'sex'score')

VALUES

('case_user7case_userVcase_user@',7777777701,200);

when2then

update'user'setscore=300whereuser_id<=5;

when3then

update'user'setscore=600whereuser_id>5;

else

update'user'setscore=2000;

endcase;

end;

//

DELIMITER;

2、單個(gè)SQL語(yǔ)句CASE語(yǔ)法格式:

/SELECTCASEWHENA條件THEN字段1WHENB條件THEN字段2

ELSE字段0ENDfromtb

擬提問題:

存儲(chǔ)過程CASE條件控制與編程語(yǔ)言中的哪種條件控制語(yǔ)句非常類似?

課后作業(yè):

寫一個(gè)存儲(chǔ)過程,用不同的方法實(shí)現(xiàn)以下功能:

?如果輸入?yún)?shù)值為1,把user表數(shù)據(jù)同步到user_info表;

?如果輸入?yún)?shù)值為2,刪除usejinfo表數(shù)據(jù);

?如果輸入?yún)?shù)值為3,把user表數(shù)據(jù)同步到user_bak表;

?如果輸入?yún)?shù)值為4,刪除usejbak表數(shù)據(jù);

?如果輸入?yún)?shù)值為5,同時(shí)刪除user_info、user_bak表數(shù)據(jù)。

?user、user_info、user_bak三個(gè)表結(jié)構(gòu)相同,參考本章教材上user.sql腳本

?用case…when…then…else語(yǔ)句實(shí)現(xiàn)

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第十二講

教學(xué)周第6周節(jié)次第23、24節(jié)

章節(jié)內(nèi)容存儲(chǔ)過程流程控制-WHILE循環(huán)語(yǔ)句

授課方式理論課(J)討論課()實(shí)驗(yàn)課(J)習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、WHILE語(yǔ)句結(jié)構(gòu)

重點(diǎn):

WHILE語(yǔ)句

難點(diǎn):

WHILE循環(huán)語(yǔ)句的使用場(chǎng)景

課堂教學(xué)組織:

1、循環(huán)語(yǔ)句的使用場(chǎng)景

存儲(chǔ)過程中需要重復(fù)執(zhí)行某些代碼語(yǔ)句,執(zhí)行這些語(yǔ)句就需要考慮用循環(huán)控制語(yǔ)句。循

環(huán)控制語(yǔ)句是由循環(huán)體及循環(huán)的終止條件兩部分組成的,被重復(fù)執(zhí)行的語(yǔ)句稱為循環(huán)

體,循環(huán)的終止條件一旦出現(xiàn),程序流程就會(huì)跨出循環(huán)體。

2、WHILE語(yǔ)句結(jié)構(gòu)

?WHILE語(yǔ)法

/語(yǔ)法格式:WHILE-DO

/WHILE后面跟條件表達(dá)式

/DO后面跟條件分支語(yǔ)句塊

/整個(gè)條件語(yǔ)句塊最后面以ENDWHILE表示結(jié)束

?WHILE語(yǔ)句案例

DELIMITER//

CREATEPROCEDUREproc_while_do()

begin

declareaint;

seta=0;

whilea<100do

INSERTINTO'user'

('user_name','pass_word','email','phone','sex','score')

VALUES

(tase-user'/case-user1,'case_user@',7777777,,,0\a);

seta=a+1;

endwhile;

end;

//

DELIMITER;

擬提問題:

WHILE語(yǔ)句與編程語(yǔ)言中WHILE語(yǔ)句有何區(qū)別?

課后作業(yè):

寫一個(gè)存儲(chǔ)過程,用不同的方法實(shí)現(xiàn)以下功能:

?往User_Info表、User_Bak表各插入500條記錄

?User_Info>User_Bak表與User表結(jié)構(gòu)相同,參考本章教材上user.sql腳本

?用while…do循環(huán)語(yǔ)句實(shí)現(xiàn)

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第十三講

教學(xué)周第7周節(jié)次第25、26節(jié)

章節(jié)內(nèi)容存儲(chǔ)過程流程控制-LOOP循環(huán)語(yǔ)句

授課方式理論課(J)討論課()實(shí)驗(yàn)課(J)習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、LOOP語(yǔ)句結(jié)構(gòu)

重點(diǎn):

LOOP語(yǔ)句

難點(diǎn):

LOOP循環(huán)語(yǔ)句的使用場(chǎng)景

課堂教學(xué)組織:

1、循環(huán)語(yǔ)句的使用場(chǎng)景

存儲(chǔ)過程中需要重復(fù)執(zhí)行某些代碼語(yǔ)句,執(zhí)行這些語(yǔ)句就需要考慮用循環(huán)控制語(yǔ)句。循

環(huán)控制語(yǔ)句是由循環(huán)體及循環(huán)的終止條件兩部分組成的,被重復(fù)執(zhí)行的語(yǔ)句稱為循環(huán)

體,循環(huán)的終止條件一旦出現(xiàn),程序流程就會(huì)跨出循環(huán)體。

2、LOOP語(yǔ)句

?LOOP語(yǔ)法

/語(yǔ)法格式:LOOP-LEAVE

/LOOP循環(huán)不需要初始條件

/LOOP循環(huán)格式:循環(huán)標(biāo)識(shí)+:+LOOP

/不需要結(jié)束條件,LEAVE語(yǔ)句即表示跳出循環(huán)

/LEAVE的格式是:LEAVE+循環(huán)標(biāo)識(shí)

/整個(gè)條件語(yǔ)句塊最后面以ENDLOOP表示結(jié)束

?LOOP語(yǔ)句案例

DELIMITER//

CREATEPROCEDUREprocJoop()

begin

declarecint;

setc=0;

LOOP_LABLE:loop

INSERTINTO'user、

('user_name\'pass_word\'emair/phone\'sex\'score')

VALUES

('loop_user','loop_user',,loop_user@','22222222,/0,,c);

setc=c+1;

ifc>=400then

leaveLOOP_LABLE;

endif;

endloop;

end;

//

DELIMITER;

擬提問題:

LOOP語(yǔ)句與WHILE語(yǔ)句有何區(qū)別?

課后作業(yè):

寫一個(gè)存儲(chǔ)過程,用不同的方法實(shí)現(xiàn)以下功能:

?往User_Info表、User_Bak表各插入500條記錄

?User_Info、User_Bak表與User表結(jié)構(gòu)相同,參考本章教材上user.sql腳本

?用loop循環(huán)語(yǔ)句實(shí)現(xiàn)

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第十四講

教學(xué)周第7周節(jié)次第27、28節(jié)

章節(jié)內(nèi)容存儲(chǔ)過程流程控制-REPEAT循環(huán)語(yǔ)句

授課方式理論課(J)討論課()實(shí)驗(yàn)課(J)習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、REPEAT語(yǔ)句結(jié)構(gòu)

重點(diǎn):

REPEAT語(yǔ)句

難點(diǎn):

REPEAT語(yǔ)句的跳出循環(huán)條件

課堂教學(xué)組織:

1、循環(huán)語(yǔ)句的使用場(chǎng)景

存儲(chǔ)過程中需要重復(fù)執(zhí)行某些代碼語(yǔ)句,執(zhí)行這些語(yǔ)句就需要考慮用循環(huán)控制語(yǔ)句。循

環(huán)控制語(yǔ)句是由循環(huán)體及循環(huán)的終止條件兩部分組成的,被重復(fù)執(zhí)行的語(yǔ)句稱為循環(huán)

體,循環(huán)的終止條件一旦出現(xiàn),程序流程就會(huì)跨出循環(huán)體。

2、REPEAT語(yǔ)句

?REPEAT語(yǔ)法

/語(yǔ)法格式:REPEAT-UNTIL

/UNTIL后面跟條件表達(dá)式

/REPEAT后面跟條件分支語(yǔ)句塊

/整個(gè)條件語(yǔ)句塊最后面以ENDREPEAT表示結(jié)束

/先執(zhí)行REPEAT操作后檢查UNTIL條件語(yǔ)句,而WHILE則是執(zhí)行前進(jìn)行檢

查。

?REPEAT語(yǔ)句案例

DELIMITER//

CREATEPROCEDUREproc_repeat_until()

begin

declarebint;

setb=0;

repeat

INSERTINTO'user、

('user_name','pass_word','email','phone','sex','score')

VALUES

CrepeaCuserVrepeaCusef/repeaCuserCaJ'/l111l','0',b);

setb=b+1;

untilb>=200

endrepeat;

end;

//

DELIMITER;

擬提問題:

REPEAT語(yǔ)句與WHILE語(yǔ)句有何異同?

課后作業(yè):

寫一個(gè)存儲(chǔ)過程,用不同的方法實(shí)現(xiàn)以下功能:

?往User_Info表、User_Bak表各插入500條記錄

?User_Info>User_Bak表與User表結(jié)構(gòu)相同,參考本章教材上user.sql腳本

?用repeat循環(huán)語(yǔ)句實(shí)現(xiàn)

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第十五講

教學(xué)周第8周節(jié)次第29、30節(jié)

章節(jié)內(nèi)容存儲(chǔ)過程流程控制-注釋語(yǔ)句與函數(shù)

授課方式理論課(J)討論課()實(shí)驗(yàn)課(J)習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、注釋語(yǔ)句

2、數(shù)據(jù)庫(kù)函數(shù)

重點(diǎn):

注釋語(yǔ)句

難點(diǎn):

靈活運(yùn)用數(shù)據(jù)庫(kù)函數(shù)

課堂教學(xué)組織:

1、注釋語(yǔ)句

存儲(chǔ)過程(MySQL)有兩種風(fēng)格的注釋形式,如下:

?雙模杠:

+空格

該風(fēng)格一般用于單行注釋

如:—DECLAREmypassCHAR(IO);

?編程風(fēng)格:

/*...*/

一般用于多行注釋

如:/*SETmystr='birds';*/

2、數(shù)據(jù)庫(kù)函數(shù)

開發(fā)人員常用使用的數(shù)據(jù)庫(kù)函數(shù)有三種類型:字符串類型函數(shù)、數(shù)學(xué)類型函數(shù)、日期類

型函數(shù)

?字符串類型函數(shù)

LCASE(string)

轉(zhuǎn)換成小寫

UCASE(string)

轉(zhuǎn)換成大寫

REPLACE(str,search_str,replace_str)

在str中用replace_str替換search_str

SUBSTRING(str,pos,length)

從str的pos位置開始,取length個(gè)字符,pos從1開始

?數(shù)學(xué)類函數(shù)

ABS(number)

絕對(duì)值

MOD(numeratordenominator)

求余

SQRT(number)

開平方

RAND()

隨機(jī)數(shù)

?日期類函數(shù)

CURRENT_DATE()

取得當(dāng)前日期,只包含:年、月、日

CURRENT_TIME()

取得當(dāng)前時(shí)間,只包含:時(shí)、分、秒

NOW()

取得當(dāng)前時(shí)間,包含:年、月、日、時(shí)、分、秒

擬提問題:

存儲(chǔ)過程的注釋語(yǔ)句與編程語(yǔ)言中的注釋語(yǔ)句有何異同?

課后作業(yè):

完成教材P59練習(xí)題

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第十六講

教學(xué)周第8周節(jié)次第31、32節(jié)

章節(jié)內(nèi)容存儲(chǔ)過程-游標(biāo)

授課方式理論課(J)討論課()實(shí)驗(yàn)課(J)習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、游標(biāo)的作用

2、游標(biāo)的屬性

3、定義游標(biāo)

4、使用游標(biāo)

重點(diǎn):

游標(biāo)的使用過程

難點(diǎn):

NOTFOUND條件處理函數(shù)

課堂教學(xué)組織:

1、游標(biāo)的作用及屬性

?游標(biāo)的作用是:

對(duì)查詢數(shù)據(jù)庫(kù)所返回的記錄進(jìn)行遍歷

?游標(biāo)如下屬性:

游標(biāo)是只讀的,也就是不能更新它

游標(biāo)是不能滾動(dòng)的,也就是只能在一個(gè)方向上進(jìn)行遍歷,不能在記錄之間隨意進(jìn)退,

不能跳過某些記錄

避免在已經(jīng)打開游標(biāo)的表上更新數(shù)據(jù)

2、聲明游標(biāo)

?語(yǔ)法格式:DECLARE+游標(biāo)名+CURSORFOR+SELECT語(yǔ)句

DECLARE為聲明游標(biāo)的關(guān)鍵字,后面跟游標(biāo)的名稱,CURSORFOR表示游標(biāo)要操作

的數(shù)據(jù)結(jié)果集,后面跟一條數(shù)據(jù)庫(kù)的SELECT檢索語(yǔ)句。例如,下面語(yǔ)句聲明了一個(gè)

叫mycoursor的游標(biāo):

DECLAREmycoursorCURSORFORselectuser_name,passwordfromuser

3、打開游標(biāo)

?語(yǔ)法格式:OPEN+游標(biāo)名

OPEN為打開游標(biāo)的關(guān)鍵字,在使用游標(biāo)前,先要把游標(biāo)打開,才能進(jìn)行其它的操作。

例如,下面語(yǔ)句打開了一個(gè)叫mycoursor的游標(biāo):

OPENmycoursor

4、操作游標(biāo)

?語(yǔ)法格式:FETCH+游標(biāo)名+INTO+變量列表

FETCH為移動(dòng)游標(biāo)的關(guān)鍵字,每調(diào)用一次,游標(biāo)指針往下移動(dòng)一條記錄。FETCH后

面跟游標(biāo)的名稱,表示要操作的是那個(gè)游標(biāo),關(guān)鍵字INTO表示把取得數(shù)據(jù)裝到本地,

后面跟一系列的本地變量列表。例如,下面的語(yǔ)句表示把mycoursor游標(biāo)的一行記錄

裝進(jìn)my_name、my_pwd變量,my_name、my_pwd兩個(gè)變量需提前定義好。

FETCHmycoursorINTOmy_name,my_pwd

5、關(guān)閉游標(biāo)

?語(yǔ)法格式:CLOSE+游標(biāo)名

CLOSE為關(guān)閉游標(biāo)的關(guān)鍵字,后面跟游標(biāo)的名稱,在游標(biāo)使用完畢后,需要把游標(biāo)關(guān)

閉,以釋放游標(biāo)所占據(jù)的資源。例如,下面語(yǔ)句關(guān)閉了一個(gè)叫mycoursor的游標(biāo):

6、NOTFOUND條件處理函數(shù)

為了避免游標(biāo)到達(dá)記錄的末尾時(shí)避免出現(xiàn)“nodatatofetch”這樣的錯(cuò)誤,需要定義一

個(gè):NOTFOUND條件處理函數(shù)。

?語(yǔ)句格式:

DECLARECONTINUEHANDLERFORNOTFOUND+需要執(zhí)行的語(yǔ)句

擬提問題:

使用游標(biāo)有什么利弊?

課后作業(yè):

參考本章教材的student.sql腳本創(chuàng)建表環(huán)境,然后按要求實(shí)現(xiàn)以下功能:

?用存儲(chǔ)過程及游標(biāo)為student_info表統(tǒng)計(jì)各個(gè)學(xué)生總分(total)字段值

?總分=數(shù)學(xué)成績(jī)+語(yǔ)文成績(jī)+音樂成績(jī)+歷史成績(jī)

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第十七講

教學(xué)周第9周節(jié)次第33、34節(jié)

章節(jié)內(nèi)容存儲(chǔ)過程-實(shí)驗(yàn)課

授課方式理論課()討論課()實(shí)驗(yàn)課(J)習(xí)題課(J)其他()

主要內(nèi)容與教學(xué)目的:

1、參數(shù)類型

2、變量定義

3、條件選擇分支結(jié)構(gòu)

4、循環(huán)控制結(jié)構(gòu)

重點(diǎn):

條件選擇分支結(jié)構(gòu)

循環(huán)控制結(jié)構(gòu)

難點(diǎn):

SQL語(yǔ)句的熟練運(yùn)用

課堂教學(xué)組織:

1、任務(wù)一

參考教材orderl.sqkorder2.sql腳本創(chuàng)建數(shù)據(jù)表環(huán)境,用存儲(chǔ)過程對(duì)商品銷售明細(xì)表

(order_detail)作如下統(tǒng)計(jì)操作:

?按月統(tǒng)計(jì)出7、8月份的銷售金額

?把數(shù)據(jù)匯總到月銷售匯總表(order_month)

?按商品類型統(tǒng)計(jì)出各種類型商品銷售金額

?把數(shù)據(jù)匯總到類型銷售匯總表(order_total_type)

?按月份及商品類型統(tǒng)計(jì)出7、8月份各種類型商品銷售金額

?把數(shù)據(jù)匯總到月類型銷售匯總表(order_total_type_month)

數(shù)據(jù)遷移參考語(yǔ)句:

insertintonew_table(columnl,column2)selectcolumn1,column?fromold_table

2、任務(wù)二

用存儲(chǔ)過程實(shí)現(xiàn)以下功能

?創(chuàng)建一個(gè)業(yè)務(wù)表

/創(chuàng)建表前先判斷此表是否存在,如果存在先刪除

/字段滿足如下要求

/ID自增

/業(yè)務(wù)名稱字段為字符串類型

/訂閱時(shí)間字段為日期類型

/收費(fèi)方式字段(0:按流量收取、1:按小時(shí)收、2:按日收、3:按月收、4:按年收)

/是否生效字段(0:未生效、1:已生效)

?用循環(huán)往業(yè)務(wù)表插入1000條記錄

?按ID字段排序(升序)檢索出251-300行業(yè)務(wù)數(shù)據(jù)

/收費(fèi)方式字段顯示

/“按流量收取”或“按小時(shí)收取”或“按日收取”或“按年收取”

/是否生效字段顯示

/“未生效”或“已生效”

3、任務(wù)三

參考教材course.sql腳本創(chuàng)建表環(huán)境,然后按要求實(shí)現(xiàn)以下功能:

?用存儲(chǔ)過程統(tǒng)計(jì)各個(gè)學(xué)生是否達(dá)到最低修讀要求:

/若course_student表中成績(jī)字段(course_score)大于60分,則學(xué)生取得該門課

程學(xué)分

,每門課程的學(xué)分(credit)在course表中可查詢到

/若某學(xué)生的所取得的全部學(xué)分大于7分,則該學(xué)生達(dá)到最低修學(xué)要求,在

student表的mark字段標(biāo)注“合格”,否則標(biāo)注“不合格”

擬提問題:

無(wú)

課后作業(yè):

自己動(dòng)手,在數(shù)據(jù)庫(kù)客戶端逐一創(chuàng)建、運(yùn)行本次實(shí)驗(yàn)課的每個(gè)例子。

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第十八講

教學(xué)周第9周節(jié)次第35、36節(jié)

章節(jié)內(nèi)容觸發(fā)器基本語(yǔ)法(1)

授課方式理論課(J)討論課()實(shí)驗(yàn)課()習(xí)題課()其他()

主要內(nèi)容與教學(xué)目的:

1、觸發(fā)器作用

2、觸發(fā)器原理

3、觸發(fā)器語(yǔ)法

重點(diǎn):

觸發(fā)器語(yǔ)法

難點(diǎn):

觸發(fā)器臨時(shí)表

課堂教學(xué)組織:

I、觸發(fā)器作用

?數(shù)據(jù)安全

/可以以基于時(shí)間限制用戶的操作

/可以基于數(shù)據(jù)庫(kù)中的數(shù)據(jù)限制用戶的操作

?數(shù)據(jù)審計(jì)

/審計(jì)用戶操作數(shù)據(jù)庫(kù)的語(yǔ)句

/把用戶對(duì)數(shù)據(jù)庫(kù)的更新寫入審計(jì)表

?數(shù)據(jù)約束

/實(shí)現(xiàn)數(shù)據(jù)完整性檢查和約束

/提供可變的缺省值

?數(shù)據(jù)連環(huán)更新

/修改或刪除時(shí)級(jí)聯(lián)修改或刪除其它表中的與之匹配的行

/修改或刪除時(shí)把其它表中與之匹配的行設(shè)成NULL值

/修改或刪除時(shí)把其它表中與之匹配的行級(jí)聯(lián)設(shè)成缺省值

2、觸發(fā)器原理

觸發(fā)器具有強(qiáng)大的功能,每個(gè)觸發(fā)器有兩個(gè)特殊的表,分別為:插入表和刪除表,有

以下幾個(gè)特點(diǎn):

(1)這兩個(gè)表是邏輯表,并且這兩個(gè)表是由系統(tǒng)管理的,存儲(chǔ)在內(nèi)存中,不是存儲(chǔ)在

數(shù)據(jù)庫(kù)中,因此不允許用戶直接對(duì)其修改。

(2)這兩個(gè)表的結(jié)構(gòu)總是與被該觸發(fā)器作用的表有相同的表結(jié)構(gòu)。

(3)這兩個(gè)表是動(dòng)態(tài)駐留在內(nèi)存中的,當(dāng)觸發(fā)器工作完成,這兩個(gè)表也被刪除。這兩

個(gè)表主要保存因用戶操作而被影響到的原數(shù)據(jù)值或新數(shù)據(jù)值。

(4)這兩個(gè)表是只讀的,且只在觸發(fā)器內(nèi)部可讀,即用戶不能向這兩個(gè)表寫入內(nèi)容,

但可以在觸發(fā)器中引用表中的數(shù)據(jù)。

3、觸發(fā)器語(yǔ)法:

?創(chuàng)建語(yǔ)法格式:

CREATETRIGGER+觸發(fā)器名稱+觸發(fā)時(shí)間點(diǎn)+觸發(fā)事件+ON+表名+FOR

EACHROW

BEGIN

END

觸發(fā)時(shí)間點(diǎn):

BEFORE或AFTER

指明是在觸發(fā)事件之前還是之后執(zhí)行

觸發(fā)事件:

INSERT,UPDATE、DELETE事件

如,以下語(yǔ)句創(chuàng)建一個(gè)名字叫:upd_check的觸發(fā)器,其在對(duì)account表作更新

(UPDATE)操作之前(BEFORE)自動(dòng)觸發(fā)。

CREATETRIGGERupd.checkBEFOREUPDATEONaccountFOREACHROW

BEGIN

END

?刪除語(yǔ)法格式:

DROPTRIGGER+觸發(fā)器名稱

如,以下語(yǔ)句刪除了一個(gè)名字叫:upd_check的觸發(fā)器。

DROPTRIGGERupd_check

?觸發(fā)器案例

當(dāng)往tabi表添加記錄后將解發(fā)此觸發(fā)器,將此新記錄同時(shí)插入到tab2表中。

DELIMITER//

DROPTRIGGERIFEXISTSt_afterinsert_on_tabl;

CREATETRIGGERt_afterinsert_on_tab1

AFTERINSERTONtabiFOREACHROW

BEGIN

insertintotab2(tab2_id)values(new.tabl_id);

END;

//

DELIMITER;

擬提問題:

觸發(fā)器與存儲(chǔ)過程有什么異同?

課后作業(yè):

完成教材P79練習(xí)題

注:每?jī)晒?jié)課(90分鐘)為一講,每講必須填寫此表。

第十九講

教學(xué)周第10周節(jié)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論