




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、SQL Sever 數(shù)據(jù)庫技術及運用子工程三子工程三 處置處置ZLJK高級對象與業(yè)高級對象與業(yè)務邏輯務邏輯 義務7 ZLJK數(shù)據(jù)庫中的復雜業(yè)務處置 義務7-1 在ZLJK數(shù)據(jù)庫中運用批處置 義務7-2 在ZLJK數(shù)據(jù)庫中進展邏輯處置 義務7-3 運用函數(shù)處理ZLJK數(shù)據(jù)庫中的相關問題 義務7-1 在ZLJK數(shù)據(jù)庫中運用批處置 本義務中要完成: 1編寫多語句查找姓名為“徐江洋同窗的學生評教情況; 2在插入一條學生信息記錄后,想方法判別能否插入勝利?!局R預備】 一批處置 多條SQL語句一同執(zhí)行稱為一個批處置。批中的一切SQL語句做為一個整體編譯成一個執(zhí)行單元后從運用程序一次性地發(fā)送到SQL Se
2、rver效力器進展執(zhí)行。 批處置中的一切語句被當作是一個整體,因此假設其中一個語句出現(xiàn)了編譯錯誤而無法執(zhí)行,那么該批處置內一切語句都不會執(zhí)行。 二T-SQL根本語法 變量是一種言語中必要的組成部分。T-SQL言語中有兩種方式的變量,一種是用戶本人定義的部分變量,另外一種是系統(tǒng)提供的全局變量。運算符是一些具有運算性質的符號,它們可以用來執(zhí)行算術運算、字符串銜接、賦值操作,也可以比較字段、常量和變量的值。在SQL Server 2019中,主要有以下幾類運算符:算術運算符、賦值運算符、比較運算符、邏輯運算符和字符串串聯(lián)運算符等。1算術運算符算術運算符可以執(zhí)行數(shù)學運算,算術運算符包括加+、減、乘*、
3、除/和取模%。不同的運算符操作的數(shù)據(jù)類型有一些差別。2賦值運算符T-SQL賦值運算符是等號=。主要用于給變量賦值,賦值運算符使我們可以將數(shù)據(jù)值指派給特定的對象。還可以運用賦值運算符在列標題和為列定義值的表達式之間建立關系。 3比較運算符比較運算符也可稱為關系運算符,用于測試兩個表達式的大小或能否一樣,得到的結果是布爾值,取值是TRUE表示結果為真、FALSE表示結果為假或者UNKNOWN。比較運算符不能用于 text,ntext 或 image 數(shù)據(jù)類型的表達式。5邏輯運算符邏輯運算符可以把多個邏輯表達式銜接起來。邏輯運算符包括AND、OR和NOT等運算符。邏輯運算符和比較運算符一樣,前往帶有
4、 TRUE 或 FALSE 值的布爾數(shù)據(jù)類型。三個運算符的優(yōu)先級別為:NOT,AND,OR。6字符串銜接運算符字符串銜接運算符允許經(jīng)過加號+進展字符串銜接,這個加號即被稱為字符串銜接運算符。如運用SELECT welcome+ to +nanjing!,其結果為welcome to nanjing!。 7運算符的優(yōu)先級在SQL Server 2019中,運算符的優(yōu)先等級從高到低如下所示,假設優(yōu)先等級一樣,那么按照從左到右的順序進展運算。1括號:;2乘、除、求模運算符:*,/,%;3加減運算符:,;4比較運算符:=,=,=,!=,!,! 0 BEGINEXECUTE RecoverStudent
5、 xh,ybjdm-將刪除的用戶重新添加到用戶表中將刪除的用戶重新添加到用戶表中END-更新轉入同窗的班級代碼更新轉入同窗的班級代碼Update Base_StudentInfo set bjdm=xbjdm ,ifXXY = where user_xh=xh-根據(jù)班級代碼查出相關信息根據(jù)班級代碼查出相關信息declare rxnj VARCHAR(50)declare bjmc VARCHAR(50)declare xbdm VARCHAR(50)declare xbmc VARCHAR(50)SELECT rxnj=rxnj,bjmc=bjmc,xbmc=zwmc,xbdm=xbdm FR
6、OM csh_bjNEW WHERE bjdm=xbjdm-根據(jù)學號更新相關信息根據(jù)學號更新相關信息update Base_StudentInfo set bjmc=bjmc,rxnj=rxnj,zwmc=xbmc,xbdm=xbdmwhere user_xh=xh-更新班級人數(shù)更新班級人數(shù)update csh_bjNEW set bjzrs=(select COUNT(1) from Base_StudentInfo where Base_StudentInfo.bjdm=csh_bjNEW.bjdm and Base_StudentInfo.bjdm in(xbjdm,ybjdm)wher
7、e csh_bjNEW.bjdm in(xbjdm,ybjdm)【義務分析二】【義務分析二】該義務的詳細描畫為:判別某一個同窗如學號為該義務的詳細描畫為:判別某一個同窗如學號為0901043101 能否是信能否是信息員,并顯示出來。息員,并顯示出來。判別某學生能否是信息員:判別某學生能否是信息員:DECLARE xxy VARCHAR(2)DECLARE name VARCHAR(10)-查詢于杰的查詢于杰的ifxxy字段取值和姓名字段取值和姓名SELECT xxy=ifxxY,name=xm FROM BASE_STUDENTINFO WHERE user_xh= 0901043101 -根
8、據(jù)獲得的值來判別能否是信息員根據(jù)獲得的值來判別能否是信息員SELECT CASE WHEN xxy=1 THEN name+ 是信息員是信息員 WHEN xxy=0THEN name+不是信息員不是信息員 ENDGO三、義務小結三、義務小結義務7-3 運用函數(shù)處理ZLJK數(shù)據(jù)庫中的相關問題 本義務中要完成: 1查找“徐江洋同窗的前一個學號學生和后一個學號學生的相關信息; 2經(jīng)過函數(shù)來判別在校生的年級情況?!局R預備】 【預備知識】 在T-SQL言語中,函數(shù)的運用非常多。SQL Server提供了功能全面、種類豐富的函數(shù)。 SQL函數(shù)的目的是執(zhí)行一個特定的功能,前往一個值。大多數(shù)函數(shù)都前往一個標
9、量值(scalar value),標量值代表一個數(shù)據(jù)單元或一個簡單值。實踐上,函數(shù)可以前往任何數(shù)據(jù)類型,包括表、游標等可前往完好的多行結果集的類型。本章不預備討論到這個深度,第12章將講解如何創(chuàng)建和運用用戶自定義函數(shù),以前往更復雜的數(shù)據(jù)?!境跏剂x務】【初始義務】1. 系統(tǒng)函數(shù)的運用系統(tǒng)函數(shù)的運用例:從Base_StudentInfo學生表中前往xm列的長度,以及第二列的稱號2. 數(shù)學函數(shù)的運用例:三種數(shù)學函數(shù)的運用。3. 時間日期函數(shù)的運用例:前往系統(tǒng)今天的時間,還有當前的年、月、日。4. 字符串函數(shù)的運用例:截取字符串中的字母。5. 常用的聚合函數(shù)6. 轉換函數(shù)的運用例:將當前日期顯示成dd
10、/mm/yy的格式?!玖x務分析一】【義務分析一】回到我們要完成的義務,編寫多語句查找姓名為回到我們要完成的義務,編寫多語句查找姓名為“徐江洋同窗徐江洋同窗的前一個學號學生和后一個學號學生情況,直接查詢得不到對應的前一個學號學生和后一個學號學生情況,直接查詢得不到對應的結果。的結果。該義務的執(zhí)行步驟為:該義務的執(zhí)行步驟為:第一步經(jīng)過查詢找出第一步經(jīng)過查詢找出“徐江洋同窗的學號;徐江洋同窗的學號; 第二步第二步 學號加減一后進展查詢。學號加減一后進展查詢。查找姓名為查找姓名為“徐江洋同窗前后學號的學生情況:徐江洋同窗前后學號的學生情況:-查找徐江洋同窗的學號查找徐江洋同窗的學號-DECLARE x
11、m varchar(50) -學生姓名學生姓名DECLARE user_xh varchar(50) -學生學號變量學生學號變量SET xm=徐江洋徐江洋 -運用運用SET賦值賦值SELECT user_xh=user_xh FROM BASE_STUDENTINFO WHERE xm = xm-查找徐江洋同窗學號后的同窗查找徐江洋同窗學號后的同窗SELECT * FROM BASE_STUDENTINFO WHERE (user_xh = Convert (char,Convert(int ,user_xh) +1) OR (user_xh = Convert (char,Convert(i
12、nt ,user_xh) -1)GO【義務分析二】【義務分析二】 回到我們要完成的義務,經(jīng)過函數(shù)來判別在校生的年級情況回到我們要完成的義務,經(jīng)過函數(shù)來判別在校生的年級情況9月份之后有三屆學生在校,月份之后有三屆學生在校,9月份之前,那么有月份之前,那么有2屆同窗在。屆同窗在。判別在校生的年級情況:判別在校生的年級情況:IF month(getdate()9 BEGINSELECT DISTINCT rxnj FROM dbo.csh_bjNEW WHERE rxnj = year(getdate()-2ENDELSEBEGINSELECT DISTINCT rxnj FROM dbo.csh_
13、bjNEW WHERE rxnj = year(getdate()-3END三、義務小結三、義務小結每一個函數(shù)都有本人的稱號,運用時在稱號之后有一對小括號,每一個函數(shù)都有本人的稱號,運用時在稱號之后有一對小括號,如:如:sin( )。大部分的函數(shù)在小括號中需求一個或者多個參數(shù)。大部分的函數(shù)在小括號中需求一個或者多個參數(shù)。函數(shù)的分類如下。函數(shù)的分類如下。1系統(tǒng)函數(shù)系統(tǒng)函數(shù) 2數(shù)學函數(shù)數(shù)學函數(shù) 3時間日期函數(shù)時間日期函數(shù)4字符串函數(shù)字符串函數(shù)5常用的聚集函數(shù)常用的聚集函數(shù)6轉換函數(shù)轉換函數(shù)義務8 ZLJK數(shù)據(jù)庫T-SQL編程 義務8-1 創(chuàng)建和管理ZLJK數(shù)據(jù)庫存儲過程 義務8-2 創(chuàng)建和管理ZL
14、JK數(shù)據(jù)庫觸發(fā)器 義務8-1 創(chuàng)建和管理ZLJK數(shù)據(jù)庫存儲過程 本義務中要完成: 1運用T-SQL語句和SQL Server Management Studio創(chuàng)建前往學生信息的存儲過程。 2創(chuàng)建帶輸入?yún)?shù)的存儲過程實現(xiàn)教師信息添加。 3創(chuàng)建帶輸出參數(shù)的存儲過程統(tǒng)計全校師生人數(shù)。 4管理所創(chuàng)建的存儲過程。【知識預備】 什么是存儲過程存儲過程是一組為了完成特定功能的SQL 語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中。用戶經(jīng)過指定存儲過程的名字并給出參數(shù)假設該存儲過程帶有參數(shù)來執(zhí)行它?!境跏剂x務】【初始義務】運用運用T-SQL語句創(chuàng)建存儲過程的語法語句創(chuàng)建存儲過程的語法 CREATE PROCEDURE 存儲
15、過程名存儲過程名參數(shù)參數(shù)1 參數(shù)數(shù)據(jù)類型參數(shù)數(shù)據(jù)類型 =默許值默許值 OUTPUT ,參數(shù)參數(shù)n 參數(shù)數(shù)據(jù)類型參數(shù)數(shù)據(jù)類型 =默許值默許值 OUTPUTWITH RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION ASSQL語句語句 【初始義務】【初始義務】1. 運用運用T-SQL語句創(chuàng)建前往學生信息的存儲過程。語句創(chuàng)建前往學生信息的存儲過程。1前往學生信息的存儲過程創(chuàng)建語句如下。前往學生信息的存儲過程創(chuàng)建語句如下。前往學生信息的存儲過程:前往學生信息的存儲過程:CREATE PROCEDURE spStudentnameAS SELECT user
16、_xh , xm FROM BASE_STUDENTINFO 2執(zhí)行存儲過程執(zhí)行存儲過程spStudentname在查詢窗口執(zhí)行如下語句:在查詢窗口執(zhí)行如下語句:執(zhí)行存儲過程:執(zhí)行存儲過程:EXECspStudentname 在在SQL SERVER界面上,在左邊可以看到創(chuàng)建的存儲過程。在界面上,在左邊可以看到創(chuàng)建的存儲過程。在右邊可見執(zhí)行存儲過程的結果。右邊可見執(zhí)行存儲過程的結果?!境跏剂x務】【初始義務】用用SQL Server Management Studio創(chuàng)建存儲過程創(chuàng)建存儲過程【進階義務】【進階義務】1創(chuàng)建帶輸入?yún)?shù)的存儲過程實現(xiàn)教師信息添加創(chuàng)建帶輸入?yún)?shù)的存儲過程實現(xiàn)教師信息添加
17、從調用程序向存儲過程傳送的參數(shù)叫輸入?yún)?shù)。輸入?yún)?shù)在創(chuàng)建從調用程序向存儲過程傳送的參數(shù)叫輸入?yún)?shù)。輸入?yún)?shù)在創(chuàng)建存儲過程時定義,而參數(shù)值是在執(zhí)行時由調用該存儲過程的語句存儲過程時定義,而參數(shù)值是在執(zhí)行時由調用該存儲過程的語句提供。提供。在在ZLJK數(shù)據(jù)庫創(chuàng)建存儲過程,將教師信息添加到數(shù)據(jù)庫創(chuàng)建存儲過程,將教師信息添加到SY_USERS1表中。先定義九個輸入?yún)?shù),判別對應表中不能為空的列的輸入表中。先定義九個輸入?yún)?shù),判別對應表中不能為空的列的輸入?yún)?shù)的值能否為空,不為空那么用插入語句插入到教師表中,最參數(shù)的值能否為空,不為空那么用插入語句插入到教師表中,最后判別操作能否勝利,不勝利那么吊銷并退
18、出。后判別操作能否勝利,不勝利那么吊銷并退出。 CREATE PROCEDURE spAddTeacher USERS1_LOGIN_NAME nvarchar(20)=NULL, USERS1_JGH nvarchar(15)=NULL, USERS1_XM nvarchar(30)=NULL, USERS1_LOGIN_PWDS nvarchar(50)=NULL, USERS1_JLTJSJ nvarchar(8)=NULL, CSH_XB_XBDM varchar(20)=NULL, cddw_id varchar(4)= NULL, StaffRoom_id char(5)=NULL
19、, ass_cddw_id nvarchar(4)=NULL AS IF USERS1_LOGIN_NAME IS NULL ORUSERS1_JGH IS NULL OR USERS1_XM IS NULL OR USERS1_LOGIN_PWDS IS NULL BEGIN PRINT 請重新輸入該教師信息! PRINT 他必需提供教師的登錄名、教師的工號、教師姓名、密碼 PRINT 其它可以為空 RETURN END BEGIN TRANSACTION INSERT SY_USERS1 (USERS1_LOGIN_NAME,USERS1_JGH,USERS1_XM,USERS1_LOGI
20、N_PWDS,USERS1_JLTJSJ,CSH_XB_XBDM,cddw_id,StaffRoom_id,ass_cddw_id) VALUES(USERS1_LOGIN_NAME,USERS1_JGH,USERS1_XM,USERS1_LOGIN_PWDS,USERS1_JLTJSJ,CSH_XB_XBDM,cddw_id,StaffRoom_id,ass_cddw_id) IF error 0 BEGIN ROLLBACK TRAN RETURN ENDCOMMIT TRANSACTIONPRINT 教師+USERS1_XM +的信息勝利添加到表SY_USERS1中。 【進階義務】【進階
21、義務】2創(chuàng)建帶輸出參數(shù)的存儲過程統(tǒng)計全校師生人數(shù)創(chuàng)建帶輸出參數(shù)的存儲過程統(tǒng)計全校師生人數(shù)所謂帶輸出參數(shù),就是首先在創(chuàng)建存儲過程中定義輸出參數(shù),執(zhí)所謂帶輸出參數(shù),就是首先在創(chuàng)建存儲過程中定義輸出參數(shù),執(zhí)行存儲過程,可以前往一個或多個值。行存儲過程,可以前往一個或多個值。1創(chuàng)建一個統(tǒng)計全校師生人數(shù)的存儲過程并將計算結果作為創(chuàng)建一個統(tǒng)計全校師生人數(shù)的存儲過程并將計算結果作為輸出參數(shù)前往。輸出參數(shù)前往。CREATE PROCEDURE sp_teacherstudent_numtotal_num INT OUTPUTASSELECT total_num = (select count(*) from
22、Base_StudentInfo)+(select count(*) from SY_USERS1)GO2調用上面的存儲過程顯示統(tǒng)計結果:調用上面的存儲過程顯示統(tǒng)計結果:DECLARE teacherstudent_num INTEXEC sp_teacherstudent_num teacherstudent_num OUTPUTPRINT 全校師生人數(shù)為:全校師生人數(shù)為: + CONVERT(CHAR(5), teacherstudent_num)GO【進階義務】【進階義務】3查看查看ZLJK數(shù)據(jù)庫的數(shù)據(jù)庫的sp_teacherstudent_num存儲過程存儲過程1用用SQL Serve
23、r Management Studio查看查看在對象資源管理器中展開在對象資源管理器中展開“數(shù)據(jù)庫,依次展開數(shù)據(jù)庫,依次展開“ZLJK數(shù)據(jù)數(shù)據(jù)庫、庫、“可編程性、可編程性、“存儲過程,就可以看到創(chuàng)建的存儲過程如存儲過程,就可以看到創(chuàng)建的存儲過程如圖圖3-13所示。所示。查看存儲過程查看存儲過程sp_teacherstudent_num的定義的定義2用用T-SQL查查查看存儲過程查看存儲過程sp_teacherstudent_num的信息的信息查看存儲過程查看存儲過程sp_teacherstudent_numr的定義的定義4修正修正ZLJK數(shù)據(jù)庫的存儲過程數(shù)據(jù)庫的存儲過程1用用SQL Serve
24、r Management Studio修正修正spStudentname存儲過程存儲過程2用用T-SQL語句修正語句修正語句如下。語句如下。ALTER PROC EDURE 存儲過程名存儲過程名參數(shù)參數(shù)1 參數(shù)數(shù)據(jù)類型參數(shù)數(shù)據(jù)類型 =默許值默許值 OUTPUT ,參數(shù)參數(shù)n 參數(shù)數(shù)據(jù)類型參數(shù)數(shù)據(jù)類型 =默許值默許值 OUTPUTWITH RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION ASSQL語句語句 【進階義務】【進階義務】5. 重命名存儲過程重命名存儲過程重命名存儲過程可以運用系統(tǒng)存儲過程重命名存儲過程可以運用系統(tǒng)存儲過程sp_rename
25、,其語法方,其語法方式如下。式如下。sp_rename 原存儲過程稱號,新存儲過程稱號原存儲過程稱號,新存儲過程稱號 也可以運用也可以運用SQL Server Management Studio重命名存儲過程。重命名存儲過程。在在SQL Server Management Studio中,右擊要操作的存儲過中,右擊要操作的存儲過程稱號,從彈出的快捷菜單中選擇程稱號,從彈出的快捷菜單中選擇“重命名選項;或在存儲過重命名選項;或在存儲過程名上單擊。當存儲過程稱號變成可輸入形狀時,就可以直接修程名上單擊。當存儲過程稱號變成可輸入形狀時,就可以直接修正該存儲過程的稱號。正該存儲過程的稱號。6刪除存儲過
26、程刪除存儲過程對于不需求的存儲過程,可以運用對于不需求的存儲過程,可以運用DROP命令刪除,命令刪除,DROP命令命令可以將一個或者多個存儲過程或者存儲過程組從當前數(shù)據(jù)庫中刪可以將一個或者多個存儲過程或者存儲過程組從當前數(shù)據(jù)庫中刪除,其語法方式如下。除,其語法方式如下。DROP PROCEDURE procedure,n 三、義務小結三、義務小結1運用存儲過程具有以下優(yōu)點:運用存儲過程具有以下優(yōu)點:1存儲過程的才干大大加強了存儲過程的才干大大加強了SQL言語的功能和靈敏性。存言語的功能和靈敏性。存儲過程可以用流控制語句編寫,有很強的靈敏性,可以完成復雜儲過程可以用流控制語句編寫,有很強的靈敏性
27、,可以完成復雜的判別和較復雜的運算。的判別和較復雜的運算。2可保證數(shù)據(jù)的平安性和完好性。經(jīng)過存儲過程可以使沒有可保證數(shù)據(jù)的平安性和完好性。經(jīng)過存儲過程可以使沒有權限的用戶在控制之下間接地存取數(shù)據(jù)庫,從而保證數(shù)據(jù)的平安權限的用戶在控制之下間接地存取數(shù)據(jù)庫,從而保證數(shù)據(jù)的平安, 經(jīng)過存儲過程可以使相關的動作在一同發(fā)生,從而可以維護數(shù)據(jù)經(jīng)過存儲過程可以使相關的動作在一同發(fā)生,從而可以維護數(shù)據(jù)庫的完好性。庫的完好性。3在運轉存儲過程前,數(shù)據(jù)庫已對其進展了語法和句法分析,在運轉存儲過程前,數(shù)據(jù)庫已對其進展了語法和句法分析,并給出了優(yōu)化執(zhí)行方案。這種曾經(jīng)編譯好的過程可極大地改善并給出了優(yōu)化執(zhí)行方案。這種曾
28、經(jīng)編譯好的過程可極大地改善SQL語句的性能。語句的性能。 由于執(zhí)行由于執(zhí)行SQL語句的大部分任務曾經(jīng)完成,語句的大部分任務曾經(jīng)完成,所以存儲過程能以極快的速度執(zhí)行。所以存儲過程能以極快的速度執(zhí)行。4可以降低網(wǎng)絡的通訊量??梢越档途W(wǎng)絡的通訊量。2. 存儲過程的分類存儲過程的分類在在Microsoft SQL Server系統(tǒng)中,提供了三種根本的存儲過程系統(tǒng)中,提供了三種根本的存儲過程類型,即用戶定義的存儲過程、擴展存儲過程和系統(tǒng)存儲過程。類型,即用戶定義的存儲過程、擴展存儲過程和系統(tǒng)存儲過程。 1用戶自定義的存儲過程:用戶為完成某個特定功能而編寫用戶自定義的存儲過程:用戶為完成某個特定功能而編寫
29、的存儲過程。相對于擴展存儲過程和系統(tǒng)存儲過程,用戶自定義的存儲過程。相對于擴展存儲過程和系統(tǒng)存儲過程,用戶自定義存儲過程運用范圍最廣,功能最強大。存儲過程運用范圍最廣,功能最強大。2擴展存儲過程:擴展存儲過程:SQL Server可以動態(tài)裝載并執(zhí)行的動態(tài)鏈可以動態(tài)裝載并執(zhí)行的動態(tài)鏈接庫接庫 (DLL)。擴展存儲過程直接在。擴展存儲過程直接在SQL Server的地址空間運轉,的地址空間運轉,并運用并運用SQL Server開放式數(shù)據(jù)效力開放式數(shù)據(jù)效力(ODS)API編程。用戶可以編程。用戶可以運用編程言語如運用編程言語如C等創(chuàng)建本人的存儲過程。等創(chuàng)建本人的存儲過程。系統(tǒng)存儲過程:安裝完系統(tǒng)存儲
30、過程:安裝完SQL Server后系統(tǒng)創(chuàng)建好的存儲過程。后系統(tǒng)創(chuàng)建好的存儲過程。系統(tǒng)存儲過程存儲于系統(tǒng)存儲過程存儲于master數(shù)據(jù)庫中,主要目的是可以從系統(tǒng)數(shù)據(jù)庫中,主要目的是可以從系統(tǒng)表中獲取信息,當然其中的大部分也可以用于用戶數(shù)據(jù)庫中。表中獲取信息,當然其中的大部分也可以用于用戶數(shù)據(jù)庫中。 義務8-2 創(chuàng)建和管理ZLJK數(shù)據(jù)庫觸發(fā)器 本義務中要完成: 1用T-SQL和SQL Server Management Studio創(chuàng)建學生表的DML觸發(fā)器。 2創(chuàng)建刪除、修正學生表的DDL觸發(fā)器。 3用T-SQL和SQL Server Management Studio管理所創(chuàng)建的觸發(fā)器?!局R預
31、備】1. 觸發(fā)器的概念觸發(fā)器是一種特殊的存儲過程,自動被調用執(zhí)行。它不能被顯式地調用,而是在往表中插入記錄、更改記錄或者刪除記錄時等情況下,當上述事件發(fā)生時,才被自動地激活并執(zhí)行。觸發(fā)器是一個功能強大的工具,它與表格嚴密相連,在表中數(shù)據(jù)發(fā)生變化時自動強迫執(zhí)行。觸發(fā)器可以用于SQL Server約束、默許值和規(guī)那么的完好性檢查,還可以完成難以用普通約束實現(xiàn)的復雜功能。 2. 觸發(fā)器的分類觸發(fā)器分為DML觸發(fā)器和DDL觸發(fā)器兩類:【初始義務】【初始義務】創(chuàng)建觸發(fā)器的普通語法如下。創(chuàng)建觸發(fā)器的普通語法如下。CREATE TRIGGER 觸發(fā)器名觸發(fā)器名 ON 表名表名| 視圖名視圖名 WITH EN
32、CRYPTION FORAFTERINSTEAD OF DELETE,INSERT,UPDATEASSQL語句語句 【義務一】用【義務一】用T-SQL創(chuàng)建學生表的創(chuàng)建學生表的INSERT觸發(fā)器觸發(fā)器為學生表建立一個觸發(fā)器,當某個班級添加一名學生時,在數(shù)據(jù)庫中的操作就是向學生表中插入為學生表建立一個觸發(fā)器,當某個班級添加一名學生時,在數(shù)據(jù)庫中的操作就是向學生表中插入一行數(shù)據(jù)時,需求更改該學生所在班級的總人數(shù),以添加該班級的學生總數(shù)。一行數(shù)據(jù)時,需求更改該學生所在班級的總人數(shù),以添加該班級的學生總數(shù)。USE ZLJKGOCREATE TRIGGERstudent_insert ON Base_St
33、udentInfo FOR INSERTASDECLARE student_num INTSELECT student_num = d.bjzrs FROM csh_bjNEW d,inserted i WHERE d.bjdm = i.bjdmIF (student_num 0) BEGIN UPDATE bjNEW SET bjzrs = bjzrs + 1 FROM bjNEW d ,inserted iWHERE d.bjdm = i.bjdm ENDELSE BEGIN UPDATE bjNEW SET bjzrs = ( SELECT COUNT(*) FROM Base_Stud
34、entInfo t ,inserted i WHERE t.bjdm = i.bjdm) FROM bjNEW d, inserted i WHERE d.bjdm = i.bjdm ENDGO【義務二】用【義務二】用SQL Server Management Studio創(chuàng)建觸發(fā)器創(chuàng)建觸發(fā)器在對象資源管理器中展開在對象資源管理器中展開“數(shù)據(jù)庫,依次展開數(shù)據(jù)庫,依次展開“ZLJK數(shù)據(jù)庫、數(shù)據(jù)庫、“表、展開一張表表、展開一張表如如Base_StudentInfo表,在表下面出現(xiàn)的表,在表下面出現(xiàn)的“觸發(fā)器上單擊右鍵,選擇觸發(fā)器上單擊右鍵,選擇“新建觸新建觸發(fā)器發(fā)器,就會出現(xiàn)如圖就會出現(xiàn)如圖9-1
35、3所示的右邊的觸發(fā)器創(chuàng)建模板,輸入必要的所示的右邊的觸發(fā)器創(chuàng)建模板,輸入必要的SQL語句,執(zhí)行語句,執(zhí)行即可創(chuàng)建。即可創(chuàng)建?!玖x務三】創(chuàng)建數(shù)據(jù)庫的【義務三】創(chuàng)建數(shù)據(jù)庫的DDL觸發(fā)器。觸發(fā)器。像常規(guī)觸發(fā)器一樣,像常規(guī)觸發(fā)器一樣,DDL 觸發(fā)器將激發(fā)存儲過程以呼應事件,這些語句主要是以觸發(fā)器將激發(fā)存儲過程以呼應事件,這些語句主要是以 CREATE、ALTER 和和 DROP 開頭的語句。開頭的語句。DDL 觸發(fā)器可用于管理義務,例如審核和觸發(fā)器可用于管理義務,例如審核和控制數(shù)據(jù)庫操作??刂茢?shù)據(jù)庫操作。僅在運轉觸發(fā)僅在運轉觸發(fā) DDL 觸發(fā)器的觸發(fā)器的 DDL 語句后,語句后,DDL 觸發(fā)器才會激發(fā)
36、。觸發(fā)器才會激發(fā)。DDL 觸發(fā)器無法觸發(fā)器無法作為作為 INSTEAD OF 觸發(fā)器運用。觸發(fā)器運用。創(chuàng)建創(chuàng)建DDL觸發(fā)器,刪除或修正表時觸發(fā)觸發(fā)器,刪除或修正表時觸發(fā)創(chuàng)建的創(chuàng)建的SQL語句如下。語句如下。CREATE TRIGGER safetyON DATABASEFOR DROP_TABLE,ALTER_TABLEAS PRINT 必需禁用表平安維護觸發(fā)器才干進展表的刪除和修正操作!必需禁用表平安維護觸發(fā)器才干進展表的刪除和修正操作!ROLLBACK禁用禁用DDL觸發(fā)器觸發(fā)器必需禁用創(chuàng)建的必需禁用創(chuàng)建的DDL觸發(fā)器,才可以進展表的刪除和修正操作。觸發(fā)器,才可以進展表的刪除和修正操作。禁用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度商業(yè)秘密合作轉讓合同協(xié)議
- 二零二五年度豬肉市場風險預警與應對合同
- 二零二五年度社區(qū)服務兼職志愿者服務協(xié)議
- 二零二五年度成人外語培訓機構報名服務協(xié)議
- 二零二五年度手貨車車輛轉讓與汽車金融服務及市場推廣合同
- 2025年度游學旅游線路研發(fā)與推廣協(xié)議
- 2025年度珠寶首飾返傭金代理合同
- 2025年度混凝土班組勞務合作施工進度合同
- 二零二五年度精裝修房屋買賣合同違約賠償標準
- 二零二五年度房產交易全程服務協(xié)議范本
- 2025中國華電校園招聘高頻重點提升(共500題)附帶答案詳解
- 住宅建筑室內裝飾裝修設計管理研究
- 教育部《中小學校園食品安全和膳食經(jīng)費管理工作指引》專題講座
- 龍門吊安裝及拆除安全專項施工方案
- 2024年江蘇省中小學生金鑰匙科技競賽(高中組)考試題庫(含答案)
- 理療課件教學課件
- 2024解析:第十二章滑輪-講核心(解析版)
- 《非精密進近》課件
- 人教PEP版(一起)(2024)一年級上冊英語全冊教案(單元整體教學設計)
- 2024 年下半年數(shù)學一年級數(shù)學思維挑戰(zhàn)試卷
- 網(wǎng)絡試運行方案
評論
0/150
提交評論