




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)圓跳動(dòng)檢測(cè)治具數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年綜合垂直燃烷測(cè)定儀項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年雙卡式標(biāo)準(zhǔn)型修補(bǔ)器項(xiàng)目投資價(jià)值分析報(bào)告
- 2025-2030年中國(guó)苯并咪唑酮行業(yè)深度研究分析報(bào)告
- 2025年聚氧乙烯醚項(xiàng)目評(píng)估報(bào)告
- 2025年注射式植筋膠行業(yè)深度研究分析報(bào)告
- 年產(chǎn)3萬(wàn)噸微粉可行性研究報(bào)告申請(qǐng)建議書
- 主題六 任務(wù)二 采集音頻 教學(xué)設(shè)計(jì) -2023-2024學(xué)年桂科版初中信息技術(shù)七年級(jí)下冊(cè)
- 2025年度實(shí)驗(yàn)室設(shè)備租賃合同模板
- 中國(guó)農(nóng)業(yè)生態(tài)園行業(yè)市場(chǎng)全景評(píng)估及投資戰(zhàn)略研究報(bào)告
- 2025年山東出版集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 水泥基自流平地面技術(shù)交底
- T-CSAC 004-2024 軟件供應(yīng)鏈安全要求測(cè)評(píng)方法
- 2024-2025學(xué)年人教版七年級(jí)數(shù)學(xué)上冊(cè)期末模擬測(cè)試卷(含簡(jiǎn)單答案)
- 【MOOC】理解馬克思-南京大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 《商務(wù)溝通-策略、方法與案例》課件 第十章 基本商務(wù)溝通
- 河南省鄭州市外國(guó)語(yǔ)高中2025屆高考仿真卷英語(yǔ)試卷含解析
- 超市投標(biāo)書范文
- 腫瘤科疼痛一病一品
- 2024-2030年中國(guó)礦用錨桿行業(yè)發(fā)展現(xiàn)狀需求分析報(bào)告
- 藥品類體外診斷試劑專項(xiàng)培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論