實驗五++存儲過程和觸發(fā)器_第1頁
實驗五++存儲過程和觸發(fā)器_第2頁
實驗五++存儲過程和觸發(fā)器_第3頁
實驗五++存儲過程和觸發(fā)器_第4頁
實驗五++存儲過程和觸發(fā)器_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗六:存儲過程和觸發(fā)器實驗六:存儲過程和觸發(fā)器一、實驗?zāi)康囊?、實驗?zāi)康膙1、理解存儲過程的概念,掌握創(chuàng)建與運行存儲過、理解存儲過程的概念,掌握創(chuàng)建與運行存儲過程的一般方法,加深對客戶程的一般方法,加深對客戶/服務(wù)器機制的理解。服務(wù)器機制的理解。v2、掌握觸發(fā)器的創(chuàng)建方法,學(xué)習(xí)觸發(fā)器的使用,、掌握觸發(fā)器的創(chuàng)建方法,學(xué)習(xí)觸發(fā)器的使用,體會觸發(fā)器執(zhí)行的時機,加深對觸發(fā)器功能和作用體會觸發(fā)器執(zhí)行的時機,加深對觸發(fā)器功能和作用的理解。的理解。v3、比較存儲過程和觸發(fā)器的異同。、比較存儲過程和觸發(fā)器的異同。v4、掌握數(shù)據(jù)庫事務(wù)處理掌握數(shù)據(jù)庫事務(wù)處理 語句二、實驗內(nèi)容二、實驗內(nèi)容實驗數(shù)據(jù):實驗數(shù)據(jù):實驗二

2、所建的數(shù)據(jù)庫及表,實驗三錄入表實驗二所建的數(shù)據(jù)庫及表,實驗三錄入表中的數(shù)據(jù)。中的數(shù)據(jù)。1、存儲過程的建立和執(zhí)行、存儲過程的建立和執(zhí)行 分別建立有沒參數(shù)、有參數(shù)(定義缺省和不定義缺分別建立有沒參數(shù)、有參數(shù)(定義缺省和不定義缺?。⒂蟹祷刂档拇鎯^程。存儲過程的執(zhí)行省)、有返回值的存儲過程。存儲過程的執(zhí)行2、觸發(fā)器的創(chuàng)建與執(zhí)行、觸發(fā)器的創(chuàng)建與執(zhí)行 各類觸發(fā)器分別建立一個,再設(shè)計一組有效和無效各類觸發(fā)器分別建立一個,再設(shè)計一組有效和無效的操作數(shù)據(jù)的操作數(shù)據(jù) ,觸發(fā)各個觸發(fā)器執(zhí)行觸發(fā)器執(zhí)行3、數(shù)據(jù)庫事務(wù)處理數(shù)據(jù)庫事務(wù)處理 操作語句三、實驗重點與難點三、實驗重點與難點1、重點:、重點:(1)有參數(shù)的存儲

3、過程的建立)有參數(shù)的存儲過程的建立(2)觸發(fā)器的執(zhí)行)觸發(fā)器的執(zhí)行2、難點:、難點: 設(shè)計一系列操作觸發(fā)觸發(fā)器的執(zhí)行。設(shè)計一系列操作觸發(fā)觸發(fā)器的執(zhí)行。四、實驗步驟四、實驗步驟1、恢復(fù)上次課的數(shù)據(jù)庫表結(jié)構(gòu)和數(shù)據(jù)。、恢復(fù)上次課的數(shù)據(jù)庫表結(jié)構(gòu)和數(shù)據(jù)。 2、完成以下操作、完成以下操作1)存儲過程的創(chuàng)建與執(zhí)行)存儲過程的創(chuàng)建與執(zhí)行(1)建立存儲過程)建立存儲過程P1,查詢選修了某門課程的學(xué)生信,查詢選修了某門課程的學(xué)生信息(其中課程名,返回值自行設(shè)計)息(其中課程名,返回值自行設(shè)計)(2)建立存儲過程)建立存儲過程P2,將某班的所有學(xué)生的成績放在,將某班的所有學(xué)生的成績放在一個臨時表中。一個臨時表中。(

4、3)建立存儲過程)建立存儲過程P3,計算某一個專業(yè)的某一門課和,計算某一個專業(yè)的某一門課和的平均成績的平均成績,顯示出專業(yè)名稱、課程名稱和平均成績顯示出專業(yè)名稱、課程名稱和平均成績(4)建立存儲過程)建立存儲過程p1,功能:查詢成績在,功能:查詢成績在X到到Y(jié)之間之間的學(xué)生信息,設(shè)計返回值:的學(xué)生信息,設(shè)計返回值: 當(dāng)輸入的值為空時:返回值當(dāng)輸入的值為空時:返回值10,提示,提示“請?zhí)嵴執(zhí)峁┓秶┓秶?!”;當(dāng)輸入的;當(dāng)輸入的X或或Y不在不在0到到100之間時:之間時:返回值返回值11,提示,提示“輸入的值不對!輸入的值不對!”;當(dāng)輸入的;當(dāng)輸入的值值XY時:返回值時:返回值12,提示,提示“

5、X應(yīng)小于應(yīng)小于Y!”;當(dāng);當(dāng)查找后沒有滿足條件的記錄時:返回值查找后沒有滿足條件的記錄時:返回值-10,提示,提示“對不起!沒有滿足條件的記錄!對不起!沒有滿足條件的記錄!”(5)運行所建立的存儲過程,觀察其執(zhí)行結(jié)果。)運行所建立的存儲過程,觀察其執(zhí)行結(jié)果。2)觸發(fā)器的建立)觸發(fā)器的建立 首先刪除各個表中的外碼約束。首先刪除各個表中的外碼約束。(1)在課程表和成績表上建立一組觸發(fā)器,實現(xiàn)課程)在課程表和成績表上建立一組觸發(fā)器,實現(xiàn)課程表的課程號與成績表的課程號之間的參照關(guān)系。表的課程號與成績表的課程號之間的參照關(guān)系。(2)在成績表上建立一個插入和修改類的觸發(fā)器,實)在成績表上建立一個插入和修改

6、類的觸發(fā)器,實現(xiàn)當(dāng)修改成績時,檢查修改后的成績是否在現(xiàn)當(dāng)修改成績時,檢查修改后的成績是否在0到到100之間,如果是,插入或修改成功,否則失敗。之間,如果是,插入或修改成功,否則失敗。(3)觸發(fā)器的執(zhí)行)觸發(fā)器的執(zhí)行 分別對學(xué)生表、課程表和成績表進(jìn)行插入、分別對學(xué)生表、課程表和成績表進(jìn)行插入、刪除和修改操作,觸發(fā)相應(yīng)觸發(fā)器的執(zhí)行,觀察其刪除和修改操作,觸發(fā)相應(yīng)觸發(fā)器的執(zhí)行,觀察其執(zhí)行結(jié)果。執(zhí)行結(jié)果。(1)存儲過程示例:)存儲過程示例:create proc d_s2 classno1 varchar(20) asbeginselect * into #sc1 from sc where sno

7、in (select sno from student where classno=classno1) select * from #class11end(2)觸發(fā)器示例:)觸發(fā)器示例:alter trigger in_sc on sc for insert,updateasif not exists (select student.sno from student,inserted where student.sno=inserted.sno) or not exists (select o from course ,inserted where o=o)beginprint(沒有該學(xué)生學(xué)號

8、或沒有該課程號沒有該學(xué)生學(xué)號或沒有該課程號)rollbackendv3、數(shù)據(jù)準(zhǔn)備:執(zhí)行如下命令Select * into #temp from Customers,將Customers的數(shù)據(jù)倒入到#temp表中。啟動事務(wù),執(zhí)行刪除后,回滾事務(wù)v選擇#temp的數(shù)據(jù),察看記錄總數(shù)v顯式啟動事務(wù)v刪除#temp表的數(shù)據(jù)v選擇#temp數(shù)據(jù),察看記錄總數(shù)v回滾事務(wù)v選擇#temp數(shù)據(jù),察看記錄總數(shù)啟動事務(wù),執(zhí)行刪除后,提交事務(wù)v選擇#temp數(shù)據(jù),察看記錄總數(shù)v顯式啟動事務(wù)v刪除#temp表的數(shù)據(jù)v選擇#temp的數(shù)據(jù),察看記錄總數(shù)v回滾事務(wù)v選擇#temp數(shù)據(jù),察看記錄總數(shù)v比較這兩次執(zhí)行效果的差

9、異,為什么會有這些比較這兩次執(zhí)行效果的差異,為什么會有這些差異?差異?五、注意:五、注意:1、如果為存儲過程指定參數(shù)且沒有定義參數(shù)的缺省值,、如果為存儲過程指定參數(shù)且沒有定義參數(shù)的缺省值,必須在運行時給出參數(shù)值必須在運行時給出參數(shù)值2、對表者操作時觸發(fā)相應(yīng)的觸發(fā)器執(zhí)行,因此設(shè)計操、對表者操作時觸發(fā)相應(yīng)的觸發(fā)器執(zhí)行,因此設(shè)計操作時必須要設(shè)計滿足觸發(fā)器條件和不滿足條件兩種作時必須要設(shè)計滿足觸發(fā)器條件和不滿足條件兩種操作,才能體會到觸發(fā)器的作用操作,才能體會到觸發(fā)器的作用v思考與練習(xí)思考與練習(xí)1、存儲過程與觸發(fā)器的運行方式有什么不同?、存儲過程與觸發(fā)器的運行方式有什么不同?2、編寫存儲過程實現(xiàn)對表的插入、刪除與修改、編寫存儲過程實現(xiàn)對表的插入、刪除與修改v實驗要求實驗要求v1、按照實驗要求進(jìn)行實驗,實驗時注每種、按照實驗要求進(jìn)行實驗,實驗時注每種SQL語語句的命令格式及關(guān)鍵字的含義,做好實驗記錄。句的命令格式及關(guān)鍵字的含義,做好實驗記錄。v2、實驗后:分析實驗結(jié)果,總結(jié)實驗知識,得出、實驗后:分析實驗結(jié)果,總結(jié)實驗知識,得出結(jié)論,按格式寫出實驗報告。結(jié)論,按格式寫出實驗報告。v3、在整個實驗過程中,要獨立思考、獨立按時完、在整個實驗過程中,要獨立思考、獨立按時完成實驗任務(wù),不懂的要虛心向教師或同學(xué)請教。成實驗任務(wù),不懂的要虛心向教師或同

溫馨提示

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

評論

0/150

提交評論