數(shù)據(jù)庫(kù)應(yīng)用考試題目+答案(2022年整理)_第1頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用考試題目+答案(2022年整理)_第2頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用考試題目+答案(2022年整理)_第3頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

優(yōu)質(zhì)資料word版本——下載后可編輯優(yōu)質(zhì)資料word版本——下載后可編輯15/15優(yōu)質(zhì)資料word版本——下載后可編輯1.在安裝SQLServer2000時(shí),“僅客戶端工具”、“服務(wù)器和客戶端工具”及“僅連接”等安裝定義有什么差別?答:僅客戶端工具:僅安裝客戶端關(guān)系數(shù)據(jù)庫(kù)管理工具。此選項(xiàng)包含管理SQLServer的客戶端工具和客戶端連接組件。服務(wù)器和客戶端工具:執(zhí)行安裝服務(wù)器和客戶端工具以創(chuàng)建具有管理能力的關(guān)系數(shù)據(jù)庫(kù)服務(wù)器。僅連接:僅安裝關(guān)系數(shù)據(jù)庫(kù)客戶端連接組件,包括連接SQLServer2000命名實(shí)例所需的MDAC2.6(Microsoft數(shù)據(jù)訪問(wèn)組件)。該選項(xiàng)只提供連接工具,不提供客戶端工具或其它組件。2.一個(gè)數(shù)據(jù)庫(kù)中包含哪幾種文件?答:主數(shù)據(jù)庫(kù)文件:用來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)的啟動(dòng)信息以及部分或者全部數(shù)據(jù),是所有數(shù)據(jù)庫(kù)文件的起點(diǎn),包含指向其它數(shù)據(jù)庫(kù)文件的指針。一個(gè)數(shù)據(jù)庫(kù)只能有一個(gè)主數(shù)據(jù)庫(kù)文件。輔助數(shù)據(jù)庫(kù)文件:用于存儲(chǔ)主數(shù)據(jù)庫(kù)文件中未存儲(chǔ)的剩余數(shù)據(jù)和數(shù)據(jù)庫(kù)對(duì)象,一個(gè)數(shù)據(jù)庫(kù)可以沒(méi)有輔助數(shù)據(jù)庫(kù)文件,但也可以同時(shí)擁有多個(gè)輔助數(shù)據(jù)庫(kù)文件事務(wù)日志文件:一個(gè)存儲(chǔ)數(shù)據(jù)庫(kù)的更新情況等事務(wù)日志信息,當(dāng)數(shù)據(jù)庫(kù)損壞時(shí),管理員使用事務(wù)日志恢復(fù)數(shù)據(jù)庫(kù);每一個(gè)數(shù)據(jù)庫(kù)至少必須擁有一個(gè)事務(wù)日志文件,而且允許擁有多個(gè)日志文件。3.事務(wù)文件和數(shù)據(jù)文件分開(kāi)存放有什么好處?答:因?yàn)槔檬聞?wù)日志備份可以將數(shù)據(jù)庫(kù)恢復(fù)到特定的即時(shí)點(diǎn)(如輸入不想要的數(shù)據(jù)之前的那一點(diǎn))或故障發(fā)生點(diǎn)。在媒體恢復(fù)策略中應(yīng)考慮利用事務(wù)日志備份。4.什么是批處理?使用批處理有何限制?答:包含一個(gè)或多個(gè)T-SQL語(yǔ)句的組,從應(yīng)用程序?qū)⒁淮涡园l(fā)送到SQLServer執(zhí)行,SQLServer批處理語(yǔ)句作為整體編譯成一個(gè)可執(zhí)行單元。限制:如不能夠在同一個(gè)批處理中更改表,然后引用新列。如在一個(gè)批處理程序中,有兩條語(yǔ)句。第一條語(yǔ)句用來(lái)在一張表中插入一個(gè)字段,如在User表中插入員工的出生年月;第二條語(yǔ)句則用來(lái)引用這個(gè)列,如根據(jù)身份證號(hào)碼來(lái)推算出這個(gè)員工的出身年月并把這個(gè)值賦值給這個(gè)第一條語(yǔ)句創(chuàng)建的出身年月字段。5.?dāng)?shù)據(jù)檢索時(shí),COMPUTE和COMPUTEBY產(chǎn)生的結(jié)果有何不同?答:當(dāng)COMPUTE帶BY子句時(shí),符合SELECT條件的每個(gè)組都有兩個(gè)結(jié)果集:每個(gè)組的第一個(gè)結(jié)果集是明細(xì)行集,其中包含該組的選擇列表信息。每個(gè)組的第二個(gè)結(jié)果集有一行,其中包含該組的COMPUTE子句中所指定的聚合函數(shù)的小計(jì)。當(dāng)COMPUTE不帶BY子句時(shí),SELECT語(yǔ)句有兩個(gè)結(jié)果集:每個(gè)組的第一個(gè)結(jié)果集是包含選擇列表信息的所有明細(xì)行。第二個(gè)結(jié)果集有一行,其中包含COMPUTE子句中所指定的聚合函數(shù)的合計(jì)。6.什么是索引?索引分為哪兩種?各有什么特點(diǎn)?答:數(shù)據(jù)庫(kù)中的索引與書(shū)籍中的目錄類似。在一本書(shū)中,利用目錄可以快速查找所需信息,無(wú)須閱讀整本書(shū)。在數(shù)據(jù)庫(kù)中,索引使數(shù)據(jù)庫(kù)程序無(wú)須對(duì)整個(gè)表進(jìn)行掃描,就可以在其中找到所需數(shù)據(jù)。聚集索引和非聚集索引。聚集索引的特點(diǎn):行的物理位置和行在索引中的位置是相同的,每個(gè)表只能有一個(gè)聚集索引,聚集索引的平均大小大約為表大小的5%左右。非聚集索引特點(diǎn):若未指定索引類型,則默認(rèn)為非聚集索引,葉節(jié)點(diǎn)頁(yè)的次序和表的物理存儲(chǔ)次序不同,每個(gè)表最多可以有249個(gè)非聚集索引,在非聚集索引創(chuàng)建之前創(chuàng)建聚集索引。7.創(chuàng)建索引有什么優(yōu)點(diǎn)和缺點(diǎn)?答:優(yōu)點(diǎn):索引在數(shù)據(jù)庫(kù)中的作用類似于目錄在書(shū)籍中的作用,用來(lái)提高查找信息的速度。使用索引查找數(shù)據(jù),無(wú)需對(duì)整表進(jìn)行掃描,可以快速找到所需數(shù)據(jù)。缺點(diǎn):索引需要占用數(shù)據(jù)表以外的物理存儲(chǔ)空間。創(chuàng)建索引和維護(hù)索引要花費(fèi)一定的時(shí)間。當(dāng)對(duì)表進(jìn)行更新操作時(shí),索引需要被重建,這樣降低了數(shù)據(jù)的維護(hù)速度。8.什么是視圖?使用視圖的優(yōu)點(diǎn)和缺點(diǎn)是什么?答:視圖是一個(gè)虛擬表,其內(nèi)容由查詢定義。同真實(shí)的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。但是,視圖并不在數(shù)據(jù)庫(kù)中以存儲(chǔ)的數(shù)據(jù)值集形式存在。行和列數(shù)據(jù)來(lái)自由定義視圖的查詢所引用的表,并且在引用視圖時(shí)動(dòng)態(tài)生成。優(yōu)點(diǎn):隱蔽數(shù)據(jù)庫(kù)的復(fù)雜性;控制用戶提取數(shù)據(jù);簡(jiǎn)化數(shù)據(jù)庫(kù)用戶管理;簡(jiǎn)化查詢?nèi)秉c(diǎn):性能:SQLServer必須把視圖的查詢轉(zhuǎn)化成對(duì)基本表的查詢,如果這個(gè)視圖是由,一個(gè)復(fù)雜的多表查詢所定義,那么,即使是視圖的一個(gè)簡(jiǎn)單查詢,SQLServer也,把它變成一個(gè)復(fù)雜的結(jié)合體,需要花費(fèi)一定的時(shí)間。修改限制:當(dāng)用戶試圖修改視圖的某些行時(shí),SQLServer必須把它轉(zhuǎn)化為對(duì)基本,表的某些行的修改。對(duì)于簡(jiǎn)單視圖來(lái)說(shuō),這是很方便的,但是,對(duì)于比較復(fù)雜的,視圖,可能是不可修改的。9.修改視圖中的數(shù)據(jù)會(huì)受到哪些限制?答:必須對(duì)視圖的操作權(quán)限有權(quán)限對(duì)視圖上的某些列不能修改,這些列是:計(jì)算列,內(nèi)置函數(shù)列和行集合函數(shù)列刪除基表并不刪除視圖,建議采用與表明顯不同的名字命名規(guī)則對(duì)由多表連接成的視圖修改數(shù)據(jù)時(shí),不能同時(shí)影響一個(gè)以上的基表,也不能刪除視圖中的數(shù)據(jù)如果某些列因?yàn)橐?guī)則或者約束的限制不能接受從視圖插入的數(shù)據(jù)時(shí),則插入數(shù)據(jù)可能會(huì)失敗對(duì)具有NOTNULL的列進(jìn)行修改時(shí)可能會(huì)出錯(cuò)。通過(guò)視圖修改或者插入數(shù)據(jù)時(shí),必須保證未顯示的具有NOTNULL屬性的列有值,可以是默認(rèn)值,IDENTITY等,否則不能像視圖中插入數(shù)據(jù)行。10.什么是數(shù)據(jù)完整性?如果數(shù)據(jù)庫(kù)不實(shí)施數(shù)據(jù)完整性會(huì)產(chǎn)生什么結(jié)果?答:指的是數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)的一致性和準(zhǔn)確性;包括了實(shí)體完整性、域完整性、參照完整性、用戶定義的完整性。能夠防止數(shù)據(jù)庫(kù)中存在不符合語(yǔ)義規(guī)定的數(shù)據(jù),并且可以防止因錯(cuò)誤信息的輸入輸出造成無(wú)效操作或錯(cuò)誤信息。后果:無(wú)法保證數(shù)據(jù)庫(kù)數(shù)據(jù)的一致性和準(zhǔn)確性;容易造成數(shù)據(jù)庫(kù)中存在不符合規(guī)定的數(shù)據(jù)或者錯(cuò)誤信息11.?dāng)?shù)據(jù)完整性有哪幾類?如何實(shí)施?答:數(shù)據(jù)完整性分為四類:實(shí)體完整性、域完整性、參照完整性、用戶定義的完整性。數(shù)據(jù)庫(kù)采用多種方法來(lái)保證數(shù)據(jù)完整性,包括外鍵、束約、規(guī)則和觸發(fā)器。系統(tǒng)很好地處理了這四者的關(guān)系,并針對(duì)不同的具體情況用不同的方法進(jìn)行,相互交叉使用,相補(bǔ)缺點(diǎn)。12.什么是主鍵約束?什么是惟一約束??jī)烧哂惺裁磪^(qū)別?答:主鍵約束:有一列或列的組合,其值能唯一的標(biāo)識(shí)表中的每一行。唯一約束:不允許數(shù)據(jù)庫(kù)表在指定列上具有相同的值,但允許有空值。區(qū)別:一個(gè)表可以定義多個(gè)唯一約束,只能定義一個(gè)主鍵約束;空值得列上可以定義唯一約束,不能定義主鍵約束。13.什么是外鍵,怎樣建立外鍵約束?答:外鍵是用于建立和加強(qiáng)兩個(gè)表數(shù)據(jù)之間的鏈接的一列或多列。通過(guò)將保存表中主鍵值的一列或多列添加到另一個(gè)表中,可創(chuàng)建兩個(gè)表之間的鏈接。這個(gè)列就成為第二個(gè)表的外鍵。14.什么是存儲(chǔ)過(guò)程?使用存儲(chǔ)過(guò)程有什么好處?答:定義:存儲(chǔ)過(guò)程指的是存儲(chǔ)在服務(wù)器上的Transact-SQL語(yǔ)句的命名集合,是封裝重復(fù)性任務(wù)的方法,支持用戶聲明變量、條件執(zhí)行以及其他強(qiáng)有力的編程特性。好處:存儲(chǔ)過(guò)程封裝了商務(wù)邏輯,確保一致的數(shù)據(jù)訪問(wèn)和修改。若規(guī)則或策略有變化,則只需要修改服務(wù)器上的存儲(chǔ)過(guò)程,所有的客戶端就可以直接使用屏蔽數(shù)據(jù)庫(kù)模式的詳細(xì)資料。用戶不需要訪問(wèn)底層的數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)內(nèi)的對(duì)象提供了安全性機(jī)制。用戶可以被賦予執(zhí)行存儲(chǔ)過(guò)程的權(quán)限,而不必在存儲(chǔ)過(guò)程引用的所有對(duì)象上都有權(quán)限改善性能。預(yù)編譯的Transact-SQL語(yǔ)句,可以根據(jù)條件決定執(zhí)行哪一部分減少網(wǎng)絡(luò)通信量??蛻舳擞靡粭l語(yǔ)句調(diào)用存儲(chǔ)過(guò)程,就可以完成可能需要大量語(yǔ)句才能完成的任務(wù),這樣減少了客戶端和服務(wù)器之間的請(qǐng)求/回答包15.什么是觸發(fā)器?觸發(fā)器分有什么作用?答:觸發(fā)器是一類特殊的存儲(chǔ)過(guò)程,不能被直接調(diào)用,也不傳遞或接受參數(shù)作用:維護(hù)不可能在表創(chuàng)建時(shí)刻通過(guò)聲明性約束進(jìn)行的復(fù)雜的完整性約束限制。通過(guò)記錄所進(jìn)行的修改以及誰(shuí)進(jìn)行了修改來(lái)審計(jì)表中的信息。當(dāng)表被修改的時(shí)候,自動(dòng)給其他需要執(zhí)行操作的程序發(fā)信號(hào)。程序設(shè)計(jì)題假設(shè)在factory數(shù)據(jù)庫(kù)中已創(chuàng)建了如下3個(gè)表,(1)職工表worker,其結(jié)構(gòu)為:職工號(hào):int,姓名:char(8),性別:char(2),出生日期:datetime,黨員否:bit,參加工作:datetime,部門(mén)號(hào):int。(2)部門(mén)表depart,其結(jié)構(gòu)為:部門(mén)號(hào):int,部門(mén)名:char(10)。(3)職工工資表salary,其結(jié)構(gòu)為:職工號(hào):int,姓名:char(8),日期:datetime,工資:decimal(6,1)。1.使用Transact-SQL語(yǔ)句完成如下各題:(1).顯示所有職工的年齡。(2).求出各部門(mén)的黨員人數(shù)。(3).顯示所有職工的姓名和2004年1月份工資數(shù)。(4).顯示所有職工的職工號(hào)、姓名和平均工資。(5).顯示所有職工的職工號(hào)、姓名、部門(mén)名和2004年2月份工資,并按部門(mén)名順序排列。(6).顯示各部門(mén)名和該部門(mén)的所有職工平均工資。(7).顯示所有平均工資高于1200的部門(mén)名和對(duì)應(yīng)的平均工資。(8).顯示所有職工的職工號(hào)、姓名和部門(mén)類型,其中財(cái)務(wù)處和人事處屬管理部門(mén),市場(chǎng)部屬市場(chǎng)部門(mén)。答案:(1).SELECT姓名,YEAR(GETDATE())-YEAR(出生日期)AS‘年齡’FROMworker(2).SELECTdepart.部門(mén)名,count(*)AS‘黨員人數(shù)’ FROMworker,depart WHEREworker.黨員否=1ANDworker.部門(mén)號(hào)=depart.部門(mén)號(hào) GROUPBYdepart.部門(mén)名(3).SELECTworker.姓名,salary.工資FROMworker,salaryWHEREworker.職工號(hào)=salary.職工號(hào)ANDYEAR(salary.日期)=2004ANDMONTH(salary.日期)=1(4).SELECT職工號(hào),,AVG(工資)AS‘平均工資’FROMsalaryGROUPBY職工號(hào)(5).SELECTworker.職工號(hào),worker.姓名,depart.部門(mén)名,salary.工資AS‘2004年2月工資’FROMworker,depart,salaryWHEREworker.部門(mén)號(hào)=depart.部門(mén)號(hào)ANDworker.職工號(hào)=salary.職工號(hào)ANDYEAR(salary.日期)=2004ANDMONTH(salary.日期)=2ORDERBYworker.部門(mén)號(hào)(6).SELECTdepart.部門(mén)名,AVG(salary.工資)AS‘平均工資’FROMworker,depart,salaryWHEREworker.部門(mén)號(hào)=depart.部門(mén)號(hào)ANDworker.職工號(hào)=salary.職工號(hào)GROUPBYdepart.部門(mén)名(7).SELECTdepart.部門(mén)名,AVG(salary.工資)AS‘平均工資’FROMworker,depart,salaryWHEREworker.部門(mén)號(hào)=depart.部門(mén)號(hào)ANDworker.職工號(hào)=salary.職工號(hào)GROUPBYdepart.部門(mén)名HAVINGAVG(salary.工資)>1200(8).USEfactoryGOSELECTworker.職工號(hào),worker.姓名CASEdepart.部門(mén)名WHEN‘財(cái)務(wù)處’THEN‘管理部門(mén)’WHEN‘人事處’THEN‘管理部門(mén)’WHEN‘市場(chǎng)部’THEN‘市場(chǎng)部門(mén)’ENDAS‘部門(mén)類型’FROMworker,departWHEREworker.部門(mén)號(hào)=depart.部門(mén)號(hào)GO2.在前面建立的factory數(shù)據(jù)庫(kù)上,用Transact-SQL語(yǔ)句完成下列各題:(1)在worker表中的“部門(mén)號(hào)”列上創(chuàng)建一個(gè)非聚集索引,若該索引已存在,則刪除后重建。(2)在salary表的“職工號(hào)”和“日期”列創(chuàng)建聚集索引,并且強(qiáng)制惟一性。答案:(1)SETNOCOUNTOFFUSEfactoryIFEXISTS(SELECTnameFROMsysindexesWHEREname=’depno’DROPINDEXworker.depnoGOCREATEINDEXdepnoONworker(部門(mén)號(hào))GO(2)SETNOCOUNTOFFUSEfactoryIFEXISTS(SELECTnameFROMsysindexesWHEREname=’no_date’DROPINDEXsalary.no_dateGOCREATEUNIQUECLUSTEREDINDEXno_dateONsalary(職工號(hào),日期)GO3.在前面建立的factory數(shù)據(jù)庫(kù)上,用Transact-SQL語(yǔ)句完成下列各題:(1)建立視圖View1,查詢所有職工的職工號(hào)、姓名、部門(mén)名和2004年2月份工資,并按部門(mén)名順序排列。(2)建立視圖View2,查詢所有職工的職工號(hào)、姓名和平均工資。(3)建立視圖View3,查詢各部門(mén)名和該部門(mén)所有職工平均工資。(4)顯示視圖View3的定義答案:(1)USEfactoryGOIFEXISTS(SELECTTABLE_NAMEFROMINFORMATION_SCHEMA.VIEWSWHERETABLE_NAME=’View1’DROPVIEWView1GOCREATEVIEWView1ASSELECTTOP15worker.職工號(hào),worker.姓名,depart.部門(mén)名,salary.工資AS‘2004年2月工資’FROMworker,depart,salaryWHEREworker.部門(mén)號(hào)=depart.部門(mén)號(hào)ANDworker.職工號(hào)=salary.職工號(hào)ANDYEAR(salary.日期)=2004ANDMONTH(salary.日期)=2ORDERBYworker.部門(mén)號(hào)GOSELECT*FROMView1GO(2)USEfactoryGOIFEXISTS(SELECTTABLE_NAMEFROMINFORMATION_SCHEMA.VIEWSWHERETABLE_NAME=’View2’DROPVIEWView2GOCREATEVIEWView2ASSELECTworker.職工號(hào),worker.姓名,AVG(salary.工資)AS‘平均工資’FROMworker,salaryWHEREworker.職工號(hào)=salary.職工號(hào)GROUPBYworker.職工號(hào),worker.姓名GOSELECT*FROMView2GO(3)USEfactoryGOIFEXISTS(SELECTTABLE_NAMEFROMINFORMATION_SCHEMA.VIEWSWHERETABLE_NAME=’View3’DROPVIEWView3GOCREATEVIEWView3ASSELECTdepart.部門(mén)名,AVG(salary.工資)AS‘平均工資’FROMworker,depart,salaryWHEREworker.部門(mén)號(hào)=depart.部門(mén)號(hào)ANDworker.職工號(hào)=salary.職工號(hào)GROUPBYdepart.部門(mén)名GOSELECT*FROMView3GO(4)USEfactoryGOEXECsp_helptext‘View3GO4.在前面建立的factory數(shù)據(jù)庫(kù)上,用Transact-SQL語(yǔ)句完成下列各題:(1)實(shí)施worker表的“性別”字段默認(rèn)值為“男”的約束。(2)實(shí)施salary表的“工資”字段值限定在0~9999的約束。(3)實(shí)施depart表的“部門(mén)號(hào)”字段值惟一的非聚集索引的約束。(4)為worker表建立外鍵“部門(mén)號(hào)”,參考表depart的“部門(mén)號(hào)”列。(5)建立一個(gè)規(guī)則sex:@性別='男'OR@性別='女',將其綁定到worker表的“性別”列上。(6)刪除(1)小題所建立的約束。(7)解除(5)小題所建立的綁定并刪除規(guī)則sex。答案:(1)ALTERTABLEworkerADDCONSTRAINTdefault_sexDEFAULT‘男’FOR性別(2)ALTERTABLEsalaryADDCONSTRAINTcheck_salaryCHECK(工資>0AND工資<9999)(3)ALTERTABLEdepartADDCONSTRAINTunique_departUNIQUENONCLUSTERED(部門(mén)號(hào))(4)ALTERTABLEworkerADDCONSTRAINTFK_worker_noFOREIGNKEY(部門(mén)號(hào))REFERENCESdepart(部門(mén)號(hào))(5)CREATERULEsexAS@性別='男'OR@性別='女'EXECsp_bindrule‘sex’,’worker.性別’(6)ALTERTABLEworkerDROPCONSTRAINTdefault_sex(7)EXECsp_unbindrule’worker.性別’DROPRULEsex5.在前面建立的factory數(shù)據(jù)庫(kù)上,用Transact-SQL語(yǔ)句完成下列各題:(1)創(chuàng)建一個(gè)為worker表添加職工記錄的存儲(chǔ)過(guò)程Addworker。(2)創(chuàng)建一個(gè)存儲(chǔ)過(guò)程Delworker刪除worker表中指定職工號(hào)的記錄。(3)顯示存儲(chǔ)過(guò)程Delworker。(4)刪除存儲(chǔ)過(guò)程Addworker和Delworker。答案:(1)USEfactoryGOCREATEPROCEDUREAddworker@noint=NULL,@namechar(10)=NULL,@sexchar(2)=NULL,@birthdaydatetime=NULL,@nabit=NULL,@wtimedatetime=NULL,@depnoint=NULLASIF@noISNULLOR@nameISNULLOR@sexISNULLOR@birthdayISNULLOR@depnoISNULLBEGINPRINT‘請(qǐng)重新輸入該職工信息!’PRINT‘你必須提供職工號(hào)、姓名、性別、出生日期、部門(mén)號(hào)’RETURNENDBEGINTRANSACTIONINSERTINTOworkerVALUES(@no,@name,@sex,@birthday,@na,@wtime,@depno)IF@@error<>0BEGINROLLBACKTRANRETURNENDCOMMITTRANSACTIONPRINT‘職工’+@name+’的信息成功添加到表worker中’執(zhí)行下列語(yǔ)句,可驗(yàn)證存儲(chǔ)過(guò)程的正確性:USEfactoryGOAddwoeker20,’陳立’,’女’,’55/03/08’,1,’75/10/GOSELECT*FROMworkerGO(2)USEfactoryGOCREATEPROCEDUREDelworker@noint=NULLASIF@noISNULLBEGINPRINT‘必須輸入職工號(hào)!’RETURNENDBEGINTRANSACTIONDELETEFROMworkerWHERE職工號(hào)=@noIF@@error<>0BEGINROLLBACKTRANRETURNENDCOMMITTRANSACTIONPRINT‘成功刪除職工號(hào)為’+CAST(@noASCHAR(2))+’的職工記錄’執(zhí)行下列語(yǔ)句,可驗(yàn)證存儲(chǔ)過(guò)程的正確性:USEfactoryGODelwoeker20GOSELECT*FROMworkerGO(3)USEfactoryGOEXECsp_helptextDelworkerGO(4)USEfactoryGOIFEXISTS(SELECTnameFROMsysobjectsWHEREname=’Addworker’ANDtype=’P’DROPPROCEDUREAddworkerGOIFEXISTS(SELECTnameFROMsysobjectsWHEREname=’Delworker’ANDtype=’P’DROPPROCEDUREDelworkerGO6.在前面建立的factory數(shù)據(jù)庫(kù)上,用Transact-SQL語(yǔ)句完成下列各題:(1)在表depart上創(chuàng)建一個(gè)觸發(fā)器depart_update,當(dāng)更改部門(mén)號(hào)時(shí)同步更改worker表中對(duì)應(yīng)的部門(mén)號(hào)。(2)在表worker上創(chuàng)建一個(gè)觸發(fā)器worker_delete,當(dāng)刪除職工記錄時(shí)同步刪除salary表中對(duì)應(yīng)職工的工資記錄。(3)刪除觸發(fā)器depart_update。答案:(1)USEfactoryGOIFEXISTS(SELECTnameFROMsysobjectsWHEREtype=’TR’ANDname=’depart_update’DROPTRIGGERdepart_updateGOCREATETRIGGERdepart_updateONdepartFORUPDATEASDECLARE@olddepnoint,@newdepnointSELECT@olddepno=部門(mén)號(hào)FROMdeletedSELECT@newdepno=部門(mén)號(hào)FROMinsertedUPDATEworkerSET部門(mén)號(hào)=@newdepnoWHERE部門(mén)號(hào)=@olddepnoGO(2)USEfactoryGOIFEXISTS(SELECTnameFROMsysobjectsWHEREtype=’TR’ANDname=’worker_delete’DROPTRIGGERworker_deleteGOCREATETRIGGERworker_deleteONworkerFORDELETEASDECLARE@nointSELECT@no=職工號(hào)FROMdeletedDELETEFROMsalaryWHERE職工號(hào)=@noGO(3)USEfactoryGODROPTRIGGERdepart_updateGOusemastergoxp_cmdshell'mkdird:\project',NO_OUTPUT--創(chuàng)建文件夾project,xp_cmdshell為系統(tǒng)存儲(chǔ)過(guò)程--檢驗(yàn)數(shù)據(jù)庫(kù)是否存在,如果為真,刪除此數(shù)據(jù)庫(kù)--IFEXISTS(SELECTNAMEFROMmaster.dbo.SYSDATABASESWHERENAME=N'stuDB')DROPDATABASEstuDBGO--創(chuàng)建數(shù)據(jù)庫(kù)--CREATEDATABASEstuDBON(NAME=N'stuDB',FILENAME='d:\project\stuDB.mdf',SIZE=5mb,MAXSIZE=10mb,FILEGROWTH=15%)LOGON(NAME=N'stuDB_log',FILENAME='d:\project\stuDB_log.ldf',SIZE=2mb,MAXSIZE=4mb,FILEGROWTH=15%)GOUSEstuDB--判斷此表是否存在,如果為存在,刪除此表--IFEXISTS(SELECTNAMEFROMstuDB.dbo.SYSOBJECTSWHERENAME=N'stuInfo')DROPTABLEstuInfoGO--創(chuàng)建主表stuInfo--CREATETABLEstuInfo(stuNameNVARCHAR(20)NOTNULL,stuNoNCHAR(6)NOTNULL,stuSexNCHAR(4)NOTNULL,stuAgeSMALLINTNOTNULL,stuSeatSMALLINTIDENTITY(1,1),stuAddressNTEXT)GO--為主表stuInfo創(chuàng)建約束--ALTERTABLEstuInfoADDCONSTRAINTPK_stuNoPRIMARYKEY(stuNo),CONSTRAINTCK_stuNoCHECK(stuNoLIKE'S253[0-9][0-9]'),CONSTRAINTCK_stuSexCHECK(stuSex='男'ORstuSex='女'),CONSTRAINTCK_stuAgeCHECK(stuAgeBETWEEN15AND40),CONSTRAINTCK_stuSeatCHECK(stuSeat<=30),CONSTRAINTDF_stuAddressDEFAULT('地址不詳')FORstuAddressGOUSEstuDB--判斷此表是否存在,如果存在,刪除此表--IFEXISTS(SELECTNAMEFROMstuDB.dbo.SYSOBJECTSWHERENAME=N'stuMarks')DROPTABLEstuMarksGO--創(chuàng)建從表stuMarks--CREATETABLEstuMarks(ExamNoCHAR(7)NOTNULL,stuNoNCHAR(6)NOTNULL,writtenExamSMALLINTNOTNULL,LabExamSMALLINTNOTNULL)GO--為從表stuMarks創(chuàng)建約束--ALTERTABLEstuMarksADDCONSTRAINTPK_ExamNoPRIMARYKEY(ExamNo),CONSTRAINTCK_ExamNoCHECK(ExamNoLIKE'S2718[0-9][0-9]'),CONSTRAINTFK_stuNoFOREIGNKEY(stuNo)REFERENCESstuInfo(stuNo),CONSTRAINTCK_writtenExamCHECK(writtenExamBETWEEN0AND100),CONSTRAINTDF_writtenExamDEFAULT0FORwrittenExam,CONSTRAINTCK_LabExamCHECK(LabExamBETWEEN0AND100),CONSTRAINTDF_LabExamDEFAULT0FORLabExamGO--為stuInfo插入數(shù)據(jù)--INSERTINTOstuInfo(stuName,stuNo,stuSex,stuAge,stuAddress)VALUES('張秋麗','s25301','男',18,'北京海淀')INSERTINTOstuInfo(stuName,stuNo,stuSex,stuAge,stuAddress)VALUES('李斯文','s25303','女',22,'河南洛陽(yáng)')INSERTINTOstuInfo(stuName,stuNo,stuSex,stuAge)VALUES('李文才','s25302','男',31)INSERTINTOstuInfo(stuName,stuNo,stuSex,stuAge,stuAddress)VALUES('歐陽(yáng)俊雄','s25304','男',28,'新疆威武哈')GO--為stuMarks插入數(shù)據(jù)--INSERTINTOstuMarks(ExamNo,stuNo,writtenExam,LabExam)VALUES('S271811','s25303',80,58)INSERTINTOstuMarks(ExamNo,stuNo,writtenExam,LabExam)VALUES('S271813','s25302',50,90)INSERTINTOstuMarks(ExamNo,stuNo,writtenExam,LabExam)VALUES('S271816','s25301',77,82)GO--數(shù)據(jù)查詢--SELECT*FROMstuInfoWHEREstuSexIN('男')--查詢s253班的男學(xué)員名單SELECTstuInfo.stuNo,stuMarks.writtenExam,stuMarks.LabExamFROMstuInfoLEFTJOINstuMarksONstuInfo.stuNo=stuMarks.stuNo--查詢s253每位學(xué)員的考試情況,包括學(xué)員姓名,筆試成績(jī),機(jī)試成績(jī)SELECT參加考試的學(xué)員=COUNT(DISTINCTstuNo)FROMstuMarksWHERE(writtenExam>0ORLabExam>0)--查詢?cè)摯慰荚囉卸嗌賹W(xué)員參加,重復(fù)的不統(tǒng)計(jì)SELECTCOUNT(DISTINCTstuNo)AS'考試沒(méi)有通過(guò)的學(xué)員'FROMstuMarksWHERE(writtenExam<60ORLabExam<60)--查詢?cè)摯慰荚囉卸嗌賹W(xué)員沒(méi)通過(guò)(筆試或機(jī)試小于60分)創(chuàng)建數(shù)據(jù)庫(kù)CREATEDATABASESample

ON

PRIMARY(NAME=SampleData,【邏輯文件名】

FILENAME【文件物理名】='c:\ProgramFiles\..\..\Data\Sample.mdf',【主數(shù)據(jù)庫(kù)文件】

SIZE=10MB,MAXSIZE=15MB,FILEGROWTH=20%)

LOGON

(NAME=SampleLog,

FILENAME='c:\ProgramFiles\..\..\Data\Sample.ldf',MAXSIZE=5MB,FILEGROWTH=1MB)【文件增長(zhǎng)量】創(chuàng)建文件組ALTERDATABASENorthwindADDFILEGROUPOrderHistoryGroupGOALTERDATABASENorthwindADDFILE(NAME=‘OrdHistYear1’,FILENAME=‘c:\HistoryDB\OrdHist1.ndf’,SIZE=5MB)TOFILEGROUPOrderHistoryGroupGO管理數(shù)據(jù)庫(kù)addfile<filespec>[,…n][tofilegroupfilegroupname]:表示向指定的文件

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論