sqlserver201*數(shù)據(jù)庫總結(jié)
數(shù)據(jù)庫優(yōu)化
第一章數(shù)據(jù)庫的設(shè)計(jì)
什么是數(shù)據(jù)庫設(shè)計(jì)?
數(shù)據(jù)庫設(shè)計(jì)就是將數(shù)據(jù)庫中的數(shù)據(jù)實(shí)體以及這些數(shù)據(jù)實(shí)體之間關(guān)系,進(jìn)行規(guī)劃和結(jié)
構(gòu)化的過程。設(shè)計(jì)數(shù)據(jù)庫
1.收集信息
2.標(biāo)識實(shí)體
3.表示每個實(shí)體需要存儲的詳細(xì)信息4.表示實(shí)體之間的關(guān)系繪制e-r圖
e-r可以稱為實(shí)體-關(guān)系圖實(shí)體屬性聯(lián)系映射基數(shù)
一對一一對多
多對一多對多實(shí)體關(guān)系圖
矩形表示實(shí)體集
橢圓表示屬性菱形表示聯(lián)系集
直線用來連接屬性和實(shí)體集,也用來連接實(shí)體集和聯(lián)系集
三大范式
1.第一范式
第一范式的目標(biāo)就是確保每列的原子性
2.第二范式
第二范式在第一范式的基礎(chǔ)上更進(jìn)一層,其目標(biāo)是確保表中的每列都和主鍵相關(guān)。
3.第三范式
第三范式在第二范式的基礎(chǔ)上更進(jìn)一層,第三范式的目標(biāo)是確保每列都和主鍵列直接相關(guān),而不是間接相關(guān)。
第二章數(shù)據(jù)庫的實(shí)現(xiàn)
創(chuàng)建數(shù)據(jù)庫
usemaster--引用空間go
--批處理
ifexists(select*fromsysdatabaseswherename="MySchool")dropdatabaseMySchoolcreatedatabaseMySchoolon()
name="MySchool_data",
--數(shù)據(jù)庫名
--判斷數(shù)據(jù)庫是否存在,如果存--創(chuàng)建數(shù)據(jù)庫
在就刪除
filename="D:\\MySchool_data.mdf",--數(shù)據(jù)庫的存放位置size=3,--數(shù)據(jù)庫的初始大小maxsize=100,filegrowth=1
--日志文件
--數(shù)據(jù)庫的最大值--數(shù)據(jù)庫的增長率
logon()go
創(chuàng)建表
name="MySchool_log",--數(shù)據(jù)庫的日志名filename="D:\\MySchool_log.ldf",--數(shù)據(jù)庫日志文件的存放位置size=1,--數(shù)據(jù)庫日志文件的初始大小filegrowth=1--數(shù)據(jù)庫日志文件的增長率
ifexists(select*fromsysobjectswherename="Grade")droptableGrade
createtableGrade()Go
--判斷該表是否存在,如果存在就刪除
--創(chuàng)建表
GradeIdintprimarykeyidentity(1,1)notnull,列明類型主鍵自增不許為空GradeNamenvarchar(50)notnull添加約束
AltertableSubject--針對那張表添加約束修改表表名
addconstraintFK_Subjectforeignkey(GradeId)referencesGrade(GradeId)添加約束名約束類型具體約束說明Go
SQL編程
局部變量
declare
@xvarchar(5)
聲明變量set@x="★"select@x="★"
變量名變量類型變量賦值(單一)
變量賦值(支持多條,接收最后一條返回值)
print@x打印輸出變量
@@error以兩個@為前綴的為全局變量
類型轉(zhuǎn)換的兩種方式
Cast(表達(dá)式as數(shù)據(jù)類型)(常用)
Convert(數(shù)據(jù)類型[(長度)],長度[,樣式])(不常用)
邏輯控制語句-------------------
BeginEnd
-------------------If()
BeginEndElse
BeginEnd
-------------------
While(1=1)BeginEnd-------------------
casewhenStudentResult=60then"差"whenStudentResultbetween60and80then"中"else"優(yōu)"
第四章子查詢
簡單子查詢多層嵌套+in子查詢
------------------------------------------三層子查詢---------------------------------------
selectStudentNamefromdbo.StudentwhereStudentNo=(selectStudentNofromdbo.ResultwhereStudentResult="61"andSubJectId=(
selectSubJectIdfromdbo.SubjectwhereSubjectName="C#OOP"))
selectStudentNamefromdbo.StudentwhereStudentNoin(--返回多個用inselectStudentNofromdbo.ResultwhereStudentResult="61"andSubJectId=(
selectSubJectIdfromdbo.SubjectwhereSubjectName="C#OOP"
notin子查詢你懂得
Exists子查詢
用ifexists判斷是否存在Notexists你懂得
第六章事務(wù)視圖和索引
什么是事務(wù)?
事務(wù)是單個的工作單元。如果某一事務(wù)成功。則在該事務(wù)中進(jìn)行的所有的數(shù)據(jù)更改均會提交,成為數(shù)據(jù)庫中的永久組成部分。如果事務(wù)遇到錯誤且必須取消或者回滾,則所有數(shù)據(jù)更改均
被清除。
begintransactiondeclare@errorintset@error=0
selectdbo.Result.*intoStroyResultfromdbo.Result
innerjoindbo.StudentonResult.StudentNo=Student.StudentNoinnerjoindbo.GradeonStudent.GradeId=Grade.GradeIdwhereGradeName="y2"
set@error=@error+@@error--返回錯誤行數(shù)
deletedbo.Resultfromdbo.Result
innerjoindbo.StudentonResult.StudentNo=Student.StudentNoinnerjoindbo.GradeonStudent.GradeId=Grade.GradeIdwhereGradeName="y2"set@error=@error+@@error
selectdbo.Student.*intoStroyStudentfromdbo.Studentinnerjoindbo.GradeonStudent.GradeId=Grade.GradeIdwhereGradeName="y2"set@error=@error+@@error
deletedbo.Studentfromdbo.Student
innerjoinGradeondbo.Grade.GradeId=dbo.Student.GradeIdwhereGradeName="y2"
set@error=@error+@@error
if(@error0)begin
print"失敗"rollbacktransactionendelse
beginprint"成功"
committransaction---提交end
---回滾
第七章存儲過程
什么是存儲過程?
存儲過程是sql語句和控制語句的預(yù)編譯集合。存儲過程優(yōu)點(diǎn)
1.模塊化程序設(shè)計(jì)
2.執(zhí)行速度快,效率高3.減少網(wǎng)絡(luò)流量
4.具有良好的安全性總結(jié)
創(chuàng)建存儲過程以及使用例子
ifexists(select*fromsysobjectswherename="xp_SelectStu")dropprocedurexp_SelectStugo
createprocedurexp_SelectStuas
SELECTdbo.Grade.GradeName,dbo.Student.StudentName,dbo.Student.LoginPwd,dbo.Student.Address,dbo.Student.BornDate,dbo.Student.Email
execxp_SelectStu
ifexists(select*fromsysobjectswherename="xp_inserStu")dropprocedurexp_inserStugo
createprocedurexp_inserStu@StudentNonvarchar(50),@LoginPwdnvarchar(20),@StudentNamenvarchar(50),@Sexchar(2),@GradeIdint,
@Phonenvarchar(255),@Addressnvarchar(255),@BornDatedatetime,@Emailnvarchar(50)as
insertintodbo.Studentselect
FROMdbo.GradeINNERJOIN
dbo.StudentONdbo.Grade.GradeId=dbo.Student.GradeId
@StudentNo,@LoginPwd,@StudentName,@Sex,@GradeId,@Phone,@Address,@BornDate,@Emailgoexec
xp_inserStu
"tcs2125","12345","
名字","
難","2","131313131","
你猜","201*-12-12","4564165@yahoo.com"---調(diào)用以及插入數(shù)據(jù)
刪除存儲
Dropprocedure存儲過程名
擴(kuò)展閱讀:常見的SQLServer數(shù)據(jù)庫試題及答案總結(jié)
常見的SQLServer數(shù)據(jù)庫試題及答案總結(jié)
來源:發(fā)布時間:201*-04-22瀏覽:6348人次字體:[大中小]選擇題:(20分)
1、根據(jù)關(guān)系數(shù)據(jù)基于的數(shù)據(jù)模型關(guān)系模型的特征判斷下列正確的一項(xiàng):(___)A、只存在一對多的實(shí)體關(guān)系,以圖形方式來表示。
B、以二維表格結(jié)構(gòu)來保存數(shù)據(jù),在關(guān)系表中不允許有重復(fù)行存在。C、能體現(xiàn)一對多、多對多的關(guān)系,但不能體現(xiàn)一對一的關(guān)系。D、關(guān)系模型數(shù)據(jù)庫是數(shù)據(jù)庫發(fā)展的最初階段。
2、在“連接”組中有兩種連接認(rèn)證方式,其中在(___)方式下,需要客戶端應(yīng)用程序連接時提供登錄時需要的用戶標(biāo)識和密碼。
A、Windows身份驗(yàn)證B、SQLServer身份驗(yàn)證C、以超級用戶身份登錄時D、其他方式登錄時3、SQLServer201*在安裝之前,應(yīng)注意的事項(xiàng):(___)
A、SQLServer201*的任何版本在安裝時都不用考慮操作系統(tǒng)的制約。B、SQLServer201*的安裝對硬件的要求不作任何限制。
C、SQLServer201*在安裝之前,必須在操作系統(tǒng)級啟用TCP/IP。D、在WindowsNTServer4.0上安裝SQLServer201*時,最低的要求是必須安裝ServicePack4(SP4)以上。
4、關(guān)系數(shù)據(jù)庫中,主鍵是(1___),主鍵的建立有(2___)種方法,當(dāng)運(yùn)用Transact-SQL語句創(chuàng)建主鍵時,可以是(3___)。
⑴A、為標(biāo)識表中唯一的實(shí)體B、創(chuàng)建唯一的索引,允許空值C、只允許以表中第一字段建立D、允許有多個主鍵的⑵A、一B、二C、三D、四⑶A、createtabletable1
(column1char(13)notnullprimary,column2intnot)onprimary;
B、altertabletable1withnotcheckadd
constraint[PK_table1]primarykeynonclustered(column1)onprimary;
C、altertabletable1column1primarykey;
5、表在數(shù)據(jù)庫中是一個非常重要的數(shù)據(jù)對象,它是用來(1___)各種數(shù)據(jù)內(nèi)容的,數(shù)據(jù)庫創(chuàng)建后就可以創(chuàng)建表了,創(chuàng)建表可以用(2___)等方法來創(chuàng)建。⑴A、顯示B、查詢C、存放D、檢索⑵A、企業(yè)管理器B、查詢分析器
C、OSQLD、企業(yè)管理器和CREATETABLE語句6、為數(shù)據(jù)表創(chuàng)建索引的目的是(1___),可以在創(chuàng)建表時用(2___)來創(chuàng)建唯一索引,也可以用(2___)來創(chuàng)建唯一索引。
⑴A、提高查詢的檢索性能B、創(chuàng)建唯一索引C、創(chuàng)建主鍵D、歸類
⑵A、設(shè)置主鍵約束,設(shè)置唯一約束B、Createtable,CreateindexC、設(shè)置主鍵約束,CreateindexD、以上都可以
7、在Transact-SQL語法中,用來插入數(shù)據(jù)的命令是(___),用于更新的命令是(___)。A、INSERT,UPDATEB、UPDATE,INSERT
C、DELETE,UPDATED、CREATE,INSERTINTO8、在Transact-SQL語法中,SELECT語句的完整語法較復(fù)雜,但至少包括的部分(1___),使用關(guān)鍵字(2___)可以把重復(fù)行屏蔽,將多個查詢結(jié)果返回一個結(jié)果集合的運(yùn)算符是(3___),如果在SELECT語句中使用集合函數(shù)時,一定在后面使用(4___)。
⑴A、SELECT,INTOB、SELECT,F(xiàn)ROMC、SELECT,GROUPD、僅SELECT⑵A、DISTINCTB、UNIONC、ALLC、TOP⑶A、JOINB、UNIONC、INTOC、LIKE
⑷A、GROUPBYB、COMPUTEBYC、HAVINGD、COMPUTE
9、視圖是一種常用的數(shù)據(jù)對象,它是提供(1___)和(1___)數(shù)據(jù)的另一種途徑,可以簡化數(shù)據(jù)庫操作,當(dāng)使用多個數(shù)據(jù)表來建立視圖時,表的連接不能使用(2___)方式,并且不允許在該語句中包括(3___)等關(guān)鍵字。⑴A、查看,存放B、查看,檢索C、插入,更新D、檢索,插入⑵A、外連接B、內(nèi)連接C、左連接D、右連接
⑶A、ORDERBY,COMPUTEB、ORDERBY,COMPUTE,COMPUTRBYC、ORDERBY,COMPUTEBY,GROUPBYD、GROUPBY,COMPUTEBY
10、在SQLSERVER服務(wù)器上,存儲過程是一組預(yù)先定義并(1___)的Transact-SQL語句?梢杂茫2___)來聲明游標(biāo)。
⑴A、保存B、編譯C、解釋D、編寫⑵A、CREATECURSORB、ALTERCURSORC、SETCURSORD、DECLARECURSOR填空題:(20分)
1、更改MicrosoftSQLServer登錄的密碼的命令是_______________,2、舉例說明其語法格式:_____________________________________。
3、WindowsNT授權(quán)認(rèn)證模式只適用于________________________平臺,4、對于Windows95/98操作系統(tǒng)下的SQLServer系統(tǒng)將不5、適用。
6、SQLServer中索引類型包括的三種類型分別是_________________,_________________和____________________。
7、在SELECT語句的FROM子句中最多可以指8、定_______個表或視圖,9、相互之間要用________分隔,10、當(dāng)所查詢的表不11、在當(dāng)前數(shù)據(jù)庫時,12、可用___________________________格式來指13、出表或視圖對象。
14、服15、務(wù)器網(wǎng)絡(luò)實(shí)用工具的目的_________________________________。
16、在當(dāng)SQLSERVER實(shí)例中有DBOA數(shù)據(jù)庫,17、要將它設(shè)置成為單用戶狀態(tài),18、請寫出設(shè)置命令:___________________________________________。
19、刪除表命令是:___________________________________________。
20、用SELECT進(jìn)行模糊查詢時,21、可以使用_________或________匹配符,22、但要在條件值中使用____或____等通配符來配合查詢。并且,23、模糊查詢只能針對字段類型是_________的查詢。
24、計(jì)算字段的累加和的函數(shù)是:_______,25、統(tǒng)計(jì)項(xiàng)目數(shù)的函數(shù)是:________。10、SQLSERVER中的編程語言就是_____________________________語言。判斷題(10分)
1、在CREATEINDEX語句中,使用CLUSTERED來建立簇索引。()2、可以在企業(yè)管理器中修改數(shù)據(jù)庫的名稱。()3、恢復(fù)數(shù)據(jù),可以在查詢分析器中使用這樣的命令:
BACKUPDATABASEdatabase_nameFROMbackup()
4、在查詢分析器中修改帳戶時可以用系統(tǒng)存儲過程Sp_modibaccess。()
5、每個存儲過程向調(diào)用方返回一個整數(shù)返回代碼。如果存儲過程沒有顯式設(shè)置返回代碼的值,則返回代碼為0,表示成功。
6、在Transact-SQL語句中,對不符合所有標(biāo)識符規(guī)則的標(biāo)識符必須進(jìn)行分隔。7、在SQLSERVER中,觸發(fā)器的執(zhí)行是在數(shù)據(jù)的插入、更新或刪除之前執(zhí)行的。
8、在Transact-SQL語句的WHERE子句中,完全可以用IN子查詢來代替OR邏輯表達(dá)式。9、通配符“_”表示某單個字符。
10、因?yàn)橥ㄟ^視圖可以插入、修改或刪除數(shù)據(jù),因此視圖也是一個實(shí)在表,SQLSERVER將它保存在syscommens系統(tǒng)表中。簡答題:(20分)
26、寫出關(guān)系型數(shù)據(jù)庫的第一、第二、第三標(biāo)27、準(zhǔn)形式的各自要求。28、觸發(fā)器的類型以及相對的語句命令?29、自定義函數(shù)的類型?各自原返回值。30、用戶權(quán)限的種類有哪些?各自的作用?分析編碼題(20分)
31、請使用Transact-SQL建立如下表:表名:雇員基本信息表;
字段名數(shù)據(jù)類型寬度精度可空性要求NO_IDCHAR7NOTNULL設(shè)為主鍵NAMECHAR10NOTNULL
SEXCHAR2NOTNULL默認(rèn)值為”男”AGEINTNOTNULLDEPTVARCHAR50NULLPHONEVARCHAR20NULLNOTESVARCHAR50NULL
32、現(xiàn)有1銷售表,33、它們結(jié)構(gòu)如下:idint(標(biāo)識號)codnochar(7)(商品編碼)codnamevarchar(30)(商品名稱)specvarchar(20)(商品規(guī)格)pricenumeric(10,2)(價格)sellnumint(銷售數(shù)量)
deptnochar(3)(售出分店編碼)selldatedatetime(銷售時間)
要求:寫出查詢銷售時間段在201*-2-15日到201*-4-29之間,分店編碼是01的所有記錄。
34、在table1數(shù)據(jù)表中增加“No_id”字段,35、數(shù)據(jù)類型char(12),36、不37、可空,38、并將其設(shè)定為UNIQUE約束,39、寫出其命令語句。編程填空題:(10分)
填寫出下列觸發(fā)器中缺少的關(guān)鍵字,使下面語句完整:ifupdate([lcostprice])update[b_drug_data]set[scostprice]=((select[lcostprice]frominserted
____________[codno],[lcostprice],[scostprice]
________{b_drug_data.codno}=[inserted.codno])/(select[fsco]from[b_drug_data]__________[codno],[fsco]
_________[b_drug_data.codno]=
(select[codno]frominsertedgroupby[codno])))where[b_drug_data.codno]___(select[codno]frominserted)
選擇題:(20分)注:每個選空1分
1、B,2、B,3、C,4、⑴A,⑵C,⑶B,5、⑴C,⑵D,6、⑴A,⑵C7、A,A8、⑴B,⑵A,⑶B,⑷A,9、⑴A,⑵A,⑶B,10、⑴B,⑵D填空題:(20分)注:每空1分
1、Sp_password,sp_password“12345”,”54321”,”abc”2、WindowsNT
3、唯一索引,簇索引,非簇索引4、256,逗號,”數(shù)據(jù)庫.所有者名稱.對象名稱”5、為客戶端網(wǎng)絡(luò)實(shí)用工具提供參數(shù)。
6、sp_dboption‘DBOA’,’singleuse’,’true’7、droptable
8、like,notlike,”%”,”_”,字符9、Sum(),Count()10、TranSact_SQL判斷題:(10分,每題1分)
1、√2、×3、×4、×5、√6、√7、×8、×9、√10、×簡答題:(20分,1、2題每題5分)
1、①第一標(biāo)2、準(zhǔn)形式:由原子值和主鍵值組成,3、數(shù)據(jù)表中的每一個字段都不4、可以再分。(同5、一數(shù)據(jù)表中同6、類字段不7、允許重復(fù)8、出現(xiàn),9、在一個字段內(nèi)也不10、允許放置多個數(shù)據(jù)項(xiàng))
②第二標(biāo)準(zhǔn)形式:要求所有的非關(guān)鍵字段完全依賴于主鍵。(或類似的解釋)③第三標(biāo)準(zhǔn)形式:每一個非主鍵字段列中沒有可傳遞的的依賴性。(一個非主鍵列不能依賴于另一個非主鍵列)
2、類型:①INSERT觸發(fā)器、②UPDATE觸發(fā)器、③DELETE觸發(fā)器相對應(yīng)的語句:①INSERT語句、②UPDATE語句、③DELETE語句11、自定義函數(shù)類型:①標(biāo)12、量函數(shù)返回值:單個數(shù)據(jù)值②內(nèi)嵌表值函數(shù)返回值:table,③多語句表值函數(shù)返回值:table4、權(quán)限類型及作用:
①對象權(quán)限作用:決定用戶對數(shù)據(jù)庫對象所執(zhí)行的操作,包括用戶對數(shù)據(jù)庫中的表、視圖、列或存儲過程等對象的操作權(quán)限
②語句權(quán)限作用:決定用戶能否操作數(shù)據(jù)庫和創(chuàng)建數(shù)據(jù)庫對象③隱含權(quán)限作用:控制那些只能由預(yù)定義系統(tǒng)角色的成員或數(shù)據(jù)庫對象所有者執(zhí)行的活動。五、(20分,1題10分,2題5分,3題5分)1、(答案中的英語單詞不允許錯誤,男字只能用單引號括起來,否則不給分;)CREATETABLE雇員基本信息表2分
(NO_IDchar(7)notnullprimarykey,2分NAMEchar(10)notnull,1分SEXchar(2)notnulldefault‘男’,2分AGEintnotnull,1分DEPTvarchar(50)null,1分PHONEvarchar(20)null,0.5分NOTESvarchar(50)null0.5分)
2、(答案中的英語單詞不允許錯誤,日期要用引號括起來,否則不給分)SELECT*FROM銷售表
WHERE(selldate>="201*-2-15"ANDselldate()。
(A)master(B)NorthWind(C)msdb(D)bookdb
7、在SQLServer201*中,當(dāng)數(shù)據(jù)表被修改時,系統(tǒng)自動執(zhí)行的數(shù)據(jù)庫對象是()。(A)存儲過程(B)觸發(fā)器(C)視圖(D)其他數(shù)據(jù)庫對象8、SQLServer的字符型系統(tǒng)數(shù)據(jù)類型主要包括()。A.Int、money、charB.char、varchar、textC.datetime、binary、intD.char、varchar、int
9、在SQLServer201*中,索引的順序和數(shù)據(jù)表的物理順序相同的索引是()。(A)聚集索引(B)非聚集索引(C)主鍵索引(D)唯一索引
10、要查詢book表中所有書名中包含“計(jì)算機(jī)”的書籍情況,可用()語句。(A)SELECT*FROMbookWHEREbook_nameLIKE‘計(jì)算機(jī)*’(B)SELECT*FROMbookWHEREbook_nameLIKE‘計(jì)算機(jī)%’(C)SELECT*FROMbookWHEREbook_name=‘計(jì)算機(jī)*’
(D)SELECT*FROMbookWHEREbook_name=‘計(jì)算機(jī)%’
11、SELECT語句中與HAVING子句通常同時使用的是()子句。
A.ORDERBYB.WHEREC.GROUPBYD.無需配合12、要刪除mytable表中的myindex索引,可以使用()語句。(A)DROPmyindex
(B)DROPmytable.myindex
(C)DROPINDEXmyindex(D)DROPINDEXmytable.myindex
13、下列選項(xiàng)都是系統(tǒng)提供的存儲過程,其中可以進(jìn)行視圖信息的查詢是()。(A)sp_helptext(B)sp_helpindex(C)sp_bindrule(D)sp_rename14、SQLServer提供的單行注釋語句是使用()開始的一行內(nèi)容。A.“/*”B.“--”C.“{”D.“/”15、以下運(yùn)算符中優(yōu)先級最低的是()。
(A)+(加)(B)=(等于)(C)like(D)=(賦值)
二、填空題(每空2分,共15空)
1、數(shù)據(jù)庫系統(tǒng)的特點(diǎn)分別是數(shù)據(jù)的結(jié)構(gòu)化、、數(shù)據(jù)獨(dú)立性和。2、在數(shù)據(jù)庫的表中,是指表中的某一列,該列的值唯一標(biāo)識一行。3、SQLServer201*的文件包括:數(shù)據(jù)文件(.mdf或.ndf)和。4、在SQLServer201*中,要訪問某個數(shù)據(jù)庫,除了需要有一個登錄帳號外,還必須有一個該數(shù)據(jù)庫的帳號。
5、,簡稱DBMS,它是指幫助用戶建立、使用和管理數(shù)據(jù)庫的軟件系統(tǒng)。
6、在SQLServer201*中,Unicode標(biāo)準(zhǔn)的全稱是。7、
SQLServer201*
和。
8、在T-SQL語言中,若要修改某張表的結(jié)構(gòu),應(yīng)該使用的修改關(guān)鍵字是;若要創(chuàng)建一個數(shù)據(jù)庫,應(yīng)該使用的語句是。9、游標(biāo)的概念包括兩個部分,它們是和。10、一個事務(wù)的操作必須是具備以下四個屬性:原子性、、和
提供備份數(shù)據(jù)庫的兩種方式是永久性。
三、程序閱讀題(共2題)
1、閱讀下面的程序段,然后簡述該程序段所完成的功能。(5分)Begin
Waitfortime’15:43’CreateViewmy_view
AsSelectorder_date,book_number,book_idFromorderform
Wherebook_number!<25End
該程序段的功能是:
。2、下面程序段的功能是:在數(shù)據(jù)庫中判斷是否存在名為my_proc的存儲過程,若存在,則刪除之,然后創(chuàng)建同名的存儲過程,該存儲過程的功能是向book表的book_id、book_name、price和publisher字段插入數(shù)據(jù)。閱讀并回答以下問題:(10分)UsebookdbGo
Ifexists(SelectnameFrom①
Wherename=’my_proc’andtype=’②’)
DropProcmy_procGo
CreateProcmy_proc
@aint,@bchar(50),@cfloat,@dpublisher③
InsertIntostudent(book_id,book_name,price,publisher)Values(@a,@b,@c,@d)Go
問題:(1)填寫該程序段中空白處的內(nèi)容:①②③
(四、編程題(共4題)
有一個“學(xué)生-課程”數(shù)據(jù)庫,數(shù)據(jù)庫中包括三個表:(1)“學(xué)生”表Student由學(xué)號(Sno)、姓名(Sname)、性別(Ssex)、年齡(Sage)、所在系(Sdept)五個屬性組成,可記為:Student(Sno,Sname,Ssex,Sage,Sdept)Sno為關(guān)鍵字。
(2)“課程”表Course由課程號(Cno)、課程名(Cname)、先修課號(Cpno)、學(xué)分(Ccredit)四個屬性組成,可記為:Course(Cno,Cname,Cpno,Ccredit)Cno為關(guān)鍵字。
(3)“學(xué)生選課”表SC由學(xué)號(Sno)、課程號(Cno)、成績(Grade)三個屬性組成,可記為:SC(Sno,Cno,Grade)(SNO,CNO)為關(guān)鍵字。
2)任寫一條調(diào)用該存儲過程的語句:。
完成下列操作:
1、請把其中建立“學(xué)生”表Student的語句寫下來,表Student是由學(xué)號Sno、姓名Sname、
性別Ssex、年齡Sage、所在系Sdept五個屬性組成,其中學(xué)號屬性不能為空,并且其值是唯一的。
2、在student表中查詢Sdept是‘計(jì)算機(jī)’的學(xué)生的所有信息,并按Sno降序排列。(5
分)
3、在以上三個表中查詢Ccredit為5并且Grade大于60的學(xué)生的學(xué)號、姓名和性別。(7
分)
4、為Course表創(chuàng)建一個名稱為my_trig的觸發(fā)器,當(dāng)用戶成功刪除該表中的一條或多條記錄時,觸發(fā)器自動刪除SC表中與之有關(guān)的記錄。
(注:在創(chuàng)建觸發(fā)器之前要判斷是否有同名的觸發(fā)器存在,若存在則刪除之。)(9分)
SQLServer數(shù)據(jù)庫試卷5參考答案
一、選擇題(每題2分,共30分)
CCDDABBBABCBACD二、填空題(每空2分,共30分)
1、數(shù)據(jù)共享、可控冗余度2、主鍵3、日志文件4、用戶5、數(shù)據(jù)庫管理系統(tǒng)6、統(tǒng)一字符編碼標(biāo)準(zhǔn)7、備份數(shù)據(jù)庫、備份事務(wù)日志8、ALTER、CREATEDATABASE9、游標(biāo)結(jié)果集、游標(biāo)位置10、一致性、隔離性三、程序閱讀題(第一題5分,第二題10分,共15分)
1、系統(tǒng)在15:43分為orderform表中訂購數(shù)量book_number大于25本的訂購信息的order_date、book_number和book_id三個字段創(chuàng)建一個名為my_view的視圖。(答題意思差不多即可得滿分,其他情況酌情給分)
2、(1)①Sysobjects②P③As(每空2分)
(2)Execmy_proc7,’SQLServer201*教程’,38,‘北京科海集團(tuán)公司’或Execmy_proc@a=7,@b=’SQLServer201*教程’,@c=38,@d=’北京科海集團(tuán)公司’(4分)注:該小題不管怎樣調(diào)用該存儲過程,Exec和my_proc不可少,也不可多用Proc關(guān)鍵字;若不全對則酌情給分。四、編程題(共4題,共25分)
1、(共6分)
CREATETABLEStudent(1分)(SnoCHAR(5)NOTNULLUNIQUE,(1分)SnameCHAR(20),(1分)SsexCHAR(1),(1分)SageINT,(1分)SdeptCHAR(15));(1分)2、select*fromstudentwhereSdept=’計(jì)算機(jī)’orderbySnodesc(5分)
1分
1分
1分
2分
3、(共7分)方法1:
selectstudent.Sno,Sname,Ssexfromstudent,course,sc
(1分)(1分)
where(student.Sno=sc.Sno)and(course.Cno=sc.Cno)
and(course.Ccredit=5)and(sc.Grade>60)(1+1+1+1+1分)
(1分)
(2分+2分)
(1分+1分)
方法2:
selectstudent.Sno,Sname,Ssex
Onstudent.Sno=sc.Sno
4、(共9分)
Ifexists(SelectnameFromsysobjects
Wherename=’my_trig’andtype=’tr’)(整個If語句1分)
Droptriggermy_trigGo
Createtriggermy_trigOnCourseForDeleteAs
(0.5分)
(0.5分)
(1分)(0.5分)(1分)
fromstudentInnerJoin(scInnerJoincourseOncourse.Cno=sc.Cno)where(course.Ccredit=5)and(sc.Grade>60)
(0.5分)(1分)
(1分+2分)
DeleteFromscGo
WhereSnoin(SelectSnoFromDeleted)
友情提示:本文中關(guān)于《sqlserver201*數(shù)據(jù)庫總結(jié)》給出的范例僅供您參考拓展思維使用,sqlserver201*數(shù)據(jù)庫總結(jié):該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。