數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告-6_第1頁
數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告-6_第2頁
數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告-6_第3頁
數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告-6_第4頁
數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告-6_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

附件1:經(jīng)濟(jì)管理學(xué)院實(shí)驗(yàn)報(bào)告姓名:班級:學(xué)號:實(shí)驗(yàn)成績:課程名稱:數(shù)據(jù)庫應(yīng)用課程設(shè)計(jì)指導(dǎo)教師:實(shí)驗(yàn)名稱:SQLServer2008數(shù)據(jù)庫應(yīng)用課程設(shè)計(jì)2012年6月實(shí)驗(yàn)?zāi)康模?.熟練掌握數(shù)據(jù)庫設(shè)計(jì)技術(shù)。2.熟練掌握數(shù)據(jù)庫查詢語句及其應(yīng)用。3.掌握數(shù)據(jù)庫綜合應(yīng)用能力。實(shí)驗(yàn)環(huán)境:;數(shù)據(jù)庫管理系統(tǒng)SQLServer2008實(shí)驗(yàn)內(nèi)容與步驟:實(shí)驗(yàn)內(nèi)容:已知選課數(shù)據(jù)庫myGrade包含學(xué)生、課程、教師、選課和授課等5個(gè)關(guān)系表,各表及其列名含義如下(主鍵已用下畫線標(biāo)記):學(xué)生(學(xué)號,姓名,性別,出生日期,班級)課程(課程編號,課程名稱,前修課程,課程性質(zhì),學(xué)分)教師(教師編號,姓名,性別,出生日期,職稱)選課(學(xué)號,課程編號,選課學(xué)期,成績)授課(教師編號,課程編號,授課學(xué)期)1.創(chuàng)建數(shù)據(jù)庫myGrade,在數(shù)據(jù)庫中創(chuàng)建上述5個(gè)關(guān)系數(shù)據(jù)表,要求使用非中文的表名和列名,并在各表中插入模擬數(shù)據(jù)。在建表時(shí)必須定義各表的主鍵、外鍵、CHECK等約束條件。具體要求如下:(1)學(xué)生表和教師表中的性別取值“M”或“F”分別表示“男”或“女”;學(xué)號長度為8位,第一位以字母開頭,最后一位為性別(即F或M),其他6位為數(shù)字。(2)課程表中的前修課程為外鍵,它參照自己所在表中的主鍵列(即“課程編碼”);課程性質(zhì)分為“必修課”和“選修課”兩類,必修課用字母A表示,選修課用字母B表示;學(xué)分取值0.5~10之間。(3)選課學(xué)期和授課學(xué)期都為11位字符串,例如“2010-2011-1”。其中前9位表示學(xué)年(年份之間用橫桿分隔),最后一位表示某個(gè)學(xué)年中的學(xué)期序號,取值1或2。(4)其他列的類型、長度、外鍵及CHECK等約束條件根據(jù)選課數(shù)據(jù)庫語義自行定義。(5)在插入模擬數(shù)據(jù)之后,為各個(gè)外鍵中的每一列創(chuàng)建非聚集索引。實(shí)驗(yàn)步驟:1.建立學(xué)生成績管理數(shù)據(jù)庫mygradeCreatedatabasemygrade….createdatabasemyGrade2.數(shù)據(jù)庫mygrade的各個(gè)表的創(chuàng)建1)學(xué)生表StudentsdentscreatetableStudentsdents(snochar(8)check(snolike'[a-z][0-9][0-9][0-9][0-9][0-9][0-9][FM}')primarykey,snamechar(10),sexchar(2),birthdatedatetime,classnamechar(10))select*fromStudentsdentsinsertintoStudentsdentsvalues('a123456F','李偉','F','1992-05-06','2')insertintoStudentsdentsvalues('b123456F','張偉','F','1992-01-25','1')insertintoStudentsdentsvalues('c123456F','雷曄','F','1991-06-06','1')insertintoStudentsdentsvalues('d123456M','丁麗','M','1992-05-29','2')insertintoStudentsdentsvalues('e123456F','王偉','F','1992-03-23','2')insertintoStudentsdentsvalues('f123456M','李麗','M','1992-05-28','2')insertintoStudentsdentsvalues('g123456M','張露露','M','1991-11-25','1')insertintoStudentsdentsvalues('h123456F','丁明明','F','1992-08-23','1')insertintoStudentsdentsvalues('i123456M','馬力','M','1991-12-25','2')insertintoStudentsdentsvalues('j123456M','徐麗','M','1992-05-06','2')2)課程表Coursescreatetablecourses(cnochar(8)primarykey,cnamechar(10),beforecnochar(8)referencescourses(cno),xingzhichar(1)check(xingzhilike'[AB]'),xuefenfloatcheck(xuefenbetween0.5and10.0))select*fromcoursesinsertintocourses(cno,cname,xingzhi,xuefen)values('001','數(shù)據(jù)庫','A',8.0)insertintocourses(cno,cname,xingzhi,xuefen)values('002','c語言','B',8.5)insertintocourses(cno,cname,xingzhi,xuefen)values('003','電子商務(wù)','B',10.0)insertintocourses(cno,cname,xingzhi,xuefen)values('004','管理','B',8.0)insertintocourses(cno,cname,xingzhi,xuefen)values('005','經(jīng)濟(jì)','A',9.0)insertintocoursesvalues('006','數(shù)據(jù)運(yùn)行','001','A',8.0)insertintocoursesvalues('007','機(jī)械制造','002','A',5.0)insertintocoursesvalues('008','信息管理','003','B',5.0)insertintocoursesvalues('009','數(shù)據(jù)結(jié)構(gòu)','004','B',5.0)insertintocoursesvalues('010','網(wǎng)頁設(shè)計(jì)','005','B',5.0)3教師表teachercreatetableteachers(tnochar(8)check(tnolike'[a-z][0-9][0-9][0-9][0-9][0-9][0-9][FM}')primarykey,tnamechar(10),sexchar(1)check(sexlike'[FM]'),birthdatedatetime,titlechar(8))select*fromteachersinsertintoteachersvalues('a123789F','達(dá)爾文','F','1969-08-06','教授')insertintoteachersvalues('b123789F','丁力','F','1972-10-11','副教授')insertintoteachersvalues('c123456M','張麗','M','1984-05-25','導(dǎo)師')insertintoteachersvalues('d123789M','李華芳','M','1989-12-05','助教')insertintoteachersvalues('e123789F','王選','F','1968-05-25','教授')insertintoteachersvalues('f123789M','周曉麗','M','1986-04-26','助教')insertintoteachersvalues('g123789M','呂麗霞','M','1973-12-06','副教授')insertintoteachersvalues('h123789F','鄭華','F','1982-10-26','導(dǎo)師')insertintoteachersvalues('i123789M','鞏清','M','1983-11-13','導(dǎo)師')insertintoteachersvalues('j123789M','張宏','M','1988-03-26','助教')學(xué)生選課表stucoursescreatetablestudcourses(snochar(8)referencesStudentsdents(sno),cnochar(8)referencescourses(cno),xuankexuqichar(11)check(xuankexuqilike'[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]-[12]'),gradefloat,constraintpk_primarykey(sno,cno))select*fromstudcoursesinsertintostudcoursesvalues('a123456F','001','2011-2012-2',48)insertintostudcoursesvalues('b123456F','002','2012-2013-1',45)insertintostudcoursesvalues('d123456M','002','2009-2010-2',90)insertintostudcoursesvalues('d123456M','003','2012-2013-2',66)insertintostudcoursesvalues('f123456M','004','2011-2012-2',85)insertintostudcoursesvalues('f123456M','005','2010-2011-1',48)insertintostudcoursesvalues('a123456F','003','2011-2012-2',75)insertintostudcoursesvalues('c123456F','007','2012-2013-1',45)insertintostudcoursesvalues('c123456F','008','2012-2013-1',68)insertintostudcoursesvalues('a123456F','004','2011-2012-2',58)教師授課表teacoursescreatetableshoucourses(tnochar(8)referencesteachers(tno),cnochar(8)referencescourses(cno),shoukexueqichar(11)check(shoukexueqilike'[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]-[12]'),constraintpk_2primarykey(tno,cno))select*fromshoucoursesinsertintoshoucoursesValues('a123789F','003','2012-2013-1')insertintoshoucoursesValues('a123789F','004','2011-2012-2')insertintoshoucoursesValues('b123789F','006','2012-2013-1')insertintoshoucoursesValues('b123789F','007','2011-2012-2')insertintoshoucoursesValues('b123789F','002','2011-2012-2')insertintoshoucoursesValues('a123789F','001','2012-2013-1')insertintoshoucoursesValues('c123789M','002','2011-2012-2')insertintoshoucoursesValues('c123789M','003','2012-2013-1')insertintoshoucoursesValues('c123789M','001','2012-2013-1')insertintoshoucoursesValues('d123789M','007','2011-2012-2')3.編寫T-SQL語句,完成下列各項(xiàng)功能根據(jù)學(xué)生成績表中的數(shù)據(jù)顯示全部學(xué)生的成績,要求按班級、學(xué)號的次序顯示,輸出內(nèi)容中包括學(xué)生姓名和課程名稱,并使用中文標(biāo)題。selectsname學(xué)生姓名,cname課程名稱,grade成績fromStudentsdentsst,coursesc,studcoursessdwherest.sno=sd.snoando=oorderbyst.sno根據(jù)學(xué)生基本信息表與成績表中的數(shù)據(jù),顯示姓名為x的這個(gè)學(xué)生第一學(xué)期的全部課程成績。selectsname學(xué)生姓名,grade成績fromStudentsdentsst,studcoursessdwherest.sno=sd.snoandsname='李偉'andxuankexuqi<='2012-2013-1'根據(jù)課程表與成績表中的數(shù)據(jù),顯示輸出課程名稱為x.的該課程的平均成績及格人數(shù)比例。selectavg(grade)平均成績,1.0*(selectCOUNT(*)fromstudcourseswheregrade/100.0>=0.6)/(selectCOUNT(*)fromStudentsdents)fromcoursesc,studcoursessdwhereo=oandcname='數(shù)據(jù)庫'根據(jù)課程表與成績表中的數(shù)據(jù),顯示學(xué)號為x的這個(gè)學(xué)生最近這個(gè)學(xué)期所得到的學(xué)分?jǐn)?shù)。selectsum(xuefen)學(xué)分fromstudcoursessd,coursescwhereo=oandsd.sno='a123456F'selecttop1sname學(xué)生姓名,COUNT(*)cfromstudcoursesst,coursesc,Studentsdentssdwhereo=oandsd.sno=st.snogroupbysnameOrderbycdesc根據(jù)各表數(shù)據(jù),列出最近這個(gè)學(xué)期哪些學(xué)生選修的課程數(shù)量最多,要求列出姓名。selecttop1sname,COUNT(*)bfromstudcoursesa,Studentsdentsst,coursescwherea.sno=st.snoando=ogroupbysnameOrderbybdesc根據(jù)各表數(shù)據(jù),列出最近這個(gè)學(xué)期哪些學(xué)生至少選了兩門或兩門以上的選修課程,要求列出姓名。(7) 根據(jù)課程表與成績表數(shù)據(jù),列出哪些選修課程學(xué)生選修的學(xué)生人數(shù)最多。selecttop1cnamefromstudcoursesa,Studentsdentsst,coursescwhereo=oandxingzhi='B'groupbycnameOrderbyCOUNT(*)desc(8) 分別列出課程名稱為X的這門課程考試成績排名前5位與后5位的學(xué)生姓名。selecttop5snamefromStudentsdentsst,studcoursesscwheresc.sno=st.snoando='002'orderbygradedescselecttop5snamefromStudentsdentsst,studcoursesscwheresc.sno=st.snoando='002'orderbygradeasc(9) 列出必修課程成績不及格其累計(jì)學(xué)分超過15分的那些學(xué)生的姓名。selectsnamefromStudentsdentsst,coursesc,studcoursesawhereo=oanda.sno=st.snoandxingzhi='A'andgrade<60and(selectSUM(xuefen)fromcourses)>15groupbysname(10) 列出課程名稱為x的這門課考試成績平均分最高的班級。selecttop1classnamefromstudcoursesa,Studentsdentsst,coursescwhereo=oanda.sno=st.snoandcname='c語言'groupbyclassnameorderbyAVG(grade)desc(11) 分班級和性別,輸出最近這個(gè)學(xué)期全部必修課課程的平均考試成績。selectAVG(grade),classname,sexfromstudcoursesa,coursesc,Studentsdentsstwhereo=oanda.sno=st.snoandxingzhi='A'andxuankexuqi='2012-2013-1'groupbyclassname,sex(12) 根據(jù)成績表中的數(shù)據(jù),計(jì)算學(xué)生基本信息表中每個(gè)學(xué)生每個(gè)學(xué)期的平均考試成績。selectAVG(grade),st.sno,xuankexuqifromstudcoursesa,Studentsdentsstwherea.sno=st.snogroupbyst.sno,xuankexuqi(13) 列出第2011-1學(xué)期中各個(gè)班級平均考試成績排名前5位學(xué)生的姓名,要求按各班按成績排序selecttop5sname,AVG(grade)gradefromstudcoursesa,Studentsdentsstwherea.sno=st.snoandxuankexuqi='2010-2011-1'groupbysname,classname(14) 將成績表中選修課的成績按五級制(優(yōu)、良、中、及格、不及格)形式進(jìn)行輸出。(14selectsno,o,'grade'=casewhengradebetween85and100then'優(yōu)'whengradebetween75and85then'良'whengradebetween70and75then'中'whengradebetween60and70then'及格'whengradebetween0and59then'不及格'else'erroer'endfromstudcoursesa,coursescwhereo=oandxingzhi='B'(15)將成績表中必修課成績按實(shí)際分?jǐn)?shù)輸出,同時(shí)選修課的成績按五級制形式輸出。selectsno,o,gradefromstudcoursesa,coursescwhereo=oandxingzhi='A'selectsno,o,'grade'=casewhengradebetween85and100then'優(yōu)'whengradebetween75and85then'良'whengradebetween70and75then'中'whengradebetween60and70then'及格'whengradebetween0and59then'不及格'else'erroer'endfromstudcoursesa,coursescwhereo=oandxingzhi='B'(19)查詢每個(gè)學(xué)期中平均成績都在班級排名前30%的學(xué)生的姓名。19.selecta.sno,sname,class,AVG(grade)avgintotmpfromstudentsasa,xkasbwherea.sno=b.snogroupbyclass,a.sno,snameselectsno,sname,class,row_number()over(partitionbyclassorderbyavg)asidintotmp1fromtmpselectclass,COUNT(*)*0.3countintotmp2fromtmp1groupbyclassselecta.snamefromtmp1a,tmp2bwherea.class=b.classandid<countselectst.sno,sname,classname,AVG(grade)平均intotmpfromStudentsdentsa,studcoursesstwherest.sno=a.snogroupbyclassname,st.sno,snameselectsno,sname,classname,ROW_NUMBER()over(partitionbyclassnameorderby平均)idintotmp1fromtmpselectclassname,COUNT(*)*0.3countintotmp2fromtmp1groupbyclassnameselectst.snamefromtmp1a,tmp2bwherea.classname=b.classnameandid<count(20)計(jì)算姓名為x的這個(gè)學(xué)生第2011-1學(xué)期平均成績在班級中的排名名次。selectsname,名次from(selectsname,avg(grade)平均成績,dense_rank()over(orderbyavg(grade)desc)名次fromStudentsdentsst,studcoursesawherest.sno=a.snogroupbysname)aspwherep.sname='雷曄'(21) 查詢選修過“數(shù)據(jù)庫”和“數(shù)據(jù)結(jié)構(gòu)”這兩門課程的學(xué)生姓名。selectst.sno,snamefromStudentsdentsst,coursesc,studcoursesawhereo=oandst.sno=a.snoandcname='數(shù)據(jù)結(jié)構(gòu)'andst.snoin(selectst.snofromStudentsdentsst,coursesc,studcoursesawhereo=oandst.sno=a.snoandcname='數(shù)據(jù)庫')(22) 查詢沒有選修過“數(shù)據(jù)庫”這門課程的學(xué)生姓名selectsnamefromStudentsdentswheresnonotin(selectst.snofromStudentsdentsst,coursesc,studcoursesawhereo=oandst.sno=a.snoandcname='數(shù)據(jù)庫')(23) 查詢選修過“數(shù)據(jù)庫”但沒有選修其先行課的學(xué)生姓名。selectst.sno,snamefromstudentsdentsst,coursesc,studcoursesawhereo=oandst.sno=a.snoandcname='數(shù)據(jù)庫'andst.snonotin(selectsd.snofromstudcoursessd,courseso,studcoursessuwhereo=oandsu.sno=sd.snoando=(selectbeforecnofromcourseswherecname='數(shù)據(jù)庫'))(24)查詢所有課程成績?nèi)考案竦膶W(xué)生姓名。droptabletmp1selectst.snamedintotmp1fromstudentsdentsst,studcoursesawherest.sno=a.snoandgrade<60orgradeisNULLselectdistinctst.snamefromstudcoursesa,tmp1,Studentsdentsstwherest.sno=a.snoandst.snamenotin(selectdfromtmp1)25.(25) 查詢每個(gè)學(xué)期必修課成績?nèi)考案竦膶W(xué)生姓名droptabletmp1selectst.snamedintotmp1fromstudentsdentsst,studcoursesa,coursescwheregrade<60andst.sno=a.snoandxingzhi='A'orgradeisNULLselectdistinctst.snamefromstudentsdentsst,tmp1,studcoursesawherest.sno=a.snoandst.snamenotin(selectdfromtmp1)26(做不出).(26) 查詢選修過教師“達(dá)爾文”所授的全部課程的學(xué)生姓名。select*fromtmpselectcnointotmpfromshoucoursess,teacherstwheretname='達(dá)爾文'andt.tno=s.tnoselectdistinctst.snamefromStudentsdentsst,tmpb,studcoursesawherea.sno=st.snoando=o(27)查詢哪些學(xué)生選修的課程中其前修課程還沒有選修過。selectdistinctsnamefromStudentsdentsst,studcoursesa,coursescwherest.sno=a.snoando=oandc.beforecnoisNULL(28(做不出)查詢哪些學(xué)生至少選修了學(xué)號為“S105401F”這個(gè)學(xué)生選修的全部課程。selectocno,c.pcnopcnointotmp1fromstudentss,coursesc,xkwheres.sno=xk.snoando=oands.sno='S105401F'selectocno,c.pcnopcno,s.snamenameintotmp2fromstudentss,coursesc,xkwheres.sno=xk.snoando=oands.sno<>'S105401F'selectnameintotmp3fromtmp1,tmp2whereo=oselectfromtmp3(30) 查詢哪些學(xué)生沒有選修過教師“達(dá)爾文”所授的任何一門課程selecttnointotmpfromteacherstwheret.tname='達(dá)爾文'selectdistinctst.snamefromcoursesc,Studentsdentsst,studcoursesa,tmptwherest.sno=a.snoando=o(31)(做不出) 查詢哪些學(xué)生至少選修了教師“達(dá)爾文”所授的兩門不同的課程。(32) 查詢2011學(xué)年哪些老師授課們數(shù)最多。selectdistincttop1tname,count(*)授課數(shù)fromshoucoursess,teacherst,coursescwheres.tno=t.tnoando=ogroupbytname(33) 查詢2011學(xué)年哪些老師選修課學(xué)生選課人數(shù)最多。(34) 查詢哪些學(xué)生已經(jīng)獲得的必修課學(xué)分不少于7,選修課學(xué)分不少于8selectsum(xuefen)必修課學(xué)分,snamefromStudentsdentsst,coursesc,studcoursesagroupbysname,a.sno,o,xingzhi,st.sno,ohavingxingzhi='A'ando=oandst.sno=a.snoandsum(xuefen)>=7selectsum(xuefen)選修課學(xué)分,snamefromStudentsdentsst,coursesc,studcoursesagroupbysname,a.sno,o,xingzhi,st.sno,ohavingxingzhi='B'ando=oandst.sno=a.snoandsum(xuefen)>=8(35) 建立一個(gè)存儲過程,輸入一個(gè)學(xué)生的姓名,返回該學(xué)生全部必修課課程的平均成績。createproceduremygrade@namechar(10)asdeclare@avgfloatselect@avg=AVG(grade)fromStudentsdentsst,coursesc,studcoursesawhereo=oandst.sno=a.snoandxingzhi='A'andsname=@nameprint@avgreturn(@avg)declare@avgfloatexecute@avg=myGrade'李麗'print@avg(36) 建立一個(gè)存儲過程,輸入一門課程的編號以及要求查詢成績的區(qū)間(x~y),輸出該課程所有在該區(qū)間內(nèi)的學(xué)生姓名,要求成績從高到低排序。dropprocedurestunamecreateprocedurestuname@cnochar(8),@xint,@yintasselectsname,gradefromStudentsdentsst,coursesc,studcoursesawhereo=oandst.sno=a.snoandgradebetween@xand@yando=@cnoexecutestuname'003','44','80'(37) 建立一個(gè)存儲過程,輸入一個(gè)學(xué)生的學(xué)號,列出該學(xué)生最近這個(gè)學(xué)期的全部課程的成績,并通過調(diào)用該存儲過程,編寫程序,輸出所有學(xué)生最近這個(gè)學(xué)期全部課程的成績。dropproceduregradecreateproceduregrade@snochar(10)asselectsname,gradefromStudentsdentsst,coursesc,studcoursesawhereo=oandst.sno=a.snoand@sno=st.snoexecutegrade'a123456F'(38) 建立一個(gè)是用戶定義表值函數(shù),輸入一個(gè)課程名稱,輸出該課程考試成績最高的這些學(xué)生的姓名。dropfunctiontop1xushencreatefunctiontop1xushen(@cnamechar(10))returnstableasreturn(selectsname,gradefromStudentsdentsst,coursesc,studcoursesawhereo=oandst.sno=a.snoandgrade=(selectmax(grade)fromStudentsdentsst,coursesc,studcoursesawhereo=oandst.sno=a.snoandame=@cname))goselectsno,snamefromStudentsdentswheresnamein(selectsnamefromtop1xushen('數(shù)據(jù)庫'))(39) 編寫一個(gè)用戶定義函數(shù),要求:輸入一個(gè)課程編碼,根據(jù)成績表,計(jì)算并返回該課程全部學(xué)生考試成績的平均值與及格率,并通過調(diào)用該函數(shù),編寫一個(gè)存儲過程計(jì)算列出課程表中全部課程考試成績的平均值與及格率。dropfunctiongradedropproceduregradecreatefunctiongrade(@cnochar(12))returnstableasreturn(selectavg(grade)平均值,(selectCOUNT(*)fromstudcourseswherecno=@cnoandgrade>=60)*1.0/(selectCOUNT(*)fromstudcourseswherecno=@cno)及格率fromstudcourseswherecno=@cno)goselect*fromgrade('002')(40) **************編寫一個(gè)用戶定義函數(shù),輸入一個(gè)學(xué)號和學(xué)年號,計(jì)算返回該學(xué)生該學(xué)年的綜合智育成績,計(jì)算公式如下16題所示。要求借助該用戶定義函數(shù),使用UPDATE語句,計(jì)算每個(gè)學(xué)生每個(gè)學(xué)年的綜合智育成績。(41) 編寫一個(gè)存儲過程,輸入一個(gè)學(xué)年號和學(xué)生學(xué)號,返回該學(xué)生在該學(xué)年中綜合智育成績的排名名次。dropprocedurerankscreateprocedureranks@xuankexuqichar(20),@snochar(12)asdeclare@rankintselectst.sno,xuankexuqi,RANK()over(orderbygrade)asrankintotmpfromStudentsdentsst,studcoursesawherexuankexuqi=@xuankexuqianda.sno=st.snoselect@rank=RANKfromtmpwheretmp.sno=@snoselect@rank排名名次executeranks'2011-2012-2','a123456F'(42)編寫一個(gè)用戶定義表值函數(shù),輸入一個(gè)學(xué)號與學(xué)期號, 輸出返回該學(xué)生該學(xué)期的全部課程及其成績。DROPfunctioncnamegradecreatefunctioncnamegrade(@snochar(15),@xuankexuqichar(20))returnstableasreturn(selecta.sno,o,cname,gradefromstudentsdentsst,studcoursesa,coursescwherea.sno=st.snoando=oanda.sno=@snoandxuankexuqi=@xuankexuqi)goselect*fromcnamegrade('a123456F','2011-2012-2')(43) **************創(chuàng)建一個(gè)存儲過程,輸入一門課程的編號,利用遞歸CTE,輸出該課程的所有前修課程(包括前修課程的前修課程)。(44) 建立一個(gè)存儲過程,輸入一門課程的編號以及要求查詢成績的區(qū)間(x~y),使用游標(biāo)逐條輸出該課程所有在該區(qū)間內(nèi)的學(xué)生姓名,要求成績從高到低排序,輸出格式如下:課程編號:xxx課程名稱:xxx----------------------------------------------------------------學(xué)號姓名成績x1xx1xxx1x2xx2xxx2dropproceduremyprocedureIF(OBJECT_ID('myproc')ISNOTNULL)dropproceduremyprocgocreateproceduremyproc@couridnvarchar(5),@xint,@yintasdeclare@stuidnvarchar(8),@coursenvarchar(40),@studentnvarchar(40),@scoreintselect@course=cnamefromcourseswherecno=@couridprintspace(10)+'課程編號:'+@courid+space(10)+'課程名稱:'+@courseprintreplicate('-',80)print'學(xué)號'+space(14)+'姓名'+space(16)+'成績'declaremycursorcursorforselecta.sno,sname,gradefromstudentsdentsst,studcoursesawherea.sno=st.snoandcno=@couridandgradebetween@xand@yorderbygradedescopenmycursorfetchnextfrommycursorinto@stuid,@student,@scorewhile@@fetch_status=0beginprint@stuid+space(10)+@student+space(11)+str(@score,2)fetchnextfrommycursorinto@stuid,@student,@scoreenddeallocatemycursorgoexecutemyproc'002',40,100Go(45)編寫一個(gè)存儲過程,要求:輸入一個(gè)學(xué)生的學(xué)號,按以下格式輸出該學(xué)生全部課程的成績單。要求使用cursor,輸出格式如下:學(xué)號:×××××××××姓名:×××序號 課程名稱 課程性質(zhì) 開課學(xué)期 成績 排名1 高等數(shù)學(xué) 必修課 2010-1 89 122 英語 必修課 2010-1 75 23 …… 20 數(shù)據(jù)庫技術(shù) 必修課 2011-2 85 821 物流管理 選修課 2011-2 92 1…… (46)建立一個(gè)存儲過程,輸入一個(gè)學(xué)期號,利用游標(biāo)按班級和學(xué)號的次序輸出該學(xué)期全部學(xué)生的考試成績,格式如下:學(xué)期:*******學(xué)號:×××××××××姓名:×××序號 課程名稱 課程性質(zhì) 成績1 高等數(shù)學(xué) 必修課 892 英語 必修課 75 …… 20 數(shù)據(jù)庫技術(shù) 必修課 8521 物流管理 選修課 92…… 及格門數(shù):***,不及格門數(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論