《數(shù)據(jù)庫基礎(chǔ)》項目四 數(shù)據(jù)庫的管理_第1頁
《數(shù)據(jù)庫基礎(chǔ)》項目四 數(shù)據(jù)庫的管理_第2頁
《數(shù)據(jù)庫基礎(chǔ)》項目四 數(shù)據(jù)庫的管理_第3頁
《數(shù)據(jù)庫基礎(chǔ)》項目四 數(shù)據(jù)庫的管理_第4頁
《數(shù)據(jù)庫基礎(chǔ)》項目四 數(shù)據(jù)庫的管理_第5頁
已閱讀5頁,還剩145頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫基礎(chǔ)1任務(wù)十六、索引2任務(wù)十七、視圖項目四3任務(wù)十八、存儲過程4任務(wù)十九、觸發(fā)器知識儲備一、索引任務(wù)十六索引索引是根據(jù)表中一列或多列的值按照一定的順序建立的列值與記錄之間的對應(yīng)關(guān)系,以表列為基礎(chǔ)建立的數(shù)據(jù)庫對象。索引加快檢索數(shù)據(jù)行的速度,當查閱圖書的某一章節(jié)內(nèi)容時,為了方便查找,可以選擇目錄索引,快速找到頁碼。在“學(xué)籍管理”數(shù)據(jù)庫中,為加快查詢速度,給經(jīng)常使用的表創(chuàng)建索引,并設(shè)置相關(guān)屬性。如果列中有幾個不同的值,或者表中僅包含幾行值,則不推薦為其創(chuàng)建索引。因為,索引在搜索數(shù)據(jù)所花的時間比在表中逐行搜索話的時間更長。任務(wù)十六、索引知識儲備二、索引的類型任務(wù)十六索引(1)唯一索引:不允許兩行具有相同的索引值。也就是說,對于表中的任何兩行記錄來說,索引鍵的值都是各不相同。若創(chuàng)建了唯一約束,將自動創(chuàng)建唯一索引。(2)主鍵索引:為表定義一個主鍵將自動創(chuàng)建主鍵索引,主鍵索引是唯一索引的特殊類型。主鍵索引要求主鍵中的每個值都是唯一的,并且不能為空。(3)聚集索引(ClusteredIndex):表中各行的物理順序與鍵值的邏輯順序(索引順序)相同,每個表只能有一個聚集索引。聚集索引經(jīng)常創(chuàng)建在表中經(jīng)常被搜索到的列或按順序訪問的列上,在默認情況下,主鍵約束自動創(chuàng)建聚集索引。例如漢語字典默認按拼音排序,拼音順序較后的字對應(yīng)的頁碼也較大。知識儲備任務(wù)十六索引(4)非聚集索引(NonclusteredIndex):表的物理順序與索引順序不相同的索引。數(shù)據(jù)存儲在一個位置,索引存儲在另一個位置,索引中包含指向數(shù)據(jù)存儲位置的指針。例如,漢語字典按筆畫排序的索引就是非聚集索引,一畫的字如“乙”對應(yīng)的頁碼卻比三畫的字如“口”對應(yīng)的頁碼大。聚集索引和非聚集索引是從索引數(shù)據(jù)存儲的角度來區(qū)分的;而唯一索引和非唯一索引是從索引值來區(qū)分的,所以唯一索引和非唯一索引既可以是聚集索引,也可以是非聚集索引,只要列中的數(shù)據(jù)是唯一的,就可以在一張表中創(chuàng)建一個唯一索引和多個非聚集索引。知識儲備三、創(chuàng)建索引任務(wù)十六索引使用TSQL語句創(chuàng)建索引的簡單語法:CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXindex_nameONtable_name(column_name…)[WITHFILLFACTOR=x]知識儲備任務(wù)十六索引其中UNIQUE表示唯一索引,CLUSTERED、NONCLUSTERED表示聚集索引還是非聚集索引,F(xiàn)ILLFACTOR表示填充因子,指定一個0到100之間的值,該值指示索引頁填滿的空間所占的百分比,都是可選的。FILLFACTOR的作用是當系統(tǒng)新建或重建索引時,在每一個索引頁上預(yù)先留出一部分空間,使得系統(tǒng)在新增索引信息時能夠保持索引內(nèi)容在索引頁上盡量連續(xù)。值為100時表示頁將填滿,所留出的存儲空間量最小,一般用于表數(shù)據(jù)不變的情況下。值越小則數(shù)據(jù)頁上的空閑空間越大,這樣可以減少在索引增長過程中對數(shù)據(jù)頁進行拆分的需要,但需要更多的存儲空間,一般用于表數(shù)據(jù)容易發(fā)生變化的情況下。使用createindex方法,可以指定索引類型、唯一性等,可以創(chuàng)建聚集索引,也可以創(chuàng)建非聚集索引,既可以在一個列上創(chuàng)建索引,也可以在兩個或兩個以上的列上創(chuàng)建索引。知識儲備四、修改索引任務(wù)十六索引1.索引重命名語法格式:sp_renameOldName,NewName其中:oldname是原索引名稱;newname是新索引名稱。sp_renameOldName,NewName[,object_type]必須在索引前面加上表名前綴2.重新生成索引ALTERINDEXindex_nameONtable_or_view_nameREBUILD3.禁用索引ALTERINDEXindex_nameONtable_or_view_nameDISABLE知識儲備任務(wù)十六索引4.刪除索引使用TSQL語句中的DROPINDEX命令可以刪除表中的索引,其語法格式如下:DROPINDEX表名.索引名在刪除索引時,要注意不能使用DROPINDEX語句刪除由主鍵約束或唯一性約束創(chuàng)建的索引。要想刪除這些索引,必須先刪除這些約束。當刪除表時,該表全部索引也將被刪除。當刪除一個聚集索引時,該表的全部非聚集索引重新自動創(chuàng)建。任務(wù)描述任務(wù)二創(chuàng)建學(xué)生班級管理數(shù)據(jù)表創(chuàng)建數(shù)據(jù)庫IndexDB,在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表“學(xué)生表”,學(xué)生表中包含學(xué)號、姓名、性別、身份證號碼、出生日期、手機、家庭地址和系部字段。項目需要用TSQL語言在“學(xué)生表”中的“姓名”列上創(chuàng)建索引idx_name,在“手機”列上創(chuàng)建非聚集索引idx_mobilephone。在SSMS中對“學(xué)生表”中“性別”列上創(chuàng)建聚集索引idx_sex。查看已經(jīng)創(chuàng)建的索引,修改索引idx_mobilephone,刪除idx_sex性別索引。實訓(xùn)操作任務(wù)十六索引(1)創(chuàng)建數(shù)據(jù)庫IndexDB,在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表“學(xué)生表”,學(xué)生表中包含學(xué)號、姓名、性別、身份證號碼、出生日期、手機、家庭地址和系部字段。在學(xué)生表中輸入學(xué)生記錄,如圖16-1所示。(2)在學(xué)生表的“姓名”列上創(chuàng)建索引,該索引名稱為“idx_name”。在查詢編輯器中輸入以下代碼:createindexidx_nameon學(xué)生表(姓名)單擊工具欄上的“執(zhí)行”按鈕,便可完成該索引的創(chuàng)建。執(zhí)行后,在SSMS中展開表節(jié)點下的索引,可以看到索引的名稱,如圖16-2所示。實訓(xùn)操作任務(wù)十六索引實訓(xùn)操作任務(wù)十六索引實訓(xùn)操作任務(wù)十六索引(3)在學(xué)生表的“手機”列上創(chuàng)建一個唯一、非聚集索引,該索引名稱為“idx_mobilephone”。在查詢編輯器中輸入以下代碼:createuniquenonclusteredindexidx_mobilephoneon學(xué)生表(手機)單擊工具欄上的“執(zhí)行”按鈕,便可完成該索引的創(chuàng)建。執(zhí)行后,在SSMS中展開表節(jié)點下的索引,可以看到索引的名稱,如圖16-3所示。實訓(xùn)操作任務(wù)十六索引(4)在SSMS中創(chuàng)建聚集索引idx_sex,連接到包含默認的數(shù)據(jù)庫的服務(wù)器實例。在“對象資源管理器”中,展開“服務(wù)器”,展開“數(shù)據(jù)庫”,找到數(shù)據(jù)庫IndexDB,展開“學(xué)生表”節(jié)點,右擊“索引”節(jié)點,在彈出的菜單中選擇“新建索引”命令,如圖16-4所示。(5)在“新建索引”窗口的“常規(guī)”頁面,可以配置索引的名稱idx_sex、選擇索引的類型為“聚集”等,如圖16-5所示。(6)單擊“添加”按鈕,彈出“dbo.學(xué)生表”中選擇列的窗口,在窗口中選擇“性別”列的復(fù)選框,如圖16-6所示。實訓(xùn)操作任務(wù)十六索引實訓(xùn)操作任務(wù)十六索引實訓(xùn)操作任務(wù)十六索引實訓(xùn)操作任務(wù)十六索引實訓(xùn)操作任務(wù)十六索引(7)單擊“確定”按鈕后,返回“新建索引”窗口,然后再單擊“確定”按鈕?!八饕惫?jié)點下便生成了一個名“idx_sex”的索引,說明該索引創(chuàng)建成功,如圖16-7所示。(8)在SSMS中查看索引,在“對象資源管理器”窗口中,依次展開“數(shù)據(jù)庫IndexDB”,表節(jié)點“學(xué)生表”,展開“索引”節(jié)點,右鍵單擊需要查看索引信息的索引名稱,例如idx_mobilephone,在彈出的快捷菜單中選擇“屬性”命令,如圖16-8所示。圖168查看索引idx_mobilephone的屬性(9)在打開“索引屬性”對話框中,便可以看到當前索引的詳細信息,如圖16-9所示。(10)也可以展開“學(xué)生表”中的“統(tǒng)計信息”節(jié)點,右擊所要查看統(tǒng)計信息的索引idx_mobilephone,從彈出菜單中選擇“屬性”命令,如圖16-10所示。實訓(xùn)操作任務(wù)十六索引實訓(xùn)操作任務(wù)十六索引實訓(xùn)操作任務(wù)十六索引實訓(xùn)操作任務(wù)十六索引實訓(xùn)操作任務(wù)十六索引(11)打開“統(tǒng)計信息屬性”窗口,從“選項頁”中選擇“詳細信息”選項,顯示當前索引的統(tǒng)計信息,如圖16-11所示。(12)使用系統(tǒng)存儲過程sp_helpindex可以查看特定表上的索引信息,查看“學(xué)生表”的索引,在新建查詢窗口中,輸入以下代碼:EXECsp_helpindex學(xué)生表執(zhí)行上面語句后,可以看到返回結(jié)果如圖16-12所示。結(jié)果顯示了學(xué)生表上的所有索引的名稱、類型和建立索引的列。實訓(xùn)操作任務(wù)十六索引(13)修改索引名稱,語法格式為“sp_rename原索引名稱,新索引名稱”。修改索引idx_mobilephone名為idx_phone,在新建查詢窗口中,輸入以下代碼:EXECsp_rename學(xué)生表.idx_mobilephone,idx_phone如圖16-13所示。(14)重新生成索引idx_phone,在新建查詢窗口中,輸入以下代碼:ALTERINDEXidx_phoneON學(xué)生表REBUILD如圖16-14所示。實訓(xùn)操作任務(wù)十六索引(15)刪除索引,使用DROPINDEX命令可以刪除表中的索引,在新建查詢窗口中,輸入以下代碼:DROPINDEX學(xué)生表.idx_sex如圖16-15所示。(16)刪除索引,可以在SSMS中展開索引節(jié)點,類似于圖168的操作,單擊需要刪除的索引名稱idx_phone,在彈出的快捷菜單中選擇“刪除”命令,在彈出的刪除對象窗口,單擊確定,如圖16-16所示。實訓(xùn)操作任務(wù)十六索引實訓(xùn)操作任務(wù)十六索引實訓(xùn)操作任務(wù)十六索引實訓(xùn)操作任務(wù)十六索引實訓(xùn)操作任務(wù)十六索引實訓(xùn)操作任務(wù)十六索引1任務(wù)十六、索引2任務(wù)十七、視圖項目四3任務(wù)十八、存儲過程4任務(wù)十九、觸發(fā)器知識儲備一、視圖任務(wù)十七

視圖視圖是一種數(shù)據(jù)庫對象,是一個虛擬的數(shù)據(jù)表,該數(shù)據(jù)表中的數(shù)據(jù)記錄是從一個或多個表中進行查詢篩選后的結(jié)果。當對視圖中的數(shù)據(jù)進行修改時,相應(yīng)的基表數(shù)據(jù)也被修改;若基表的數(shù)據(jù)被修改,視圖中的對應(yīng)數(shù)據(jù)也會自動修改。視圖可以是一個數(shù)據(jù)表的一部分,也可以由多個基表的聯(lián)合;視圖也可以由一個或多個其他視圖產(chǎn)生。視圖上的操作和基表類似,但是DBMS對視圖的更新操作等往往存在一定的限制。視圖簡化了操作,也提供了數(shù)據(jù)庫的安全機制,可以只允許用戶通過視圖訪問數(shù)據(jù),而不允許用戶直接訪問基礎(chǔ)表。簡單地說,學(xué)生信息的數(shù)據(jù)庫中有多個表,學(xué)校各個部分所關(guān)注的學(xué)生數(shù)據(jù)內(nèi)容是不同的,可以根據(jù)不同的要求,創(chuàng)建用戶所需要的視圖。在“學(xué)籍管理”數(shù)據(jù)庫中,為簡化數(shù)據(jù)操作,將經(jīng)常使用的查詢定義為視圖,并對視圖進行相應(yīng)的編輯。任務(wù)十七、視圖知識儲備二、視圖操作任務(wù)十七

視圖視圖的操作主要包括視圖的創(chuàng)建、修改、刪除和重命名等,其操作可以通過SQLServer企業(yè)管理器和TransactSQL語句來實現(xiàn)。以刪除視圖為例:①在SSMS中刪除視圖的方法,與修改視圖類似,右擊需要刪除視圖名,在彈出的快捷菜單中選擇“刪除”命令,則在打開的窗口單擊“確定”按鈕,即可完成刪除操作。②使用TSQL語句刪除視圖,可以使用DROPVIEW語句來刪除視圖,其語法格式為:DROPVIEW視圖名知識儲備任務(wù)十七

視圖【例1】刪除Score_View視圖。DROPVIEWScore_View刪除一個視圖后,雖然它所基于的表和數(shù)據(jù)不會受到任何影響,但是依賴于該視圖的其他對象或查詢將會在執(zhí)行時出現(xiàn)錯誤。知識儲備三、視圖的應(yīng)用任務(wù)十七

視圖通過視圖可以完成某些和基礎(chǔ)表相同的一些數(shù)據(jù)操作,如數(shù)據(jù)的查詢、添加、修改和刪除。1.通過視圖插入表數(shù)據(jù)使用視圖插入數(shù)據(jù)與在基表中插入數(shù)據(jù)一樣,都可以通過INSERT語句來實現(xiàn)。插入數(shù)據(jù)的操作是針對視圖中的列的插入操作,而不是針對基表中的所有的列的插入操作。使用INSERT語句進行插入操作的視圖必須能夠在基表中插入數(shù)據(jù),否則插入操作會失敗。對于由多個基表連接而成的視圖來說,一個插入操作只能作用于一個基表上。知識儲備三、視圖的應(yīng)用任務(wù)十七

視圖2.通過視圖修改表數(shù)據(jù)語法格式:UPDATE視圖名SET列1=列值1列2=列值2……列n=列值nWHERE邏輯表達式知識儲備任務(wù)十七

視圖若通過視圖修改數(shù)據(jù),視圖必須定義在一個表上,并且不包括統(tǒng)計函數(shù),SELECT語句中不包括GROUPBY子句。在視圖中更新數(shù)據(jù)也與在基表中更新數(shù)據(jù)一樣,但是當視圖基于多個基表中的數(shù)據(jù)時,與插入操作一樣,每次更新操作只能更新一個基表中的數(shù)據(jù)。3.通過視圖刪除表數(shù)據(jù)通過視圖刪除數(shù)據(jù)與通過基表刪除數(shù)據(jù)的方式一樣,在視圖中刪除的數(shù)據(jù)同時在基表中也被刪除。當一個視圖連接了兩個以上的基表時,對數(shù)據(jù)的刪除操作則是不允許的。任務(wù)描述任務(wù)二創(chuàng)建學(xué)生班級管理數(shù)據(jù)表附加上已有的數(shù)據(jù)庫SSTS,在數(shù)據(jù)庫中打開數(shù)據(jù)表“學(xué)生表”“課程表”和“選課表”。項目需要在SSMS中創(chuàng)建視圖Score_View,利用TSQL語言創(chuàng)建視圖Score_View_2。查看已經(jīng)創(chuàng)建的視圖,修改視圖Score_View,刪除視圖Score_View。通過視圖查詢表數(shù)據(jù),通過視圖添加表數(shù)據(jù),通過視圖修改數(shù)據(jù),通過視圖刪除表數(shù)據(jù)。實訓(xùn)操作任務(wù)十七

視圖(1)在SSMS中創(chuàng)建視圖,在創(chuàng)建視圖前,先附加上前面項目中數(shù)據(jù)庫SSTS,為后續(xù)的實訓(xùn)作好準備。SSTS數(shù)據(jù)庫有三張表,分別是“學(xué)生表”“課程表”“選課表”,如圖17-1所示。(2)在數(shù)據(jù)庫SSTS中創(chuàng)建一個視圖Score_View,基于學(xué)生表、課程表和選課表,要求查詢“數(shù)據(jù)編程與操作”課程的考試成績大于等于60分的學(xué)生的學(xué)號、姓名、所屬院系、課程名稱和成績。在SSMS中,展開數(shù)據(jù)庫SSTS,右擊“視圖”節(jié)點,在彈出的快捷菜單中選擇“新建視圖”,如圖17-2所示實訓(xùn)操作任務(wù)十七

視圖(3)在“添加表”窗口中,選擇學(xué)生表、課程表和選課表3個表,單擊“添加”按鈕,如圖17-3所示。(4)單擊“關(guān)閉”按鈕,關(guān)閉添加表窗口,在視圖窗口中,顯示了3張表的全部列,在此可以選擇視圖查詢的列,按照查詢要求選擇“學(xué)號、姓名、系名、課程名和成績”列。在SQL窗格顯示了兩表的連接語句,表示了這個視圖包含的數(shù)據(jù)內(nèi)容,如圖17-4所示。(5)在條件窗格中設(shè)置過濾條件,在“成績”行的“篩選器”單元格中輸入“>=60”,在“課程名”單元格中輸入“數(shù)據(jù)編程與操作”,單擊執(zhí)行SQL按鈕,在“顯示結(jié)果窗格”中顯示查詢出的結(jié)果集,如圖17-5所示。實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖(6)單擊“保存”按鈕,在彈出的“選擇名稱”窗口中輸入視圖名稱Score_View,單擊“確定”按鈕即可。就可以看到視圖節(jié)點下增加了一個視圖Score_View,如圖17-6所示。(7)使用TSQL語句創(chuàng)建視圖。簡單語法結(jié)構(gòu):CREATEVIEW視圖名[是否加密,可選]ASSelect語句下面使用CREATEVIEW語句,創(chuàng)建上述例題中的視圖。創(chuàng)建這個視圖可以使用如下語句:在新建查詢窗口,輸入以下語句:實訓(xùn)操作任務(wù)十七

視圖CREATEVIEWScore_View_2ASSELECT學(xué)生表.學(xué)號,學(xué)生表.姓名,學(xué)生表.系名,選課表.成績,課程表.課程名FROM課程表INNERJOIN選課表ON課程表.課程號=選課表.課程號INNERJOIN學(xué)生表ON選課表.學(xué)號=學(xué)生表.學(xué)號WHERE(選課表.成績>=60)AND(課程表.課程名=數(shù)控編程與操作)執(zhí)行上面語句后,視圖節(jié)點下增加了一個視圖Score_View_2,結(jié)果如圖17-7所示。實訓(xùn)操作任務(wù)十七

視圖(8)使用SELECT語句查詢Score_View_2視圖,在新建查詢窗口,輸入以下語句:select*fromScore_View_2結(jié)果如圖17-8所示。(9)查看視圖,使用select語句查看視圖的內(nèi)容。例如,上例“使用SELECT語句查詢Score_View_2視圖”所示。在SSMS中查看視圖,與查看表類似,展開視圖,單擊視圖名,例如Score_View,右擊鼠標,在彈出的快捷菜單中,選擇“打開視圖”,結(jié)果如圖17-9所示。實訓(xùn)操作任務(wù)十七

視圖(10)用系統(tǒng)存儲過程sp_help查看視圖,語法格式:sp_help視圖名在新建查詢窗口中,輸入sp_helpScore_View,可以使用系統(tǒng)存儲過程SP_HELP來顯示視圖的名稱、擁有者、類型和創(chuàng)建時間等信息。查看視圖Score_View的基本信息,可以使用如下語句:SP_HELPScore_View執(zhí)行上述語句后,顯示結(jié)果如圖17-10所示。實訓(xùn)操作任務(wù)十七

視圖(11)使用系統(tǒng)存儲過程SP_HELPTEXT來顯示視圖定義的語句,查看視圖Score_View的文本信息,可以使用如下語句:SP_HELPTEXTScore_View執(zhí)行上面語句后,顯示Score_View視圖的文本信息如圖17-11所示。(12)修改視圖,在SSMS中修改視圖,視圖→右擊Score_View,在彈出的快捷菜單中選擇“修改”,保存修改后的視圖,如圖17-12所示。(13)在條件窗格中,查詢課程名為“電機學(xué)”,成績小于60分不及格的學(xué)生的學(xué)號、姓名、系名、課程名和成績信息,如圖17-13所示。實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖(14)使用TransactSQL語句修改視圖,可以使用ALTERVIEW語句來修改視圖,其語法格式如下:ALTERVIEW視圖名稱[(字段1,字段2…)]ASSELECT查詢語句[WITHCHECKOPTION]語法與CREATEVIEW語法類似。使用TSQL修改視圖Score_View,查詢課程名為“電機學(xué)”,成績小于60分不及格的學(xué)生的學(xué)號、姓名、系名、課程名和成績信息,并加密該視圖。實訓(xùn)操作任務(wù)十七

視圖在新建查詢窗口中,輸入以下代碼,alterviewScore_Viewwithencryptionasselect學(xué)生表.學(xué)號,學(xué)生表.姓名,學(xué)生表.系名,選課表.成績,課程表.課程名from課程表INNERJOIN選課表on課程表.課程號=選課表.課程號INNERJOIN學(xué)生表on選課表.學(xué)號=學(xué)生表.學(xué)號where(選課表.成績<60)and(課程表.課程名=電機學(xué))。如圖17-14所示。實訓(xùn)操作任務(wù)十七

視圖(15)查看的Score_View視圖已被加密,若用sp_helptext查看視圖文本信息,則返回該視圖被加密的信息。當查看被加密的視圖Score_View,會返回如下信息。對象‘Score_View’的文本已加密,如圖17-15所示。(16)通過視圖查詢表數(shù)據(jù),在建立視圖后,可以用類似表的查詢方式查詢視圖數(shù)據(jù)。查詢視圖Score_View_2中的成績最高的學(xué)生姓名和成績。實訓(xùn)操作任務(wù)十七

視圖select姓名,成績fromScore_View_2where成績in(selectmax(成績)fromScore_View_2)如圖17-16所示。實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖(17)通過視圖添加表數(shù)據(jù),語法格式:INSERTINTO視圖名VALUES(列值1,列值2,列值3,…,列值n)在視圖student_view中插入一行數(shù)據(jù),增加一個名為“馮剛”的學(xué)生記錄。插入前視圖student_view的內(nèi)容如圖17-17所示。在新建查詢窗口中輸入以下代碼:insertintostudent_viewvalues(201106035304100532,馮剛,男,機電工程系,1992-3-18)goselect*fromstudent_view插入后視圖student_view的內(nèi)容如圖17-18所示。實訓(xùn)操作任務(wù)十七

視圖(19)通過視圖修改表數(shù)據(jù),語法格式:UPDATE視圖名SET列1=列值1列2=列值2……列n=列值nWHERE邏輯表達式實訓(xùn)操作任務(wù)十七

視圖在新建查詢窗口中輸入以下代碼:updatestudent_viewset系名=電氣工程系where姓名=馮剛goselect*fromstudent_viewwhere姓名=馮剛修改后視圖student_view的內(nèi)容如圖17-19所示。實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖實訓(xùn)操作任務(wù)十七

視圖(20)通過視圖刪除表數(shù)據(jù),盡管視圖不一定包含基礎(chǔ)表的所有列,但可以通過視圖刪除基礎(chǔ)表的數(shù)據(jù)行。語法格式:DELETEFROM視圖名WHERE邏輯表達式在新建查詢窗口中輸入以下代碼:deletestudent_viewwhere姓名=馮剛goselect*fromstudent_view刪除后視圖student_view的內(nèi)容如圖17-20所示。實訓(xùn)操作任務(wù)十七

視圖1任務(wù)十六、索引2任務(wù)十七、視圖項目四3任務(wù)十八、存儲過程4任務(wù)十九、觸發(fā)器知識儲備一、存儲過程任務(wù)十八

存儲過程存儲過程是使用TSQL語言編寫的為完成特定的功能的程序,經(jīng)編譯后存儲在數(shù)據(jù)庫中。存儲過程也是數(shù)據(jù)庫對象,通過使用存儲過程提高數(shù)據(jù)庫的安全性和減少網(wǎng)絡(luò)通信的數(shù)據(jù)量。任務(wù)十八、存儲過程知識儲備二、存儲過程優(yōu)點任務(wù)十八

存儲過程(1)允許模塊化程序設(shè)計。(2)執(zhí)行效率高。(3)減少網(wǎng)絡(luò)通信的數(shù)據(jù)量。(4)提高數(shù)據(jù)庫的安全性。知識儲備三、存儲過程分類任務(wù)十八

存儲過程(1)系統(tǒng)存儲過程:一般以“sp_”開頭,物理意義上系統(tǒng)存儲過程在Resource數(shù)據(jù)庫中,邏輯意義上存儲過程出現(xiàn)在系統(tǒng)數(shù)據(jù)庫和用戶定義數(shù)據(jù)庫的sys架構(gòu)中。(2)擴展存儲過程:一般以“xp_”開頭,允許用其他語言創(chuàng)建自己的外部存儲過程,以DLL形式存在。(3)用戶自定義存儲過程,可以輸入?yún)?shù)、向客戶端返回結(jié)果、消息等。知識儲備四、創(chuàng)建存儲過程任務(wù)十八

存儲過程存儲過程的創(chuàng)建的簡單語法如下:createprocedure過程名[@parameterdata_type]/*定義參數(shù)的類型*/[VARYING][=default][OUTPUT]/*定義參數(shù)的屬性等*/AS執(zhí)行的SQL語句創(chuàng)建存儲過程知識儲備任務(wù)十八

存儲過程1.創(chuàng)建的簡單存儲過程(1)在SQLServer管理平臺中,選擇“資源資源管理器”→“服務(wù)器”→“數(shù)據(jù)庫(例如ProDB)”→“可編程性”→“存儲過程”→“新建存儲過程”選項,如圖18-1所示。(2)在文本框中可以輸入創(chuàng)建存儲過程的TSQL語句,單擊“執(zhí)行”按鈕,即可創(chuàng)建該存儲過程。(3)存儲過程的執(zhí)行:exec過程名。知識儲備任務(wù)十八

存儲過程知識儲備五、查看、修改和刪除存儲過程任務(wù)十八

存儲過程1.查看存儲過程(1)在SSMS中查看存儲過程,展開指定的服務(wù)器和數(shù)據(jù)庫,選擇并依次展開“可編程性→存儲過程”,然后右擊要查看的存儲過程名稱,從彈出的快捷菜單中,選擇“編寫存儲過程腳本為→CREATE到→新查詢編輯器窗口”,則可以看到存儲過程的源代碼。如圖18-2所示。知識儲備任務(wù)十八

存儲過程(2)使用系統(tǒng)存儲過程來查看用戶創(chuàng)建的存儲過程??晒┦褂玫南到y(tǒng)存儲過程及其語法形式如下:sp_help,用于顯示存儲過程的參數(shù)及其數(shù)據(jù)類型,其語法為:sp_helpname,參數(shù)name為要查看的存儲過程的名稱。sp_helptext,用于顯示存儲過程的源代碼,其語法為:sp_helptextname,參數(shù)name為要查看的存儲過程的名稱。sp_stored_procedures,用于返回當前數(shù)據(jù)庫中的存儲過程列表,其語法為:sp_stored_proceduresname,其中name用于指定返回目錄信息的過程名。知識儲備任務(wù)十八

存儲過程2.修改存儲過程使用ALTERPROCEDURE語句語法與CREATEPROCEDURE語句類似。ALTERPROCEDUREprocedure_name[WITHENCRYPTION]ASsql語句知識儲備任務(wù)十八

存儲過程3.重命名和刪除存儲過程(1)重命名存儲過程:修改存儲過程的名稱可以使用系統(tǒng)存儲過程sp_rename,其語法形式如下:sp_rename原存儲過程名稱,新存儲過程名稱通過SQLServer管理平臺也可以修改存儲過程的名稱。在SQLServer管理平臺中,右擊要操作的存儲過程名稱,從彈出的快捷菜單中選擇“重命名”選項,當存儲過程名稱變成可輸入狀態(tài)時,就可以直接修改該存儲過程的名稱。知識儲備任務(wù)十八

存儲過程(2)刪除存儲過程:刪除存儲過程可以使用DROP命令,DROP命令可以將一個或者多個存儲過程或者存儲過程組從當前數(shù)據(jù)庫中刪除,其語法形式如下:dropproceduresp_namesp_name為存儲過程名。利用SQLServer管理平臺也可以很方便地刪除存儲過程。在SQLServer管理平臺中,右擊要刪除的存儲過程,從彈出的快捷菜單中選擇“刪除”選項,則會彈出除去對象對話框,在該對話框中,單擊“確定”按鈕,即可完成刪除操作。單擊“顯示相關(guān)性”按鈕,則可以在刪除前查看與該存儲過程有依賴關(guān)系的其他數(shù)據(jù)庫對象名稱知識儲備任務(wù)十八

存儲過程任務(wù)描述任務(wù)十八

存儲過程項目需要利用T-SQL語言創(chuàng)建存儲過程class_pro,創(chuàng)建的帶參數(shù)的存儲過程class_info,創(chuàng)建的帶通配符參數(shù)的存儲過程totalcredit。執(zhí)行已經(jīng)創(chuàng)建的存儲過程,查看已經(jīng)創(chuàng)建的存儲過程,修改存儲過程和刪除存儲過程。實訓(xùn)操作任務(wù)十八

存儲過程(1)利用TSQL語言創(chuàng)建存儲過程class_pro,在創(chuàng)建存儲過程前,先創(chuàng)建數(shù)據(jù)庫ProDB,在數(shù)據(jù)庫中創(chuàng)建表class,為后續(xù)的實訓(xùn)作好準備。表class中班級號id,班級名稱classname,總?cè)藬?shù)total。創(chuàng)建一個帶有SELECT語句的簡單存儲過程,該存儲過程返回所有班級編號ID,班級名稱,學(xué)生總數(shù)total等,該存儲過程不使用任何參數(shù)。程序清單如下:createprocedureclass_proasselect*fromclass如圖18-3所示。實訓(xùn)操作任務(wù)十八

存儲過程實訓(xùn)操作任務(wù)十八

存儲過程(2)在新建查詢窗口中輸入:execclass_pro,執(zhí)行結(jié)果如圖18-4所示,顯示表中所有信息,執(zhí)行的結(jié)果與SQL語句完全一致。(3)創(chuàng)建的帶參數(shù)的存儲過程,查詢指定班級的學(xué)生數(shù)。程序清單如下:createprocedureclass_info@classidintasselectid,classname,totalfromclasswhereid=@classid實訓(xùn)操作任務(wù)十八

存儲過程實訓(xùn)操作任務(wù)十八

存儲過程實訓(xùn)操作任務(wù)十八

存儲過程(4)在新建查詢窗口中輸入:execclass_info@classid=2009092014,執(zhí)行結(jié)果如圖18-6所示。顯示班級號為2009092014的班級信息。(5)創(chuàng)建的帶通配符參數(shù)的存儲過程,先在數(shù)據(jù)庫ProDB創(chuàng)建以下三張表,學(xué)生表S(學(xué)號,姓名,系別),課程表C(課程號,課程名,學(xué)分),選課表SC(學(xué)號,課程號,成績)。創(chuàng)建的帶通配符參數(shù)的存儲過程,用于計算指定學(xué)生的總學(xué)分,存儲過程中使用了一個輸入?yún)?shù)和一個輸出參數(shù)。實訓(xùn)操作任務(wù)十八

存儲過程程序清單如下:createproceduretotalcredit@namevarchar(20),@totalintoutputasselect@total=sum(學(xué)分)fromS,SC,Cwhere姓名=@nameandS.學(xué)號=SC.學(xué)號andC.課程號=SC.課程號groupbyS.學(xué)號。如圖18-7所示。實訓(xùn)操作任務(wù)十八

存儲過程(6)在新建查詢窗口中輸入:declare@totalintexectotalcredit張立,@totaloutputselect張立,@total執(zhí)行結(jié)果如圖18-8所示,顯示學(xué)生名為“張立”的總學(xué)分。知識儲備任務(wù)十八

存儲過程知識儲備任務(wù)十八

存儲過程知識儲備任務(wù)十八

存儲過程1任務(wù)十六、索引2任務(wù)十七、視圖項目四3任務(wù)十八、存儲過程4任務(wù)十九、觸發(fā)器知識儲備一、觸發(fā)器任務(wù)十九

觸發(fā)器觸發(fā)器是一種特殊的存儲過程,可以分為DML觸發(fā)器和DDL觸發(fā)器兩大類。DML觸發(fā)器在數(shù)據(jù)庫中發(fā)生數(shù)據(jù)操作語言DML事件時將啟用,DDL觸發(fā)器在服務(wù)器或數(shù)據(jù)庫中發(fā)生數(shù)據(jù)定義語言DDL事件時將調(diào)用這些觸發(fā)器。DML事件包括在指定表或視圖中修改數(shù)據(jù)的INSERT語句、UPDATE語句或DELETE語句。在表中插入記錄﹑更新記錄或者刪除記錄時,DML觸發(fā)器被自動激活。而DDL觸發(fā)器是為了響應(yīng)各種數(shù)據(jù)定義語言DDL事件。DDL事件主要與以關(guān)鍵字CREATE、ALTER和DROP開始的語句,執(zhí)行DDL式操作的系統(tǒng)存儲過程也可以激發(fā)DDL觸發(fā)器。觸發(fā)器可以用來實現(xiàn)對表實施復(fù)雜的完整性約束。任務(wù)十九、觸發(fā)器知識儲備二、DML觸發(fā)器的優(yōu)點任務(wù)十九

觸發(fā)器(1)DML觸發(fā)器可通過數(shù)據(jù)庫中的相關(guān)表實現(xiàn)級聯(lián)更改。(2)DML觸發(fā)器可以防止惡意或錯誤的INSERT、UPDATE以及DELETE操作。與CHECK約束不同,DML觸發(fā)器可以引用其他表中的列。知識儲備三、DML觸發(fā)器創(chuàng)建任務(wù)十九

觸發(fā)器創(chuàng)建觸發(fā)器時要指定觸發(fā)器名稱、定義觸發(fā)器的表名;觸發(fā)器將何時激發(fā);激活觸發(fā)器的數(shù)據(jù)修改語句,有效選項為INSERT、UPDATE或DELETE,多個數(shù)據(jù)修改語句可激活同一個觸發(fā)器;執(zhí)行觸發(fā)操作的編程語句。DML觸發(fā)器使用deleted和inserted邏輯表。它們在結(jié)構(gòu)上和觸發(fā)器所在的表的結(jié)構(gòu)相同,SQLServer會自動創(chuàng)建和管理這些表。Deleted表用于存儲delete,update語句所影響的行的副本。Inserted表用于存儲Insert或update語句所影響的行的副本。觸發(fā)器可以用TSQL在“新建查詢”里創(chuàng)建,也可以在SSMS中先確定當前操作的數(shù)據(jù)庫,再展開表節(jié)點,在“觸發(fā)器”節(jié)點點擊鼠標右鍵,再選擇“新建觸發(fā)器”來創(chuàng)建。知識儲備任務(wù)十九

觸發(fā)器(1)使用SQLServer管理平臺創(chuàng)建觸發(fā)器的過程如下:在SQLServer管理平臺中,展開指定的服務(wù)器和數(shù)據(jù)庫項,然后展開表,選擇并展開要在其上創(chuàng)建觸發(fā)器的表,如圖19-1所示。右擊觸發(fā)器選項,從彈出的快捷菜單中選擇“新建觸發(fā)器”選項,則會出現(xiàn)觸發(fā)器創(chuàng)建窗口,如圖19-2所示。最后單擊“執(zhí)行”按鈕,即可成功創(chuàng)建觸發(fā)器。(2)使用CREATETRIGGER命令創(chuàng)建DML觸發(fā)器的簡單語法形式如下:CREATETRIGGER觸發(fā)器名稱ON表FORINSERT、UPDATE或DELETEAST-SQL語句知識儲備任務(wù)十九

觸發(fā)器知識儲備任務(wù)十九

觸發(fā)器知識儲備任務(wù)十九

觸發(fā)器①insert觸發(fā)器。insert觸發(fā)器用于在表中增加數(shù)據(jù)時使用,該觸發(fā)器會在完成數(shù)據(jù)變動的基礎(chǔ)上做額外的動作,完成業(yè)務(wù)操作。②update觸發(fā)器,當在一個有update觸發(fā)器的表中修改記錄時,表中原來的記錄被移動到刪除表中,修改過的記錄插入到了插入表中,觸發(fā)器可以參考刪除表和插入表以及被修改的表,以確定如何完成數(shù)據(jù)庫操作。③delete觸發(fā)器。delete觸發(fā)器通常用于兩種情況,第一種情況是為了防止那些確實需要刪除但會引起數(shù)據(jù)一致性問題的記錄的刪除;第二種情況是執(zhí)行可刪除主記錄的子記錄的級聯(lián)刪除操作。知識儲備四、DDL觸發(fā)器的創(chuàng)建和應(yīng)用任務(wù)十九

觸發(fā)器DDL觸發(fā)器一般用于以下目的:①防止對數(shù)據(jù)庫架構(gòu)進行某些更改。②希望數(shù)據(jù)庫中發(fā)生某種情況以響應(yīng)數(shù)據(jù)庫架構(gòu)中的更改。③要記錄數(shù)據(jù)庫架構(gòu)中的更改或事件。僅在運行觸發(fā)DDL觸發(fā)器的DDL語句后,DDL觸發(fā)器才會激發(fā)。DDL觸發(fā)器無法作為INSTEADOF觸發(fā)器使用。DDL觸發(fā)器有兩種,一種是作用在當前SQLServer服務(wù)器上的,一種是作用在當前數(shù)據(jù)庫中的。這兩種DDL觸發(fā)器在ManagementStudio中所在的位置是不同的,作用在當前SQLServer服務(wù)器上的DDL觸發(fā)器所在位置是:“對象資源管理器”,選擇所在SQLServer服務(wù)器,定位到“服務(wù)器對象”→“觸發(fā)器”,在“摘要”對話框里就可以看到所有的作用在當前SQLServer服務(wù)器上的DDL觸發(fā)器,如圖19-3所示。知識儲備任務(wù)十九

觸發(fā)器知識儲備任務(wù)十九

觸發(fā)器作用在當前數(shù)據(jù)庫中的DDL觸發(fā)器所在位置是:“對象資源管理器”,選擇所在SQLServer服務(wù)器“數(shù)據(jù)庫”,所在數(shù)據(jù)庫,定位到“可編程性”→“數(shù)據(jù)庫觸發(fā)器”,在摘要對話框里就可以看到所有的當前數(shù)據(jù)庫中的DDL觸發(fā)器。右擊觸發(fā)器,在彈出的快捷菜單中選擇“編寫數(shù)據(jù)庫觸發(fā)器腳本為”→“CREATE到”→“新查詢編輯器對話框”,然后在新打開的“查詢編輯器”對話框里可以看到該觸發(fā)器的內(nèi)容,如圖19-4所示。也可以用TSQL語句創(chuàng)建DDL觸發(fā)器,創(chuàng)建DDL觸發(fā)器與創(chuàng)建DML觸發(fā)器類似,但要注意創(chuàng)建DDL觸發(fā)器和DML觸發(fā)器的語句區(qū)別知識儲備任務(wù)十九

觸發(fā)器知識儲備任務(wù)十九

觸發(fā)器建立DDL觸發(fā)器的簡單語句如下:CREATETRIGGER觸發(fā)器名ONALLSERVER或DATABASEFOR或AFTER激活DDL觸發(fā)器的事件AS要執(zhí)行的SQL語句其中,ON后面的AllServer是將DDL觸發(fā)器作用到整個當前的服務(wù)器上。如果指定了這個參數(shù),在當前服務(wù)器上的任何一個數(shù)據(jù)庫都能激活該觸發(fā)器。ON后面的Database是將DDL觸發(fā)器作用到當前數(shù)據(jù)庫,只能在這個數(shù)據(jù)庫上激活該觸發(fā)器。DDL觸發(fā)器不能指定的insteadof觸發(fā)器。知識儲備任務(wù)十九

觸發(fā)器激活DDL觸發(fā)器的事件包括兩種,一種在DDL觸發(fā)器作用在當前數(shù)據(jù)庫情況下可以使用以下事件如:CREATE_TABLE、ALTER_TABLE、DROP_TABLE、CREATE_ROLE、CREATE_USER等。另一種是在DDL觸發(fā)器作用在當前服務(wù)器情況下,可以使用以下事件如:CREATE_DATABASE、ALTER_DATABASE、DROP_DATABASE、CREATE_LOGIN等。知識儲備一、觸發(fā)器任務(wù)十九

觸發(fā)器管理DDL觸發(fā)器與管理DML觸發(fā)器類似,以DDL觸發(fā)器為例。1.查看觸發(fā)器除了在SSMS中查看觸發(fā)器,還可以用系統(tǒng)存儲過程查看觸發(fā)器。系統(tǒng)存儲過程sp_help、sp_helptext和sp_depends分別提供有關(guān)觸發(fā)器的不同信息。其具體用途和語法形式如下。(1)help:用于查看觸發(fā)器的一般信息,如觸發(fā)器的名稱、屬性、類型和創(chuàng)建時間。sp_help‘觸發(fā)器名稱’(2)helptext:用于查看觸發(fā)器的正文信息。sp_helptext‘觸發(fā)器名稱’知識儲備任務(wù)十九

觸發(fā)器(3)depends:用于查看指定觸發(fā)器所引用的表或者指定的表涉及到的所有觸發(fā)器。sp_depends‘觸發(fā)器名稱’sp_depends‘表名’2.修改DDL觸發(fā)器在SSMS如果要修改DDL觸發(fā)器內(nèi)容,就只能先刪除該觸發(fā)器,再重新建立一個DDL觸發(fā)器。雖然在ManagementStudio中沒有直接提供修改DDL觸發(fā)器的對話框,但在“查詢編輯器”對話框里依然可以用SQL語句來進行修改,運用語句ALTERTRIGGER修改觸發(fā)器。3.刪除DDL觸發(fā)器在SSMS中刪除觸發(fā)器,找到對應(yīng)的觸發(fā)器,右擊鼠標,選擇“刪除”即可,如圖19-5所示。另外運用語句DROPTRIGGER(TransactSQL)也可刪除觸發(fā)器。4.使用sp_rename命令修改觸發(fā)器的名稱sp_rename命令的語法形式如下:sp_renameoldname,newname知識儲備任務(wù)十九

觸發(fā)器知識儲備六、inserted表和deleted表任務(wù)十九

觸發(fā)器觸發(fā)器語句中使用了兩種特殊的表:inserted表和deleted表,inserted表放的是本次insert操作插入的數(shù)據(jù)或本次update操作更新后的數(shù)據(jù)。deleted表放的是本次delete操作刪除的數(shù)據(jù)或本次update操作更新前的數(shù)據(jù)。inserted表和deleted表里的記錄數(shù),該記錄數(shù)取決于是批量插入還是單條插入。若是單條插入,每插入一條觸發(fā)一次insert觸發(fā)器,每次觸發(fā)器里只有一條數(shù)據(jù)。知識儲備七、for觸發(fā)器和insteadof觸發(fā)器任務(wù)十九

觸發(fā)器For等同于after,也就是在insert、delete或update之后,才執(zhí)行觸發(fā)器里的語句。insteadof等同于代替insert、delete或update操作。雖然,這時候inserted或deleted兩個特殊表里有數(shù)據(jù),但是并沒有對本表數(shù)據(jù)進行insert、delete或update操作,還要在觸發(fā)器里手工進行對本表insert、delete或update的操作。任務(wù)描述任務(wù)十九

觸發(fā)器創(chuàng)建數(shù)據(jù)庫TriggerTestDB,在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表“student”,表中包含學(xué)號、姓名、性別、年齡、系部等字段。項目需要用TSQL語言創(chuàng)建觸發(fā)器DML觸發(fā)器,創(chuàng)建insert觸發(fā)器,創(chuàng)建update觸發(fā)器。創(chuàng)建數(shù)據(jù)庫DDLTriDB,在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表“test_table”,創(chuàng)建DDL觸發(fā)器,用于保護數(shù)據(jù)庫中的數(shù)據(jù)表不被修改和不被刪除。實訓(xùn)操作任務(wù)十九

觸發(fā)器(1)建立數(shù)據(jù)庫TriggerTestDB和數(shù)據(jù)表student,在表中建立insert觸發(fā)器,每當記錄增加一條時,輸出信息“成功地插入了一行”。程序的TSQL代碼如下:createdatabaseTriggerTestDBgouseTriggerTestDBcreatetablestudent(Snochar(10)primarykey,Snamenchar(8),Ssexchar(2)check(Ssex=男orSsex=女),Sagesmallint,Sdeptchar(20))實訓(xùn)操作任務(wù)十九

觸發(fā)器觸發(fā)器創(chuàng)建的代碼如下:createtriggertr_student_insertonstudentforinsertasprint成功地插入了一行在SQLServer2005中創(chuàng)建上例中的觸發(fā)器,如圖19-6所示實訓(xùn)操作任務(wù)十九

觸發(fā)器(2)現(xiàn)在用TSQL語句向表中添加記錄,如下:insertintostudentvalues(20121201,宋江,男,25,信息工程系)執(zhí)行后,提示“成功地插入了一行”,如圖19-7所示。(3)在學(xué)生表student中已經(jīng)有若干條記錄,其中已經(jīng)有姓名中已經(jīng)存在一名叫“宋江”的學(xué)生。現(xiàn)在創(chuàng)建insert觸發(fā)器,實現(xiàn)姓名不能重復(fù),若重復(fù),則刪除剛剛插入的記錄。insert觸發(fā)器的代碼如下:實訓(xùn)操作任務(wù)十九

觸發(fā)器createtriggertr_name_insertonstudentinsteadofinsertasbegindeclare@namechar(10)select@name=inserted.Snamefrominsertedifexists(selectSnamefromstudentwhereSname=@name)begin實訓(xùn)操作任務(wù)十九

觸發(fā)器——raiserror函數(shù)用來返回錯誤信息,第一個參數(shù)是錯誤信息內(nèi)容,第二個參數(shù)是指出錯誤消息級別,第三個參數(shù)是錯誤消息的狀態(tài)raiserror(不能插入,姓名重復(fù)!,6,1)——rollback回滾操作rollbacktransactionendelsebegininsertintostudentselectinserted.*frominsertedendend該insert觸發(fā)器建立如圖19-8所示。實訓(xùn)操作任務(wù)十九

觸發(fā)器實訓(xùn)操作任務(wù)十九

觸發(fā)器實訓(xùn)操作任務(wù)十九

觸發(fā)器實訓(xùn)操作任務(wù)十九

觸發(fā)器(4)檢驗tr_name_insert觸發(fā)器,向表中插入一條記錄如下:insertintostudentvalues(20121207,宋江,女,18,動漫產(chǎn)業(yè)系)則會提示“不能插入,姓名重復(fù)!”,并且回滾操作,如圖19-9所示實訓(xùn)操作任務(wù)十九

觸發(fā)器(5)在student表中建立一個插入觸發(fā)器,插入學(xué)生記錄時,年齡不能超過30歲。觸發(fā)器的代碼如下:createtriggertr_age_insertonstudentforinsertasif(selectSagefrominserted)>30beginselect*frominsertedprint學(xué)生年齡不符合要求rollbacktransactionend該insert觸發(fā)器建立如圖19-10所示。實訓(xùn)操作任務(wù)十九

觸發(fā)器實訓(xùn)操作任務(wù)十九

觸發(fā)器實訓(xùn)操作任務(wù)十九

觸發(fā)器(6)檢驗tr_age_insert觸發(fā)器,向表中插入一條記錄如下:insertintostudentvalues(20121207,梅青,女,32,信息工程系)則會提示“學(xué)生年齡不符合要求”,并且回滾操作,如圖19-

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論