版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
學(xué)習(xí)情景5:數(shù)據(jù)庫其它對象
的創(chuàng)建與管理單元描述數(shù)據(jù)庫和數(shù)據(jù)表創(chuàng)建完畢,并不表示數(shù)據(jù)庫的設(shè)計就結(jié)束了,用戶往往會對數(shù)據(jù)庫有一些特殊的要求,比如:數(shù)據(jù)庫是否具備數(shù)據(jù)完整性關(guān)系?如何提高數(shù)據(jù)的檢索速度?當(dāng)需要頻繁執(zhí)行某一特殊任務(wù)時,如何避免重復(fù)編寫程序代碼?在SQLServer2005中提供了一系列數(shù)據(jù)庫對象來解決類似以上的問題。本學(xué)習(xí)情景將重點介紹在SCDB數(shù)據(jù)庫中創(chuàng)建和管理這些數(shù)據(jù)庫對象(約束、索引、視圖、存儲過程、觸發(fā)器等)來解決實際問題的過程。學(xué)習(xí)目標(biāo)學(xué)會數(shù)據(jù)完整性的設(shè)計;學(xué)會索引的創(chuàng)建與管理;學(xué)會視圖的創(chuàng)建與管理;學(xué)會存儲過程的創(chuàng)建與管理;學(xué)會觸發(fā)器的創(chuàng)建與管理;學(xué)會游標(biāo)的創(chuàng)建與使用;了解游標(biāo)的使用方法。項目1:SCDB中數(shù)據(jù)完整性的設(shè)計【任務(wù)描述】數(shù)據(jù)庫中的數(shù)據(jù)是從外界輸入的,而數(shù)據(jù)的輸入由于種種原因,會輸入無效或錯誤的信息。那么保證數(shù)據(jù)正確性、一致性和可靠性,就成了數(shù)據(jù)庫系統(tǒng)關(guān)注的重要問題。SQLServer提供了數(shù)據(jù)完整性的設(shè)計來解決以上問題,具體可以通過創(chuàng)建約束、默認(rèn)、規(guī)則、用戶自定義函數(shù)來解決。項目1:SCDB中數(shù)據(jù)完整性的設(shè)計【任務(wù)目標(biāo)】了解數(shù)據(jù)完整性的基本概念;掌握創(chuàng)建和使用約束來保證數(shù)據(jù)的完整性;掌握創(chuàng)建、綁定、解綁定和刪除默認(rèn)值的方法;掌握創(chuàng)建、綁定、解綁定和刪除規(guī)則的方法;掌握創(chuàng)建、綁定、使用和刪除用戶自定義完整性的方法。任務(wù)1了解數(shù)據(jù)完整性的基礎(chǔ)知識數(shù)據(jù)的完整性是指存儲在數(shù)據(jù)庫中數(shù)據(jù)的正確性、一致性和可靠性。根據(jù)數(shù)據(jù)的完整性所作用的數(shù)據(jù)庫對象和范圍的不同,數(shù)據(jù)的完整性分為實體完整性、域完整性、參照完整性和用戶定義完整性4種。任務(wù)1了解數(shù)據(jù)完整性的基礎(chǔ)知識1、實體完整性實體完整性也可稱表的完整性。它用于保證數(shù)據(jù)庫中數(shù)據(jù)表的每一個特定實體都是唯一的,可以通過主鍵約束(PRIMARYKEY)、唯一鍵約束(UNIQUE)、索引或標(biāo)識屬性(IDENTITY)來實現(xiàn)。任務(wù)1了解數(shù)據(jù)完整性的基礎(chǔ)知識2、域完整性域完整性也可稱列完整性,用以指定列的數(shù)據(jù)輸入是否具有正確的數(shù)據(jù)類型、格式以及有效的數(shù)據(jù)范圍。任務(wù)1了解數(shù)據(jù)完整性的基礎(chǔ)知識3、參照完整性參照完整性是保證參照與被參照表中數(shù)據(jù)的一致性。例如,在學(xué)生表Student中有學(xué)生的學(xué)號StudentID且在選課表SC中也有學(xué)號StudentID,而且兩個表的學(xué)號StudentID值必須一致,如果在輸入過程中出現(xiàn)錯誤且又沒有被系統(tǒng)檢查出來,那么數(shù)據(jù)之間將會造成混亂。任務(wù)1了解數(shù)據(jù)完整性的基礎(chǔ)知識4、用戶定義完整性用戶定義完整性允許用戶定義不屬于其他任何完整性分類的特定規(guī)則。所有的完整性類型都支持用戶定義完整性。用戶定義的完整性主要通過使用觸發(fā)器和存儲過程來強(qiáng)制實施完整性。存儲過程和觸發(fā)器的相關(guān)知識在后續(xù)任務(wù)中介紹。任務(wù)務(wù)2:約束束的的實實現(xiàn)現(xiàn)1.約束束的的類類型型約束束是是SQLServer強(qiáng)制制實實行行的的應(yīng)應(yīng)用用規(guī)規(guī)則則,,它它通通過過限限制制列列、、行行和和表表中中的的數(shù)數(shù)據(jù)據(jù)來來保保證證數(shù)數(shù)據(jù)據(jù)的的完完整整性性。。當(dāng)當(dāng)刪刪除除表表時時,,表表所所帶帶的的約約束束也也隨隨之之被被刪刪除除。。常用的約束包包括CHECK約束、PRIMARYKEY約束、FOREIGNKEY約束、UNIQUE約束和DEFAULT約束。任務(wù)2:約束的實現(xiàn)(1)CHECK約束CHECK約束用于限制制輸入一列或或多列的值的的范圍,通過過邏輯表達(dá)式式來判斷數(shù)據(jù)據(jù)的有效性,,也就是一個個列的輸入內(nèi)內(nèi)容必須滿足足CHECK約束的條件,,否則,數(shù)據(jù)據(jù)無法正常輸輸入,從而強(qiáng)強(qiáng)制數(shù)據(jù)的域域完整性。任務(wù)2:約束的實現(xiàn)(2)DEFAULT約束若在表中某列列定義了DEFAULT約束,用戶在在插入新的數(shù)數(shù)據(jù)行時,如如果該列沒有有指定數(shù)據(jù),,那么系統(tǒng)將將默認(rèn)值賦給給該列,當(dāng)然然該默認(rèn)值也也可以是空值值(NULL)。任務(wù)2:約束的實現(xiàn)(3)PRIMARYKEY約束在表中經(jīng)常有有一列或多列列的組合,其其值能唯一標(biāo)標(biāo)識表中的每每一行。這樣樣的一列或多多列成為表的的主鍵(PrimaryKey),通過它可以以強(qiáng)制表的實實體完整性。。一個表只能能有一個主鍵鍵,而且主鍵鍵約束中的列列不能為空值值。任務(wù)2:約束的實現(xiàn)(4)FOREIGNKEY約束外健(ForeignKey)是用于建立和和加強(qiáng)兩個表表(主表與從表)的一列或多列列數(shù)據(jù)之間的的連接,當(dāng)添添加、修改或或刪除數(shù)據(jù)時時,通過參照照完整性來保保證它們之間間的數(shù)據(jù)的一一致性。任務(wù)2:約束的實現(xiàn)(5)UNIQUE約束UNIQUE約束用于確保保表中的兩個個數(shù)據(jù)行在非非主鍵中沒有有相同的列值值。與PRIMARYKEY'約束類似,UNIQUE約束也強(qiáng)制唯唯一性,為表表中的一列或或多列提供實實體完整性。。但UNIQUE約束用于非主主健的一列或或多列組合,,且一個表可可以定義多個個UNIQUE約束。另外,,UNIQUE約束可以用于于定義多列組組合,且一個個表可以定義義多個UNIQUE約束,UNIQUE約束可以用于于定義允許空空值的列;而而PRIMAYRKEY約束只能用在在唯一列上,,且不能為空空值。任務(wù)2:約束的實現(xiàn)2.約束的創(chuàng)建、、查看與刪除除約束的創(chuàng)建、、查看與刪除除等操作均可可在SQLServerManagementStudio的【對象象資資源源管管理理器器】面板板中中進(jìn)進(jìn)行行,,也也可可使使用用Transact-SQL語句句進(jìn)進(jìn)行行。。任務(wù)務(wù)2:約束束的的實實現(xiàn)現(xiàn)(1)CHECK約束束的的創(chuàng)創(chuàng)建建、、查查看看和和刪刪除除【例】在學(xué)學(xué)生生表表(Student)中定定義義學(xué)學(xué)生生的的性性別別Sex列只只能能是是““男男””或或““女女””,,從從而而避避免免用用戶戶輸輸入入其其他他的的值值。。要要解解決決此此問問題題,,需需要要用用到到CHECK約束束,,使使學(xué)學(xué)生生性性別別列列的的值值只只有有““男男””或或““女女””兩兩種種可可能能,,如如果果用用戶戶輸輸入入其其他他值值,,系系統(tǒng)統(tǒng)均均提提示示用用戶戶輸輸入入無無效效。。任務(wù)務(wù)2:約束束的的實實現(xiàn)現(xiàn)①在在SQLServerManagementStudio的【對象象資資源源管管理理器器】中選選取取【數(shù)據(jù)據(jù)庫庫】選項項下下的的SCDB數(shù)據(jù)據(jù)庫庫。。②展開數(shù)據(jù)庫庫SCDB,并展開數(shù)據(jù)據(jù)庫SCDB目錄下的【表】,右擊“dbo.Student”選項,在在彈出的快快捷菜單中中,選擇【設(shè)計(G)】命令,打開開【設(shè)計表】窗口,選中中“Sex”,然后,,單擊【菜單欄】中的【表設(shè)計器】窗口工具欄欄上的【CHECK約束】命令,如圖所示;或者將鼠鼠標(biāo)放在列列“Sex”上,右擊擊鼠標(biāo),在在彈出的快快捷菜單中中,選擇【CHECK約束】命令,如圖所示。任務(wù)2:約束的實現(xiàn)現(xiàn)③在彈出的的【CHECK約束】窗口中單擊擊【添加】按鈕,如圖所示。④單擊“表表達(dá)式”后后面的按鈕,,進(jìn)入入如圖所所示的CHECK約束表表達(dá)式式的界界面,,在““表達(dá)達(dá)式””文本本框中中輸入入約束束表達(dá)達(dá)式““Sex='男'ORSex='女',如圖所所示。然后后,單單擊““確定定”按按鈕。。任務(wù)2:約束的的實現(xiàn)現(xiàn)⑤在【設(shè)計表表】窗口單單擊(【保存】),即即完成成了創(chuàng)創(chuàng)建并并保存存CHECK約束的的操作作。以以后用用戶輸輸入數(shù)數(shù)據(jù)時時,若若輸入入性別別不是是“男男”或或“女女”,,系統(tǒng)統(tǒng)將報報告輸輸入無無效。。要想刪刪除上上面創(chuàng)創(chuàng)建的的CHECK約束,,選擇擇該約約束,,右擊擊鼠標(biāo)標(biāo),在在彈出出的菜菜單中中選擇擇【刪除】命令,,如圖所所示,然后后單擊擊“關(guān)關(guān)閉””按鈕鈕,即即可刪刪除CHECK約束。。任務(wù)2:約束的的實現(xiàn)現(xiàn)【例】使用Transact-SQL語句為為學(xué)生生表Student創(chuàng)建CHECK約束。。在SQLServerManagementStudio查詢編編輯器器中運(yùn)運(yùn)行以以下代代碼::USESCDBGOALTERTABLEStudentADDCONSTRAINTCK_StudentCHECK(sex='男'orsex='女')GO任務(wù)2:約束的的實現(xiàn)現(xiàn)刪除CHECK約束的語語句格式式如下::DROPCONSTRAINTCHECKconstraint_name【例】刪除創(chuàng)建建的約束束CK_Student。USESCDBGOALTERTABLEStudentDROPCONSTRAINTCK_StudentGO任務(wù)3:默認(rèn)值值的實現(xiàn)現(xiàn)1.默認(rèn)值的的概念與在約束束中介紹紹的DEFAULT約束類似似,使用用默認(rèn)值值也可以以實現(xiàn)當(dāng)當(dāng)用戶在在向數(shù)據(jù)據(jù)庫表中中插入新新紀(jì)錄時時,如果果沒有給給出某列列的輸入入值,則則有系統(tǒng)統(tǒng)自動為為該列輸輸入默認(rèn)認(rèn)值的功功能。默認(rèn)值可可以是常常量、內(nèi)內(nèi)置函數(shù)數(shù)或數(shù)學(xué)學(xué)表達(dá)式式。任務(wù)3:默認(rèn)值值的實現(xiàn)現(xiàn)2.創(chuàng)建默認(rèn)認(rèn)值通常創(chuàng)建建并使用用默認(rèn)值值的步驟驟為:①創(chuàng)建一個個默認(rèn)值對對象。創(chuàng)建默認(rèn)的的命令如下下:CREATEDEFAULTdefault_nameASconstraint_expression任務(wù)3:默認(rèn)值的的實現(xiàn)②將其捆綁綁到列或用用戶自定義義數(shù)據(jù)類型型上。綁定默認(rèn)值值的命令如如下:EXECsp_bindefaultdefault_name,'table_name.[column_name]'任務(wù)3:默認(rèn)值的的實現(xiàn)3.刪除默認(rèn)值值通常刪除默默認(rèn)值的步步驟為:①解除默認(rèn)認(rèn)值捆綁的的列或用戶戶自定義數(shù)數(shù)據(jù)類型。。解除綁定默默認(rèn)值的命命令如下::EXECsp_unbindefault'table_name.column_name'②刪除該默默認(rèn)值。具體的命令令語句如下下:DROPDEFAULTdefault_name任務(wù)務(wù)4:規(guī)規(guī)則則的的實實現(xiàn)現(xiàn)1.規(guī)則則的的概概念念規(guī)則則也也是是實實現(xiàn)現(xiàn)數(shù)數(shù)據(jù)據(jù)完完整整性性的的方方法法之之一一,,其其作作用用與與CHECK約束束的的部部分分功功能能相相同同。。規(guī)規(guī)則則可可以以被被綁綁定定到到一一個個列列或或者者用用戶戶定定義義數(shù)數(shù)據(jù)據(jù)類類型型上上,,它它提提供供了了一一種種加加強(qiáng)強(qiáng)列列或或用用戶戶定定義義數(shù)數(shù)據(jù)據(jù)類類型型域域約約束束的的機(jī)機(jī)制制。。當(dāng)當(dāng)其其被被綁綁定定到到列列或或用用戶戶定定義義的的數(shù)數(shù)據(jù)據(jù)類類型型上上時時,,用用來來指指定定允允許許輸輸入入到到列列中中的的數(shù)數(shù)據(jù)據(jù),,即即當(dāng)當(dāng)用用戶戶向向表表中中插插入入數(shù)數(shù)據(jù)據(jù)時時,,用用來來指指定定該該列列接接受受數(shù)數(shù)據(jù)據(jù)值值的的范范圍圍。。同同時時,,規(guī)規(guī)則則與與默默認(rèn)認(rèn)一一樣樣在在數(shù)數(shù)據(jù)據(jù)庫庫中中只只需需要要定定義義一一次次,,就就可可以以被被多多次次應(yīng)應(yīng)用用。。任務(wù)4:規(guī)則的實現(xiàn)現(xiàn)2.創(chuàng)建規(guī)則和默認(rèn)值類似似,規(guī)則創(chuàng)建建后,需要將將其捆綁到列列上或用戶自自定義數(shù)據(jù)類類型上。創(chuàng)建規(guī)則的命命令如下:CREATERULErule_nameASconstraint_expression捆綁規(guī)則的命命令語句如下下:EXECsp_bindrulerule_name,'table_name.[column_name]'任務(wù)4:規(guī)則的實現(xiàn)現(xiàn)如果在列或數(shù)數(shù)據(jù)類型上已已經(jīng)捆綁了規(guī)規(guī)則,那么當(dāng)當(dāng)再次向它們們捆綁規(guī)則時時,舊規(guī)則將將自動被新規(guī)規(guī)則覆蓋,而而不會捆綁多多條規(guī)則。捆綁規(guī)則可以以使用系統(tǒng)存存儲過程sp_bindrule,解除規(guī)則的的相關(guān)綁定可可以使用系統(tǒng)統(tǒng)存儲過程sp_unbindrule。任務(wù)4:規(guī)則的實現(xiàn)現(xiàn)3.刪除規(guī)則①解除除規(guī)則則捆綁綁的列列或用用戶自自定義義數(shù)據(jù)據(jù)類型型。解除綁綁定默默認(rèn)值值的命命令如如下::EXECsp_unbindrule'table_name.column_name'②刪除除該規(guī)規(guī)則。。具體的的命令令語句句如下下:DROPRulerule_name任務(wù)5:用戶戶自定定義函函數(shù)的的實現(xiàn)現(xiàn)1.用戶自自定義義函數(shù)數(shù)為了擴(kuò)擴(kuò)展T-SQL的編程程能力力,SQLServer2005除了提提供的的內(nèi)部部函數(shù)數(shù)外,,還允允許用用戶自自定義義函數(shù)數(shù)。用用戶可可以使使用CREATEFUNCTION語句編編寫自自已的的函數(shù)數(shù),以以滿足足特殊殊需要要。用用戶自自定義義函數(shù)數(shù)可用用傳遞遞一個個或多多個參參數(shù),,并返返回一一個簡簡單的的數(shù)值值。任務(wù)5:用戶戶自定定義函函數(shù)的的實現(xiàn)現(xiàn)(1)創(chuàng)建建標(biāo)量量用戶戶自定定義函函數(shù)標(biāo)量用用戶自自定義義函數(shù)數(shù)返回回一個個簡單單的數(shù)數(shù)值,,如int、char、decimal等,但但禁止止使用用text、ntext、image、cursor和timestamp作為返返回的的參數(shù)數(shù)。該函數(shù)數(shù)的函函數(shù)體體被封封裝在在以BEGIN語句開開始,,END語句結(jié)結(jié)束的的范圍圍內(nèi)。。任務(wù)5:用戶戶自定定義函函數(shù)的的實現(xiàn)現(xiàn)其語法法格式式如下下:CREATEFUNCTION[owner_name].function_name(@parameter_namescalar_parameter_data_type)RETURNscalar_return_data_type[AS]BEGINFUNCTION_bodyRETURNscalar_expressionEND任務(wù)5:用戶戶自定定義函函數(shù)的的實現(xiàn)現(xiàn)【例】創(chuàng)建一一個自自定義義函數(shù)數(shù),返返回特特定課課程的的平均均成績績。USESCDBGOCREATEFUNCTIONAvgGrade_SC(@CourseIDVarchar(20))RETURNSFLOATASBEGINDECLARE@AVG_GradeFLOATSET@AVG_Grade=(SELECTAVG(Grade)FROMSCWHERECourseID=@CourseID)RETURN@AVG_GradeEND任務(wù)5:用戶戶自定定義函函數(shù)的的實現(xiàn)現(xiàn)(2)創(chuàng)建直接接表值用戶戶定義函數(shù)數(shù)表值函數(shù)返返回一個Table型數(shù)據(jù),對對直接表值值用戶定義義函數(shù)而言言,返回的的結(jié)果只是是一系列表表值,沒有有明確的函函數(shù)體。該該表是SELECT語句的結(jié)果集集。其語法格式為為:CREATEFUNCTION[owner_name].function_name(@parameter_namescalar_parameter_data_type)RETURNTABLE[AS]RETURN[(select_statement)]任務(wù)5:用戶自定義義函數(shù)的實現(xiàn)現(xiàn)【例】創(chuàng)建一個函數(shù)數(shù),要求返回回屬于同一個個班級的學(xué)生生的基本信息息。在SQLServerManagementStudio查詢編輯器中中運(yùn)行以下代代碼:USESCDBGOCREATEFUNCTION學(xué)生信息(@班級號Varchar(20))RETURNSTABLEASRETURN(SELECT*FROMStudentWHEREClassID=@班級號)項目2:SCDB中索引的創(chuàng)建建與管理【任務(wù)描述】數(shù)據(jù)庫中的索索引與書籍中中的目錄類似似,在一本書書中,利用目目錄可以快速速查找到所需需要的信息,,無須閱讀整整本書,在數(shù)數(shù)據(jù)庫中,索索引使數(shù)據(jù)庫庫程序無須對對整個表進(jìn)行行掃描,就可可以在其中找找到所需要的的數(shù)據(jù)。當(dāng)創(chuàng)創(chuàng)建數(shù)據(jù)庫并并優(yōu)化其性能能時,應(yīng)該為為數(shù)據(jù)查詢所所使用表的列列創(chuàng)建索引,,建立索引后后,SQLServer2005會根據(jù)索引的的有序排列,,通過高效的的查找算法找找到相關(guān)數(shù)據(jù)據(jù)。因此,對對表建立索引引,可以加快快數(shù)據(jù)的查詢詢速度和減少少系統(tǒng)的響應(yīng)應(yīng)時間。項目2:SCDB中索引的創(chuàng)建建與管理【任務(wù)目標(biāo)】了解索引的基基礎(chǔ)知識;掌握創(chuàng)建索引引的方法;學(xué)會管理和維維護(hù)索引。任務(wù)1:了解索引的基基礎(chǔ)知識1.索引概述索引與目錄類類似,如果想想快速查找而而不是逐頁查查找指定的內(nèi)內(nèi)容,可以通通過目錄中章章節(jié)的頁號找找到其對應(yīng)的的內(nèi)容。類似似地,索引通通過記錄表中中的關(guān)鍵值指指向表中的記記錄,這樣數(shù)數(shù)據(jù)庫引擎就就不用掃描整整個表而定位位到相關(guān)的記記錄。任務(wù)1:了解索引的基基礎(chǔ)知識1.索引概述SQLServer中一個表的存存儲是由數(shù)據(jù)據(jù)頁和索引頁頁兩個部分組組成的。數(shù)據(jù)據(jù)頁用來存放放除了文本和和圖像數(shù)據(jù)以以外的所有與與表的某一行行相關(guān)的數(shù)據(jù)據(jù),索引頁包包含組成特定定索引的列中中的數(shù)據(jù)。任務(wù)1:了解索引的基基礎(chǔ)知識2.索引的作用索引是以表列列為基礎(chǔ)的數(shù)數(shù)據(jù)庫對象,,它保存著表表中排序的索索引列,并且且記錄了索引引列在數(shù)據(jù)表表中的物理存存儲位置,實實現(xiàn)了表中數(shù)數(shù)據(jù)的邏輯排排序,其主要要目的是提高高SQLServer系統(tǒng)的性能,,加快數(shù)據(jù)的的查詢速度和和減少系統(tǒng)的的響應(yīng)時間。。任務(wù)1:了解索引的基基礎(chǔ)知識3.建立索引的原原則一般來說,適適合在這些列列上創(chuàng)建索引引:(1)在經(jīng)常需需要搜索索的列上上創(chuàng)建索索引,可可以加快快搜索的的速度。。(2)在作為主主鍵的列列上創(chuàng)建建索引,,強(qiáng)制該該列的唯唯一性和和組織表表中數(shù)據(jù)據(jù)的排列列結(jié)構(gòu)。。(3)在經(jīng)常用用在連接接的列上上創(chuàng)建索索引,這這些列主主要是一一些外鍵鍵,可以以加快連連接的速速度。(4)在經(jīng)常常使用用在WHERE子句中中的列列上創(chuàng)創(chuàng)建索索引,,加快快條件件的判判斷速速度。。(5)在經(jīng)常常需要要排序序的列列上創(chuàng)創(chuàng)建索索引,,因為為索引引已經(jīng)經(jīng)排序序,這這樣查查詢可可以利利用索索引的的排序序,加加快排排序查查詢時時間。。(6)在經(jīng)常常需要要根據(jù)據(jù)范圍圍進(jìn)行行搜索索的列列上創(chuàng)創(chuàng)建索索引,,因為為索引引已經(jīng)經(jīng)排序序,其其指定定的范范圍是是連續(xù)續(xù)的。。任務(wù)1:了解索索引的的基礎(chǔ)礎(chǔ)知識識4.索引的的分類類在MicrosoftSQLServer2005系統(tǒng)中中,有有兩種種基本本類型型的索索引::聚集集索引引和非非聚集集索引引。除除此之之外,,還有有唯一一索引引、包包含索索引、、索引引視圖圖、全全文索索引、、XML索引等等。任務(wù)1:了解索索引的的基礎(chǔ)礎(chǔ)知識識(1)聚集集索引引索引的的結(jié)構(gòu)構(gòu)是樹樹狀結(jié)結(jié)構(gòu),,樹的的頂部部稱為為葉級級,樹樹的其其他部部分稱稱為非非葉級級,樹樹的根根部在在非葉葉級中中。同同樣,,聚集集索引引的葉葉級和和非葉葉級構(gòu)構(gòu)成了了一個個樹狀狀結(jié)構(gòu)構(gòu)。在在聚集集索引引中,,表中中的數(shù)數(shù)據(jù)所所在的的數(shù)據(jù)據(jù)頁就就是聚聚集索索引的的葉級級,在在葉級級之外外的索索引頁頁是非非葉級級,如圖所所示。任務(wù)1:了解索索引的的基礎(chǔ)礎(chǔ)知識識聚集索索引在在使用用中具具有以以下特特點::①每一一個表表只能能有一一個聚聚集索索引,,因為為表中中數(shù)據(jù)據(jù)的物物理順順序只只有一一個。。②表中中行的的物理理順序序和索索引中中行的的物理理順序序是相相同的的,在在創(chuàng)建建任何何非聚聚集索索引之之前創(chuàng)創(chuàng)建聚聚集索索引,,這是是因為為聚集集索引引改變變了表表中行行的物物理順順序,,數(shù)據(jù)據(jù)行按按照一一定的的順序序排列列,并并目自自動維維護(hù)這這個順順序。。③聚集集索引引的平平均大大小大大約是是數(shù)據(jù)據(jù)表的的百分分之五五,但但是,,實際際的聚聚集索索引的的大小小常常常根據(jù)據(jù)索引引列的的大小小變化化而變變化。。④在索索引的的創(chuàng)建建過程程中,,SQLServer臨時使使用當(dāng)當(dāng)前數(shù)數(shù)據(jù)庫庫的磁磁盤空空間,,當(dāng)創(chuàng)創(chuàng)建聚聚集索索引時時,需需要120%的表空空間的的大小小,因因此,,一定定要保保證有有足夠夠的空空間來來創(chuàng)建建聚集集索引引。任務(wù)1:了解索索引的的基礎(chǔ)礎(chǔ)知識識(2)非聚聚集索索引非聚集集索引引具有有與表表的數(shù)數(shù)據(jù)完完全分分離的的結(jié)構(gòu)構(gòu)。使使用非非聚集集索引引不用用將物物理數(shù)數(shù)據(jù)頁頁中的的數(shù)據(jù)據(jù)按列列排序序。非聚集集索引引表示示行的的邏輯輯順序序。在在非聚聚集索索引中中,葉葉級沒沒有包包含數(shù)數(shù)據(jù)行行,如圖所所示。任務(wù)1:了解索索引的的基礎(chǔ)礎(chǔ)知識識(3)唯一一索引引唯一索索引確確保索索引鍵鍵不包包含重重復(fù)的的值,,因此此,表表或視視圖中中的每每一行行在某某種程程度上上是唯唯一的的。例例如,,如果果在表表中的的“姓姓名””字段段上創(chuàng)創(chuàng)建了了唯一一索引引,則則以后后輸入入的姓姓名將將不能能同名名。創(chuàng)建PRIMARYKEY或UNIQUE約束會會在表表中指指定的的列上上自動動創(chuàng)建建唯一一索引引。聚集索引和和非聚集索索引都可以以是唯一索索引。任務(wù)2:創(chuàng)建索引引1、在【對象資源管管理器】中創(chuàng)建索引引【例】在SCDB數(shù)據(jù)庫中的的Student表上創(chuàng)建基基于Name列,名為Student_index的不唯一、、非聚集索索引。(1)在SQLServerManagementStudio的【對象資源管管理器】面板中,選選擇要創(chuàng)建建索引的表表Student,然后展開開Student表前面的““+”號,選中中【索引】選項右擊,,在彈出的的快捷菜單單中選擇““新建索引引”命令,,如圖所示。(2)選擇【新建索引】命令,進(jìn)入入如圖5.34所示的【新建索引】窗口,在該該窗口中列列出了Student表上要建立立的索引,,包含其名名稱、是不不是聚集索索引、是否否設(shè)置唯一一索引等。。輸入索引引名稱為““Student_index”,選擇【非聚集】選項。任務(wù)2:創(chuàng)建索引引(3)單擊【添加】按鈕進(jìn)入如圖所示的界面,在在列表中選選擇需要創(chuàng)創(chuàng)建索引的的Name列(對于復(fù)復(fù)合索引,,可以選擇擇多個組合合列)。(4)單擊【確定】按鈕,SQLServer將完成索引引的創(chuàng)建。。任務(wù)2:創(chuàng)建索引引2.使用Transact-SQL語句創(chuàng)建索索引創(chuàng)建索引使用用CREATEINDEX語句。其語法法如下:CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXindex_nameON{table_name|view_name}([column1[ASC|DESC],column2[ASC|DESC],……]|[express])[TABLESPACEtablespace_name][PCTFREEn1][STORAGE(INITIALn2)][NOLOGGING][NOLINE][NOSORT];任務(wù)3:查看索引信息息1.在【對象資源管理理器】中查看索引信信息在SQLServerManagementStudio的【對象資源管理理器】面板中,使用用與創(chuàng)建索引引同樣的方法法,打開如下下圖所示的快快捷菜單,選選擇“屬性””命令,即可可看到該索引引對應(yīng)的信息息。任務(wù)3:查看索引信息息2.使用系統(tǒng)存儲儲過程sp_helpindex查看指定表的的索引信息【例】使用系統(tǒng)存儲儲過程sp_helpindex查看SCDB數(shù)據(jù)庫中Student表的索引信息息。在SQLServerManagementStudio查詢編輯器中中運(yùn)行如下命命令:USESCDBGOEXECsp_helpindexStudentGO任務(wù)4:重命名索引引1.在【對象資源管理理器】中重命命名索索引在SQLServerManagementStudio的【對象資資源管管理器器】面板中中,使使用與與創(chuàng)建建索引引同樣樣的方方法,,打開開如下下圖所所示的的快捷捷菜單單,選選擇““重命命名””命令令,然然后直直接輸輸入新新名即即可。。任務(wù)4:重命名索引引2.通過Transact-SQL語句來實現(xiàn),,更改索引名名稱的命令格格式如下:EXECsp_renametable_nameold_index_name,new_index_name其中:Table_name:索引所在的的表名稱。Old_Index_name:要重新命名名的索引的名名稱。New_Index_name:新的索引名名稱。任務(wù)5:刪除索引1.在【對象資源管理理器】中刪除索引在SQLServerManagementStudio的【對象資源管理理器】面板中展開SCDB數(shù)據(jù)庫,單擊擊【表】選項展開Student表,再展開【索引】前面的“+”號,選中索索引名為Student_index的索引,在彈彈出的快捷菜菜單中選擇【刪除】命令,進(jìn)入如圖所示的窗口,單擊擊【確定】按鈕,即可刪刪除該索引。。2.使用Transact-SQL語句刪除索引引使用Transact-SQL語句刪除索引引的語法格式式如下:DROPINDEXTable_name,index_name[,Table_name,index_name……]其中:Table_name:索引所在的的表名稱。Index_name:要刪除的索索引的名稱。項目3:SCDB中視圖的創(chuàng)建建與管理【任務(wù)描述】視圖(View)作為一種數(shù)據(jù)據(jù)庫對象,為為用戶提供了了一個可以檢檢索數(shù)據(jù)表中中的數(shù)據(jù)的方方式。用戶通通過視圖來瀏瀏覽數(shù)據(jù)表中中感興趣的部部分或全部數(shù)數(shù)據(jù),而數(shù)據(jù)據(jù)的物理存儲儲位置仍然在在表中?!救蝿?wù)目標(biāo)】了解視圖的基基本概念、作作用和特點;;掌握創(chuàng)建、、修改和刪除除視圖的方法法并能靈活運(yùn)運(yùn)用視圖來簡簡化表,及簡簡化數(shù)據(jù)的查查詢。任務(wù)1:了解視圖的的基礎(chǔ)知識1.視圖的概念視圖是一個虛虛擬表,并不不表示任何物物理數(shù)據(jù),只只是用來查看看數(shù)據(jù)的窗口口而已。視圖圖與真正的表表很類似,也也是由一組命命名的列和數(shù)數(shù)據(jù)行所組成成,其內(nèi)容由由查詢所定義義。但是視圖圖并不是以一一組數(shù)據(jù)的形形式存儲在數(shù)數(shù)據(jù)庫中,數(shù)數(shù)據(jù)庫中只存存儲視圖的定定義,而不存存儲視圖對應(yīng)應(yīng)的數(shù)據(jù),這這些數(shù)據(jù)仍存存儲在導(dǎo)出視視圖的基本表表中。當(dāng)基本本表中的數(shù)據(jù)據(jù)發(fā)生變化時時,從視圖中中查詢出來的的數(shù)據(jù)也隨之之改變。任務(wù)1:了解視圖的的基礎(chǔ)知識2.使用視圖的優(yōu)優(yōu)點和缺點(1)使用視圖的的優(yōu)點數(shù)據(jù)保密。對對不同的用戶戶定義不同的的視圖,使用用戶只能看到到與自己有關(guān)關(guān)的數(shù)據(jù)。簡化查詢操作作。為復(fù)雜的的查詢建立一一個視圖,用用戶不必輸入入復(fù)雜的查詢詢語句,只需需針對此視圖圖做簡單的查查詢即可。保證數(shù)據(jù)的邏邏輯獨立性。。對于視圖的的操作,例如如,查詢只依依賴于視圖的的定義,當(dāng)構(gòu)構(gòu)成視圖的基基本表需要修修改時,只需需要修改視圖圖定義中的子子查詢部分,,而基于視圖圖的查詢不用用改變。任務(wù)1:了解視圖的的基礎(chǔ)知識(2)使用視圖的的缺點當(dāng)更新視圖中中的數(shù)據(jù)時,,實際上是對對基本表的數(shù)數(shù)據(jù)進(jìn)行更新新。事實上,,當(dāng)從視圖中中插入或者刪刪除時,情況況也是這樣。。然而,某些些視圖是不能能更新數(shù)據(jù)的的,這些視圖圖有如下的特特征:有UNION等集合合操作作符的的視圖圖。有GROUPBY子句的的視圖圖。有諸諸如如AVG,SUM或者者M(jìn)AX等函函數(shù)數(shù)的的視視圖圖。。使用用DISTINCT關(guān)鍵鍵字字的的視視圖圖。。連接接表表的的視視圖圖(其中中有有一一些些例例外外)。任務(wù)務(wù)2:創(chuàng)創(chuàng)建建視視圖圖1.在【對象象資資源源管管理理器器】中創(chuàng)創(chuàng)建建視視圖圖【例】利用用【對象象資資源源管管理理器器】在SCDB數(shù)據(jù)據(jù)庫庫中中創(chuàng)創(chuàng)建建一一個個名名為為V_Student的視視圖圖,,該該視視圖圖僅僅查查看看Student表中中來來自自““荊荊門門””的的學(xué)學(xué)生生的的基基本本信信息息。。(1)啟動動SQLServerManagementStudio,在【對象資資源管管理器器】的樹型型目錄錄中,,找到到SCDB,展開開該數(shù)數(shù)據(jù)庫庫。(2)選擇擇【視圖】,按一一下鼠鼠標(biāo)右右鍵,,在彈彈出的的快捷捷菜單單中選選擇【新建視視圖】命令,,出現(xiàn)現(xiàn)如圖所所示。任務(wù)2:創(chuàng)建建視圖圖(3)在彈彈出的的【添加表表】對話框框選擇擇Student表,點點擊【添加】按鈕,,然后后點擊擊【關(guān)閉】按鈕關(guān)關(guān)閉【添加表表】對話框框,如圖所所示。(4)在如圖所所示的對話話框的的代碼碼編輯輯窗格格編輯輯代碼碼。(5)點擊擊工具具欄的的,彈出出如圖所所示的視圖圖保存存對話話框,,輸入入視圖圖的名名稱““V_Student”,,點點擊擊【確定定】按鈕鈕,,即即完完成成視視圖圖的的創(chuàng)創(chuàng)建建。。任務(wù)務(wù)2:創(chuàng)創(chuàng)建建視視圖圖2.使用用Transact-SQL語句句創(chuàng)創(chuàng)建建視視圖圖基本本語語法法如如下下::CREATEVIEWview_name[WITHENCRYPTION]ASselect_statement其中中,,WITHENCRYPTION子句句表表示示對對視視圖圖加加密密。。任務(wù)務(wù)3:顯顯示示視視圖圖的的信信息息1.在【對象象資資源源管管理理器器】中顯顯示示視視圖圖的的信信息息【例5.29】】在SQLServerManagementStudio窗口口中中查查看看和和修修改改視視圖圖V_Student的定定義義信信息息。。(1)在在【對象象資資源源管管理理器器】面板板中中展展開開【數(shù)據(jù)據(jù)庫庫】選項項,,然然后后展展開開【SCDB】】選項項。。(2)展展開開【視圖圖】選項項,,在在視視圖圖列列表表中中可可以以見見到到名名為為V_Student的視視圖圖。。如如果果沒沒有有看看到到,,單單擊擊““刷刷新新””按按鈕鈕,,刷刷新新一一次次。。(3)右右擊擊V_Student視圖圖,,在在彈彈出出的的快快捷捷菜菜單單中中選選擇擇【設(shè)計計】命令令打打開開如圖所示窗口,可以在在該對話框中中直接對視圖圖的定義進(jìn)行行修改。任務(wù)3:顯示視圖的的信息2.通過執(zhí)行系統(tǒng)統(tǒng)存儲過程sp_helptext查看視圖的信信息【例】通過執(zhí)行系統(tǒng)統(tǒng)存儲過程sp_helptext查看視圖V_Student2的定義信息。。在SQLServerManagementStudio查詢編輯器中中運(yùn)行如下命命令:USESCDBGOsp_helptext'V_Student2'任務(wù)4:重命名視圖圖【例】將視圖V_Student2重新命名為V_Stu2。(1)在【對象資源管理理器】面板中展開【數(shù)據(jù)庫】選項,然后展展開【SCDB】】選項。(2)展開【視圖】選項,在視圖圖列表中選擇擇名為V_Student2的視圖,右擊擊鼠標(biāo)在彈出出的菜單中選選擇【重命名】,如圖所示,然后將視圖圖V_Student2重新命名為V_Stu2。任務(wù)4:重命名視圖圖【例】將視圖V_Stu2重新命名為V_Student2。在SQLServerManagementStudio查詢編輯器中中運(yùn)行如下命命令:USESCDBGOEXECsp_rename'V_Stu2','V_Student2'任務(wù)5:視圖的修改改和刪除1.視圖的修改視圖的修改是是由ALTER語句來完成的的,基本語法法如下:ALTERVIEWview_name[WITHENCRYPTION]ASSelect_statement任務(wù)5:視圖的修改改和刪除2.視圖的刪除視圖的刪除是是通過DROP語句來實現(xiàn)的的?!纠渴褂肨ransact-SQL語句刪除視圖圖V_Student。在SQLServerManagementStudio查詢編輯器中中運(yùn)行如下命命令:USESCDBGODROPV_StudentGO項目:4SCDB中存儲過程的的創(chuàng)建與管理理【任務(wù)描述】當(dāng)用戶使用一一串Transact-SQL語句訪問服務(wù)務(wù)器上的數(shù)據(jù)據(jù)時,首先將將Transact-SQL語句發(fā)送到服服務(wù)器,由服服務(wù)器編譯Transact-SQL語句,并進(jìn)行行優(yōu)化產(chǎn)生查查詢的執(zhí)行計計劃,之后數(shù)數(shù)據(jù)庫引擎執(zhí)執(zhí)行查詢計劃劃,最終將執(zhí)執(zhí)行結(jié)果發(fā)回回客戶程序。。每當(dāng)執(zhí)行一一段Transact-SQL語句時,都要要重復(fù)以上操操作。是否可可以免去以上上重復(fù)操作,,而是將用戶戶經(jīng)常執(zhí)行的的可以實現(xiàn)某某種特殊功能能的代碼看成成一個集合,,當(dāng)用戶需要要使用這段代代碼時直接調(diào)調(diào)用呢?SQLServer提供了存儲過過程這一數(shù)據(jù)據(jù)庫對象來解解決以上問題題。項目:4SCDB中存儲過程的的創(chuàng)建與管理理【任務(wù)目標(biāo)】了解存儲過程程的基本概念念和作用;了了解存儲過程程的分類;學(xué)學(xué)會創(chuàng)建和執(zhí)執(zhí)行存儲過程程的方法;學(xué)學(xué)會管理和維維護(hù)存儲過程程;掌握存儲儲過程的重編編譯處理;學(xué)學(xué)會系統(tǒng)存儲儲過程和擴(kuò)展展存儲過程的的調(diào)用。任務(wù)1:了解存儲過過程的基礎(chǔ)知知識1.存儲過程的基基本概念存儲過程是在在數(shù)據(jù)庫服務(wù)務(wù)器端執(zhí)行的的一組Transact-SQL語句的集合,,經(jīng)編譯后存存放在數(shù)據(jù)庫庫服務(wù)器中。。它能夠向用用戶返返回數(shù)數(shù)據(jù)、向數(shù)據(jù)據(jù)庫表中寫入入和修改數(shù)據(jù)據(jù),還可以執(zhí)執(zhí)行系統(tǒng)函數(shù)數(shù)和管理操作作。用戶在編編程過程中只只需要給出存存儲過程的名名稱和必需的的參數(shù),就可可以方便地調(diào)調(diào)用它們。任務(wù)1:了解存儲過過程的基礎(chǔ)知知識2.存儲過程的特特點可以將存儲過過程的特點歸歸納如下:(1)能夠在單個個存儲過程中中執(zhí)行一系列列的Transact-SQL語句,也能夠夠在一個存儲儲過程中調(diào)用用其他的存儲儲過程。(2)存儲過程是是保存在服務(wù)務(wù)器端的已經(jīng)經(jīng)編譯的Transact-SQL語句,因此比比一般的Transact-SQL語句執(zhí)行速度度快,同時減減少了網(wǎng)絡(luò)流流量,節(jié)省大大量時間和數(shù)數(shù)據(jù)量。(3)存儲過程可可以使用控制制流語句和變變量,大大增增強(qiáng)了SQL的功能。(4)存儲過程在在提交前會自自動檢查語法法,避免了一一些不必要錯錯誤的出現(xiàn)。。(5)存儲儲過程程是管管理員員放在在服務(wù)務(wù)器端端的Transact-SQL語句,,可以以設(shè)置置用戶戶對存存儲過過程的的使用用權(quán)限限,從從而保保證了了數(shù)據(jù)據(jù)庫訪訪問的的安全全性。。任務(wù)1:了解解存儲儲過程程的基基礎(chǔ)知知識3.存儲過過程的的分類類SQLServer2005提供了了三種種存儲儲過程程:用用戶自自定義義存儲儲過程程、系系統(tǒng)存存儲過過程和和擴(kuò)展展存儲儲過程程。(1)用戶自自定義存存儲過程程用戶自定定義存儲儲過程也也就是用用戶自行行創(chuàng)建并并存儲在在用戶數(shù)數(shù)據(jù)庫中中的存儲儲過程,,它用于于完成用用戶指定定的某一一特定功功能(如查詢用用戶所需需的數(shù)據(jù)據(jù)信息)。任務(wù)1:了解存存儲過程程的基礎(chǔ)礎(chǔ)知識(2)系統(tǒng)存存儲過程程SQLServer2005不僅提供供用戶自自定義存存儲過程程的功能能,而且且也提供供許多可可作為工工具使用用的系統(tǒng)統(tǒng)存儲過過程。系系統(tǒng)存儲儲過程通通常使用用“sp_”為前綴綴,主要要用于管管理SQLServer和顯示有有關(guān)數(shù)據(jù)據(jù)庫及用用戶的信信息。(3)擴(kuò)展存儲儲過程擴(kuò)展存儲過過程(ExtendedStoredProcedures)是用戶可以以使用外部部程序語言言編寫的存存儲過程。。任務(wù)2:創(chuàng)建和執(zhí)執(zhí)行存儲過過程1.創(chuàng)建和執(zhí)行行簡單存儲儲過程(1)創(chuàng)建存儲儲過程的SQL語法格式如如下:CREATEPROCEDUREprocedure_name[WITHENCRYPTION][WITHRECOMPILE]ASSq1_statement任務(wù)2:創(chuàng)建建和執(zhí)執(zhí)行存存儲過過程(2)執(zhí)行行存儲儲過程程在存儲儲過程程創(chuàng)建建成功功后,,用戶戶可以以執(zhí)行行存儲儲過程程來檢檢查存存儲過過程的的返回回結(jié)果果。執(zhí)執(zhí)行存存儲過過程主主要有有兩種種方法法,一一是在在SQLServerManagementStudio的查詢詢編輯輯器中中運(yùn)用用Transact-SQL語句執(zhí)執(zhí)行;;二是是在SQLServerManagementStudio的對象象資源源管理理器中中直接接用鼠鼠標(biāo)操操作執(zhí)執(zhí)行存存儲過過程。。任務(wù)2:創(chuàng)建建和執(zhí)執(zhí)行存存儲過過程在SQLServerManagementStudio查詢編編輯器器中執(zhí)執(zhí)行存存儲過過程的的操作作步驟驟如下下:打開SQLServerManagementStudio查詢編編輯器器;在SQLServerManagementStudio查詢編編輯器器中輸輸入執(zhí)執(zhí)行存存儲過過程的的Transact-SQL語句,,然后后單擊擊執(zhí)行行。執(zhí)行存存儲過過程的的Transact-SQL語句基基本語語法如如下:EXECprocedure_name任務(wù)3:修改存存儲過過程1.使用Transact-SQL語句句修修改改存存儲儲過過程程修改改存存儲儲過過程程是是由由ALTER語句句來來完完成成的的,,其其語語法法如如下下::ALTERPROCEDUREprocedure_name[WITHENCRYPTION][WITHRECOMPILE]ASSql_statement任務(wù)務(wù)3:修改改存存儲儲過過程程2.在【對象象資資源源管管理理器器】面板板中中修修改改存存儲儲過過程程通過過SQLServerManagementStudio中的的【對象象資資源源管管理理器器】來修修改改存存儲儲過過程程的的具具體體步步驟驟如如下下::⑴展展開開SQLServerManagementStudio【【對象象資資源源管管理理器器】中的的【數(shù)據(jù)據(jù)庫庫】選項項,,然然后后展展開開【可編編程程性性】選項項,,如圖圖所所示示。⑵展展開開【存儲儲過過程程】選項項,,選選中中要要進(jìn)進(jìn)行行修修改改的的存存儲儲過過程程,,右右擊擊鼠鼠標(biāo)標(biāo),,在在彈彈出出的的菜菜單單中中選選擇擇【修改改】命令令,,如圖圖所所示示。⑶在在彈彈出出的的修修改改存存儲儲過過程程窗窗口口中中,,直直接接修修改改該該存存儲儲過過程程,,修修改改完完畢畢,,保保存存即即可可。。任務(wù)4:重命名存儲過過程重命名存儲過過程的具體步步驟:①在SQLServerManagementStudio窗口中打開【對象資源管理理器】面板,并展開開數(shù)據(jù)庫“SCDB”選項。②展開【可編程性】選項,選擇【存儲過程】選項。在存儲儲過程詳細(xì)列列表中,選中中存儲過程db.p_Student2,右擊鼠標(biāo),,在彈出的快快捷菜單中,,選擇【重命名】命令,如圖所示。③輸入存儲過過程的新名稱稱即可。任務(wù)5:刪除存儲過程程存儲過程的刪刪除常用的方方法有兩種,,一種是使用用Transact-SQL語句來刪除;;另一種是使使用SQLServerManagementStudio中的【對象資源管理理器】來進(jìn)行刪除。。1.通過Transact-SQL語句刪除存儲儲過程存儲過程的刪刪除是通過DROP語句來實現(xiàn)的的。任務(wù)5:刪除存儲過程程2.使用【對象資源管理理器】刪除存儲過程程以使用SQLServerManagementStudio窗口來刪除存存儲過程p_StudentNum為例,講述在在【對象資源管理理器】中刪除存儲過過程的步驟如如下:(1)在SQLServerManagementStudio窗口中打開【對象資源管理理器】面板,展開SCDB選項。(2)展開【可編程性】選項,右擊【存儲過程】選項,展開【存儲過程】,選中dbo.p_StudentNum,單擊鼠標(biāo)右右鍵,在彈出出的快捷菜單單中,選擇【刪除】命令即可,如圖所示。項目5SCDB中觸發(fā)器的創(chuàng)創(chuàng)建與管理【任務(wù)描述】觸發(fā)器是一種種特殊的存儲儲過程,在滿滿足某種特定定條件時,觸觸發(fā)器可以自自動執(zhí)行,完完成各種復(fù)雜雜的任務(wù)。觸觸發(fā)器通常用用于實現(xiàn)強(qiáng)制制業(yè)務(wù)規(guī)則和和數(shù)據(jù)完整性性?!救蝿?wù)目標(biāo)】了解觸發(fā)器的的概念;學(xué)會會創(chuàng)建觸發(fā)器器的方法;掌掌握觸發(fā)器的的管理和維護(hù)護(hù)。任務(wù)1:了解觸發(fā)器的的基礎(chǔ)知識觸發(fā)器是一種種特殊類型的的存儲過程。。存儲過程是是通過存儲過過程名被調(diào)用用執(zhí)行的,而而觸發(fā)器主要要是通過事件件觸發(fā)而被執(zhí)執(zhí)行的。觸發(fā)器(Trigger)不僅能實現(xiàn)完完整性規(guī)則,,而且能保證證一些較復(fù)雜雜業(yè)務(wù)規(guī)則的的實施。所謂謂觸發(fā)器就是是一類由事件件驅(qū)動的特殊殊過程,一旦旦由某個用戶戶定義,任何何用戶對該觸觸發(fā)器指定的的數(shù)據(jù)進(jìn)行增增加、刪除或或修改操作時時,系統(tǒng)將自自動激活相應(yīng)應(yīng)的觸發(fā)器,,在核心層進(jìn)進(jìn)行集中的完完整性控制。。任務(wù)1:了解觸發(fā)器的的基礎(chǔ)知識2.觸發(fā)器的優(yōu)點點(1)強(qiáng)制比CHECK約束更復(fù)雜的的數(shù)據(jù)的完整整性;(2)使用自定義義的錯誤提示示信息;(3)實實現(xiàn)現(xiàn)數(shù)數(shù)據(jù)據(jù)庫庫中中多多張張表表的的級級聯(lián)聯(lián)修修改改;(4)比比較較數(shù)數(shù)據(jù)據(jù)庫庫修修改改前前后后數(shù)數(shù)據(jù)據(jù)的的狀狀態(tài)態(tài);(5)維護(hù)規(guī)范化化數(shù)據(jù)。任務(wù)2:創(chuàng)建觸發(fā)器使用CREATETRIGGER命令創(chuàng)建觸發(fā)發(fā)器,其基本本語法如下:CREATETRIGGERtrigger_nameON{table|view}{FOR|AFTER|INSTEADOF}{[INSERT][,][UPDATE][,][DELETE]}[WITHENCRYPTION]ASIFUPDATE(column_name)[{and|or}UPDATE(column_name)…]sql_statement任務(wù)2:創(chuàng)建觸發(fā)器【例】在SCDB數(shù)據(jù)庫的Student表上創(chuàng)建一個個Student_trigger1的觸發(fā)器,當(dāng)當(dāng)執(zhí)行INSERT操作時,將顯顯示一條“數(shù)數(shù)據(jù)插入成功功!”的消息息。在SQLServerManagementStudio查詢編輯器中中運(yùn)行如下命命令:USESCDBGOCREATETRIGGERStudent_trigger1ONStudentFORINSERTASPRINT'數(shù)據(jù)插入入成功??!'GO任務(wù)3:管理觸觸發(fā)器1.查看觸發(fā)發(fā)器信息息(1)使用系系統(tǒng)存儲儲過程查查看觸發(fā)發(fā)器信息息系統(tǒng)存儲儲過程sp_help、sp_helptext、sp_depends和sp_helptrigger分別提供供有關(guān)觸觸發(fā)器的的不同信信息。(2)使用系系統(tǒng)表查查看觸發(fā)發(fā)器信息息用戶可以以通過查查詢系統(tǒng)統(tǒng)表sysobjects得到觸發(fā)發(fā)器的相相關(guān)信息息。任務(wù)3:管理觸觸發(fā)器2.修改觸發(fā)發(fā)器(1)重命名名觸發(fā)器器使用sp_rename命令修改改觸發(fā)器器的名字字,其語語法格式式為:EXECsp_renameoldname.newname其中,oldname:指觸發(fā)器原原來的名稱,,newname:指觸發(fā)器的的新名稱。任務(wù)3:管理觸發(fā)器器2.修改觸發(fā)器(2)修改觸發(fā)器器定義修改觸發(fā)器的的具體語法如如下:ALTERTRIGGERtrigger_nameON[table|view]{FOR[AFTER|INSTEADOF]}{[INSERT][,][UPDATE][,][DELETE]}[WITHENCRYPTION]ASIFUPDATE(cotumn_name)[{and|or}UPDATE(column_name)…]sql_statesment任務(wù)3:管理觸發(fā)器器3.禁止和啟動觸觸發(fā)器禁用和啟用觸觸發(fā)器的語法法如下:ALTERTABLEtable_name{ENABLE|DISABLE}TRIGGER{ALL|trigger_name[,…n]}任務(wù)3:管理觸發(fā)器器4.刪除觸發(fā)器(1)使用命令DRDPTRIGGER刪除指定的觸觸發(fā)器,具體體語法形式如如下:DROPTRIGGERtrigger_name(2)在【對象資料管理理器】面板中刪除觸觸發(fā)器按照前面介紹紹的方法找到到相應(yīng)的觸發(fā)發(fā)器并右擊鼠鼠標(biāo),在彈出出的快捷菜單單中,選擇【刪除】命令即可。(3)刪除觸發(fā)器器所在的表時時,SQLserver2005將自動刪除與與該表相關(guān)的的觸發(fā)器。項目6SCDB中游標(biāo)的使用用【任務(wù)描述】由SELECT語句查詢的結(jié)結(jié)果是一個記記錄集,即由由若干條記錄錄組成的一個個完整的單元元。在實際應(yīng)應(yīng)用中常常需需要從這種記記錄集中逐行行逐條的進(jìn)行行訪問。如::在統(tǒng)計某班班某課學(xué)生成成績分布的查查詢結(jié)果集中中,用戶往往往希望逐行訪訪問記錄,以以便知道每個個同學(xué)這門課課的成績是多多少,據(jù)此判判斷成績是優(yōu)優(yōu)、良、中、、及格還是不不及格。使用用游標(biāo)便可解解決這類問題題。項目6SCDB中游標(biāo)的使用用【任務(wù)目標(biāo)】了解游標(biāo)的概概念及其操作作,了解常用用游標(biāo)的類型型、使用游標(biāo)標(biāo)的步驟,掌掌握游標(biāo)的打打開方法,學(xué)學(xué)會利用游標(biāo)標(biāo)提取數(shù)據(jù)、、修改數(shù)據(jù)和和刪除數(shù)據(jù),,掌握游標(biāo)關(guān)關(guān)閉及釋放方方法。任務(wù)1:了解游標(biāo)的的基礎(chǔ)知識1.游標(biāo)的定義游標(biāo)(Cursor)是允許用戶能能夠從SELECT語句查詢的結(jié)結(jié)果集中,逐逐條逐行地訪訪問記錄,用用戶可以按照照自己的意愿愿逐行地顯示示、修改或刪刪除這些記錄錄的數(shù)據(jù)訪問問處理機(jī)制。。游標(biāo)可以理理解為數(shù)據(jù)表表記錄逐行訪訪問(移動當(dāng)前記錄錄和在當(dāng)前記記錄上進(jìn)行訪訪問)的位置置指針針。任務(wù)1:了解解游標(biāo)標(biāo)的基基礎(chǔ)知知識1.游標(biāo)的定定義游標(biāo)是一一個與Transact-SQL的SELECT語句相關(guān)關(guān)聯(lián)的符符號名,,它使用用戶可逐逐行訪問問由SQLServer返回的結(jié)結(jié)果集。。游標(biāo)包包括以下下兩個部部分:(1)游標(biāo)結(jié)結(jié)果集(CursorResultSet):由定義義該游標(biāo)標(biāo)的SELECT語句返回回的行集集合。(2)游標(biāo)位位置(CursorFasitian):指向這這個行集集合某一一行的當(dāng)當(dāng)前指針針。任務(wù)1:了解游游標(biāo)的基基礎(chǔ)知識識2.游標(biāo)的優(yōu)優(yōu)點從游標(biāo)定定義上可可以得到到游標(biāo)的的優(yōu)點,,這些優(yōu)優(yōu)點使游游標(biāo)在實實際應(yīng)用用中發(fā)揮揮了重要要的作用用:(1)允許程程序?qū)τ捎刹樵冋Z語句SELECT返回的行行集合中中的每一一行執(zhí)行行相同或或不同的的操作,,而不是是對整個個行集合合執(zhí)行同同一個操操作。(2)提供對對基于游游標(biāo)位置置的表中中的行進(jìn)進(jìn)行刪除除和更新新的能力力。(3)游標(biāo)實實際上是是作為面面向集合合的數(shù)據(jù)據(jù)庫管理理系統(tǒng)(DBMS)和面向行行的程序序設(shè)計之之間的橋橋梁。任務(wù)1:了解游游標(biāo)的基基礎(chǔ)知識識3.聲明游標(biāo)標(biāo)聲明游標(biāo)標(biāo)的語法法形式為為:DECLAREcursor_nameCURSORFORselect_statement[FOR{READONLY|UPDATE[OFcolumn_name_list[,……]]}]任務(wù)2:使用游標(biāo)標(biāo)1.打開游標(biāo)標(biāo)可使用OPEN語句打開開游標(biāo),,語法格格式如下下:OPEN{[GLOBAL]cursor_name|@cursor_variable_name}任務(wù)2:使用游標(biāo)標(biāo)2.讀取游標(biāo)標(biāo)中的數(shù)數(shù)據(jù)一旦游標(biāo)標(biāo)被打開開,就可可以從該該游標(biāo)集集合中讀讀取數(shù)據(jù)據(jù)了。從從游標(biāo)中中得到一一行數(shù)據(jù)據(jù)的操作作稱為一一個FETCH。該FETCH操作包含含如下操操作:FETCHFIRST:獲取游游標(biāo)中的的第一行行數(shù)據(jù)。。如果在打打開游標(biāo)標(biāo)之后第第一次執(zhí)執(zhí)行該操操作,則則將獲取取游標(biāo)中中的第一一行數(shù)據(jù)據(jù)。FETCHNEXT:獲取下下一行數(shù)數(shù)據(jù)。如果在打打開游標(biāo)標(biāo)之后第第一次執(zhí)執(zhí)行該操操作,則則將獲取取游標(biāo)中中的第一一行數(shù)據(jù)據(jù)。FETCHPRIOR:獲取上上一行數(shù)數(shù)據(jù)。如果在打打開游標(biāo)標(biāo)之后第第一次執(zhí)執(zhí)行該操操作,則則得不到到任何數(shù)數(shù)據(jù)。FETCHLAST:獲取游游標(biāo)中最最后行數(shù)數(shù)據(jù)。如果在打打開游標(biāo)標(biāo)之后第第一次執(zhí)執(zhí)行該操操作,則則將獲取取游標(biāo)中中的最后后一行數(shù)數(shù)據(jù)。FETCHABSOLUTEn:如果n是一個正正整數(shù),,則該操操作會獲獲取游標(biāo)標(biāo)中從第第一行開開始的n行數(shù)據(jù);;如果n是一個負(fù)負(fù)整數(shù),,那么該該操作會會獲取游游標(biāo)中從從末尾行行向前數(shù)數(shù)的n行數(shù)據(jù)。。如果n是0則不會獲獲取數(shù)據(jù)據(jù)。FETCHRELATIVEn:相對上上一個被被獲取的的行而言言,該操操作將獲獲取該行行前面或或者后面面的n行數(shù)據(jù)。。如果n是正數(shù)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 疾病保險課件教學(xué)課件
- 2024年度影視版權(quán)許可協(xié)議
- 04年影視制作委托合同
- 2024年度辦公樓照明系統(tǒng)燈具更換外包協(xié)議
- 2024年度“生態(tài)修復(fù)”工程咨詢服務(wù)合同
- 制作課件教學(xué)課件
- 2024年廣告發(fā)布與裝修施工合同協(xié)議
- 2024在熔盛重工與淡水河谷砂石船建造合同簽約儀式上的致辭熔盛重工朱文花
- 2024年度暖通設(shè)備安裝及調(diào)試合同
- 2024土地使用權(quán)轉(zhuǎn)讓合同(含開發(fā)權(quán))
- 黃河商品交易市場介紹稿
- Unit 3 My friends Part C Story time(教學(xué)設(shè)計)-2024-2025學(xué)年人教PEP版英語四年級上冊
- 2024中國海油校園招聘2024人(高頻重點提升專題訓(xùn)練)共500題附帶答案詳解
- 孫中山誕辰紀(jì)念日主題班會主題班會
- 2024年安徽省合肥市中考語文題卷(含答案)
- G -B- 43630-2023 塔式和機(jī)架式服務(wù)器能效限定值及能效等級(正式版)
- 24春國開電大《工具書與文獻(xiàn)檢索》平時作業(yè)1-4答案
- 文藝復(fù)興經(jīng)典名著選讀 知到智慧樹網(wǎng)課答案
- 2024年北京出版集團(tuán)有限責(zé)任公司招聘筆試沖刺題(帶答案解析)
- 2022-2023學(xué)年福建省廈門一中九年級(上)期中物理試卷
- 足球球性球感練習(xí)教案
評論
0/150
提交評論