附錄C 數(shù)據(jù)庫(kù)上機(jī)實(shí)驗(yàn)及附錄D 全國(guó)主要城市年平均雷暴日數(shù)統(tǒng)計(jì)表_第1頁(yè)
附錄C 數(shù)據(jù)庫(kù)上機(jī)實(shí)驗(yàn)及附錄D 全國(guó)主要城市年平均雷暴日數(shù)統(tǒng)計(jì)表_第2頁(yè)
附錄C 數(shù)據(jù)庫(kù)上機(jī)實(shí)驗(yàn)及附錄D 全國(guó)主要城市年平均雷暴日數(shù)統(tǒng)計(jì)表_第3頁(yè)
附錄C 數(shù)據(jù)庫(kù)上機(jī)實(shí)驗(yàn)及附錄D 全國(guó)主要城市年平均雷暴日數(shù)統(tǒng)計(jì)表_第4頁(yè)
附錄C 數(shù)據(jù)庫(kù)上機(jī)實(shí)驗(yàn)及附錄D 全國(guó)主要城市年平均雷暴日數(shù)統(tǒng)計(jì)表_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

附錄C上機(jī)實(shí)驗(yàn)C.1第4章上機(jī)實(shí)驗(yàn)-------------------僅供參考------------------------------下列實(shí)驗(yàn)均使用SQLServer的SSMS工具實(shí)現(xiàn)。1.用圖形化方法創(chuàng)建符合如下條件的數(shù)據(jù)庫(kù)(創(chuàng)建數(shù)據(jù)庫(kù)的方法可參見本書附錄A):數(shù)據(jù)庫(kù)名為:學(xué)生數(shù)據(jù)庫(kù)主要數(shù)據(jù)文件的邏輯文件名為:Students_data,存放在D:\Data文件夾下(若D:盤中無此文件夾,請(qǐng)先建立此文件夾,然后再創(chuàng)建數(shù)據(jù)庫(kù)。),初始大小為:5MB,增長(zhǎng)方式為自動(dòng)增長(zhǎng),每次增加1MB。日志文件的邏輯文件名字為:Students_log,也存放在D:\Data文件夾下,初始大小為:2MB,增長(zhǎng)方式為自動(dòng)增長(zhǎng),每次增加10%。2.選用已建立的“學(xué)生數(shù)據(jù)庫(kù)”,寫出創(chuàng)建滿足表C-1到4-4條件的表的SQL語(yǔ)句,并執(zhí)行所寫代碼。(注:“說明”部分不作為表定義內(nèi)容)表C-1Student表結(jié)構(gòu)列名說明數(shù)據(jù)類型約束Sno學(xué)號(hào)普通編碼定長(zhǎng)字符串,長(zhǎng)度為7主鍵Sname姓名普通編碼定長(zhǎng)字符串,長(zhǎng)度為10非空Ssex性別普通編碼定長(zhǎng)字符串,長(zhǎng)度為2取值范圍:{男,女}Sage年齡微整型(tinyint)取值范圍:15-45Sdept所在系普通編碼不定長(zhǎng)字符串,長(zhǎng)度為20默認(rèn)值為“計(jì)算機(jī)系”Sid身份證號(hào)普通編碼定長(zhǎng)字符串,長(zhǎng)度為10取值不重Sdate入學(xué)日期日期默認(rèn)為系統(tǒng)當(dāng)前日期表C-2Course表結(jié)構(gòu)列名說明數(shù)據(jù)類型約束Cno課程號(hào)普通編碼定長(zhǎng)字符串,長(zhǎng)度為10主鍵Cname課程名普通編碼不定長(zhǎng)字符串,長(zhǎng)度為20非空Credit學(xué)時(shí)數(shù)整型取值大于0Semester學(xué)分小整型表C-3SC表結(jié)構(gòu)列名說明數(shù)據(jù)類型約束Sno學(xué)號(hào)普通編碼定長(zhǎng)字符串,長(zhǎng)度為7主鍵,引用Student的外鍵Cno課程號(hào)普通編碼定長(zhǎng)字符串,長(zhǎng)度為10主鍵,引用Course的外鍵Grade成績(jī)小整型取值范圍為0-100表C-4Teacher表結(jié)構(gòu)列名說明數(shù)據(jù)類型約束Tno教師號(hào)普通編碼定長(zhǎng)字符串,長(zhǎng)度為8非空Tname教師名普通編碼定長(zhǎng)字符串,長(zhǎng)度為10非空Salary工資定點(diǎn)小數(shù),小數(shù)點(diǎn)前4位,小數(shù)點(diǎn)后2位3.寫出實(shí)現(xiàn)如下功能的SQL語(yǔ)句,并執(zhí)行所寫代碼,查看執(zhí)行結(jié)果。在Teacher表中添加一個(gè)職稱列,列名為:Title,類型為nchar(4)。ALTERTABLETeacherADDTitleVARCHAR(4)為Teacher表中的Title列增加取值范圍約束,取值范圍為:{教授,副教授,講師}。ALTERTABLETeacherADDCONSTRAINTTitleCHECK(TitleIN('教授','副教授','講師'))將Course表中Credit列的類型改為:tinyint。注意:這里首先需要先刪除Credit的約束,修改完數(shù)據(jù)類型后再重新添加約束項(xiàng)ALTERTABLECourseDROPCONSTRAINTCK__Course__Credit__2B3F6F97ALTERTABLECourseALTERCOLUMNCreditTINYINTALTERTABLECourseADDCONSTRAINTCreditCHECK(Credit>0)刪除Student表中的Sid和Sdate列。注意:這里首先需要先刪除約束ALTERTABLEStudentDROPCONSTRAINTUQ__Student__CA1E5D79B3204FCFALTERTABLEStudentDROPCONSTRAINTDF__Student__Sdate__3B75D760ALTERTABLEStudentDROPCOLUMNSdate,Sid為Teacher表添加主鍵約束,其主鍵為:Tno。ALTERTABLETeacherADDPRIMARYKEY(Tno)※建立數(shù)據(jù)庫(kù)主要文件和日志文件※我們可以看到D盤增加了主要數(shù)據(jù)文件.mdf和日志文件.ldf※給students_data建立表格createtableStudent(Snochar(7),Snamechar(10)notnull,Ssexchar(2)check(Ssex='男'orSsex='女'),Sagetinyintcheck(Sage>14ANDSage<46),Sdeptvarchar(20)default'計(jì)算機(jī)系',Sidchar(10)unique,--身份證號(hào)Sdatedatedefaultgetdate()primarykey(Sno))createtableCourse(Cnochar(10)primarykey,Cnamevarchar(20)notnull,Creditintcheck(Credit>0),Semestertinyint,)createtableSC(Snochar(7),Cnochar(10),Gradetinyintcheck(Grade>=0ANDGrade<=100)foreignkey(Sno)referencesStudent(Sno),foreignkey(Cno)referencesCourse(Cno))createtableTeacher(Tnochar(8)notnull,Tnamechar(10)notnull,Salarydecimal(6,2))C.2第5章上機(jī)實(shí)驗(yàn)本實(shí)驗(yàn)均在SQLServer的SSMS工具中實(shí)現(xiàn)。首先在已創(chuàng)建的“學(xué)生數(shù)據(jù)庫(kù)”中創(chuàng)建本章表5-1~5-3所示的Student、Course和SC表,并插入表5-4~5-6所示數(shù)據(jù),然后編寫實(shí)現(xiàn)如下操作的SQL語(yǔ)句,執(zhí)行所寫的語(yǔ)句,并查看執(zhí)行結(jié)果。有關(guān)建表及所需要的數(shù)據(jù),見本章末尾查詢SC表中的全部數(shù)據(jù)。SELECT*FROMSC 查詢計(jì)算機(jī)系學(xué)生的姓名和年齡。SELECTSname,SageFROMStudentWHERESdept='計(jì)算機(jī)系'查詢成績(jī)?cè)?0~80分的學(xué)生的學(xué)號(hào)、課程號(hào)和成績(jī)。SELECTSno,Cno,GradeFROMSCWHEREGradebetween70AND80查詢計(jì)算機(jī)系年齡在18~20歲的男生姓名和年齡。SELECTSname,SageFROMStudentWHERESdept='計(jì)算機(jī)系'ANDSageBETWEEN18AND20ANDSsex='男'查詢C001課程的最高分。SELECTMAX(grade)AS最高成績(jī)FROMSCWHERECno='C001'查詢計(jì)算機(jī)系學(xué)生的最大年齡和最小年齡。SELECTMAX(Sage)AS年長(zhǎng),MIN(Sage)AS年幼FROMStudentWHERESdept='計(jì)算機(jī)系'統(tǒng)計(jì)每個(gè)系的學(xué)生人數(shù)。SELECTSdept,COUNT(Sno)AS人數(shù)FROMStudentGROUPBYSdept統(tǒng)計(jì)每門課程的選課人數(shù)和最高成績(jī)。SELECTCno,COUNT(Sno)AS人數(shù),MAX(Grade)AS最高成績(jī)FROMSCGROUPBYCno統(tǒng)計(jì)每個(gè)學(xué)生的選課門數(shù)和考試總成績(jī),并按選課門數(shù)升序顯示結(jié)果。SELECTSno,COUNT(Cno)AS選課數(shù)量,SUM(Grade)AS考試總成績(jī)FROMSCGROUPBYSno列出總成績(jī)超過200的學(xué)生的學(xué)號(hào)和總成績(jī)。SELECTSno,SUM(Grade)AS考試總成績(jī)FROMSCGROUPBYSnoHAVINGSUM(Grade)>200查詢選了C002課程的學(xué)生姓名和所在系。SELECTSname,SdeptFROMStudentst,SCscWHEREst.Sno=sc.SnoANDCno='C002'或者SELECTSname,SdeptFROMStudentWHERESnoIN(SELECTSnoFROMSCWHERECno='C002')或者SELECTSname,SdeptFROMStudentWHEREEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno='C002')查詢考試成績(jī)80分以上的學(xué)生姓名、課程號(hào)和成績(jī),并按成績(jī)降序排列結(jié)果。SELECTSname,Cno,GradeFROMStudent,SCWHEREStudent.Sno=SC.SnoANDGrade>80ORDERBYGradeDESC查詢與VB在同一學(xué)期開設(shè)的課程的課程名和開課學(xué)期。SELECTc2.Cname,c2.SemesterFROMCoursec1,Coursec2WHEREc1.Cname=c2.CnameANDc1.Cname='VB'ANDc2.Cname!='VB'查詢與李勇年齡相同的學(xué)生的姓名、所在系和年齡。SELECTs2.Sname,s2.Sdept,s2.SageFROMStudents1,Students2WHEREs1.Sage=s2.SageANDs1.Sname='李勇'ANDs2.Sname!='李勇'或者SELECTSname,Sdept,SageFROMStudentWHERESage=(SELECTSageFROMStudentWHERESname='李勇')ANDSname!='李勇'查詢哪些課程沒有學(xué)生選修,列出課程號(hào)和課程名。SELECTCourse.Cno,Course.CnameFROMCourseLEFTJOINSConSC.Cno=Course.CnoWHERESC.CnoISNULL查詢每個(gè)學(xué)生的選課情況,包括未選課的學(xué)生,列出學(xué)生的學(xué)號(hào)、姓名、選的課程號(hào)。SELECTStudent.Sno,Student.Sname,CnoFROMStudentLEFTJOINSCONSC.Sno=Student.Sno查詢計(jì)算機(jī)系哪些學(xué)生沒有選課,列出學(xué)生姓名。SELECTSnameFROMStudentWHERESdept='計(jì)算機(jī)系'ANDSnoNOTIN(SELECTSnoFROMSC)或者SELECTSnameFROMStudentSLEFTJOINSCONS.Sno=SC.SnoWHERESdept='計(jì)算機(jī)系'ANDSC.CnoISNULL查詢計(jì)算機(jī)系年齡最大的三個(gè)學(xué)生的姓名和年齡。SELECTTop3Sname,SageFROMStudentWHERESdept='計(jì)算機(jī)系'ORDERBYSageDESC列出“VB”課程考試成績(jī)前三名的學(xué)生的學(xué)號(hào)、姓名、所在系和VB成績(jī)。SELECTTOP3WITHTIESSname,Sdept,GradeFROMStudentSJOINSConS.Sno=SC.SnoJOINCourseCONC.Cno=SC.CnoWHERECname='VB'ORDERBYGradeDESC查詢選課門數(shù)最多的前2位學(xué)生,列出學(xué)號(hào)和選課門數(shù)?!蘏ELECTtop2Sno,COUNT(Cno)AS選課數(shù)FROMSCGROUPBYSnoORDERBYCOUNT(Cno)DESC查詢計(jì)算機(jī)系學(xué)生姓名、年齡和年齡情況,其中年齡情況為:如果年齡小于18,則顯示“偏小”;如果年齡在18-22,則顯示“合適”;如果年齡大于22,則顯示“偏大”?!蘏ELECTSno,Sage,CASEWHENSage<18THEN'偏小'WHENSage>=18ANDSage<=22THEN'適合'WHENSage>22THEN'偏大'ENDAS年齡情況FROMStudent統(tǒng)計(jì)每門課程的選課人數(shù),包括有人選的課程和沒有人選的課程,列出課程號(hào),選課人數(shù)及選課情況,其中選課情況為:如果此門課程的選課人數(shù)超過100人,則顯示“人多”;如果此門課程的選課人數(shù)在40~100,則顯示“一般”;如果此門課程的選課人數(shù)在1~40,則顯示“人少”;如果此門課程沒有人選,則顯示“無人選”?!蘏ELECTCourse.Cno,COUNT(Sno)AS選課人數(shù),CASEWHENCOUNT(Sno)>100THEN'人多'WHENCOUNT(Sno)<40ANDCOUNT(Sno)>0THEN'人少'WHENCOUNT(Sno)<=100ANDCOUNT(Sno)>=40THEN'一般'WHENCOUNT(Sno)=0THEN'無人選'endAS人數(shù)情況FROMSCRIGHTJOINCourseONCourse.Cno=SC.CnoGROUPBYCourse.Cno查詢計(jì)算機(jī)系選了VB課程的學(xué)生姓名、所在系和考試成績(jī),并將結(jié)果保存到新表VB_Grade中?!叹植颗R時(shí)表:#新表名。局部于當(dāng)前連接,生命期同連接期。全局臨時(shí)表:##新表名??稍谒羞B接中使用,生命期同用戶連接期永久表:新表名,存儲(chǔ)在磁盤上格式:SELECT選擇列表 INTO新表名 FROM子句…SELECTSname,Sdept,GradeINTOVB_GradeFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDCourse.Cno=SC.CnoANDCname='VB'統(tǒng)計(jì)每個(gè)系的女生人數(shù),并將結(jié)果保存到新表Girls中?!蘏ELECTSdept,Ssex,COUNT(Ssex)AS人數(shù)IntoGirlsFROMStudentWHERESsex='女'GROUPBYSdept,Ssex用子查詢實(shí)現(xiàn)如下查詢:(1)查詢選了“C001”課程的學(xué)生姓名和所在系?!蘏ELECTSname,SdeptFROMStudentWHERESnoIN(SELECTSnoFROMSCWHERECno='C001')(2)查詢通信工程系成績(jī)80分以上的學(xué)生的學(xué)號(hào)和姓名?!蘏ELECTSno,SnameFROMStudentWHERESdept='通信工程系'ANDSnoIN(SELECTSnoFROMSCWHEREGrade>80)(3)查詢計(jì)算機(jī)系考試成績(jī)最高的學(xué)生的姓名。√SELECTSnameFROMStudent,SCWHERESC.Sno=Student.SnoANDSdept='計(jì)算機(jī)系'ANDGradein(SELECTMAX(Grade)FROMSC,StudentWHERESC.Sno=Student.SnoANDSdept='計(jì)算機(jī)系')(4)查詢年齡最大的男生的姓名、所在系和年齡?!蘏ELECTSname,Sdept,SageFROMStudentWHERESsex='男'ANDSagein(SELECTMAX(Sage)FROMStudentWHERESsex='男')查詢C001課程的考試成績(jī)高于該課程平均成績(jī)的學(xué)生的學(xué)號(hào)和成績(jī)。SELECTSno,GradeFROMSCWHERECno='C001'ANDGrade>(SELECTAVG(Grade)FROMSCWHERECno='C001')查詢計(jì)算機(jī)系學(xué)生考試成績(jī)高于計(jì)算機(jī)系學(xué)生平均成績(jī)的學(xué)生的姓名、考試的課程名和考試成績(jī)。SELECTSname,Sdept,Cname,GradeFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDCourse.Cno=SC.CnoANDSdept='計(jì)算機(jī)系'ANDGrade>(SELECTAVG(Grade)FROMSC,Course,StudentWHERESC.Cno=Course.CnoANDStudent.Sno=SC.SnoANDSdept='計(jì)算機(jī)系')查詢VB課程考試成績(jī)高于VB平均成績(jī)的學(xué)生姓名和VB成績(jī)。SELECTSname,GradeFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDCourse.Cno=SC.CnoANDCname='VB'ANDGrade>(SELECTAVG(Grade)FROMSC,CourseWHERECourse.Cno=SC.CnoANDCname='VB')查詢沒選VB的學(xué)生姓名和所在系。SELECTSname,SdeptFROMStudentWHERESnoNOTIN(SELECTSnoFROMSC,CourseWHERESC.Cno=Course.CnoANDCname='VB')或者SELECTSname,SdeptFROMStudentWHERENOTEXISTS(SELECT*FROMSC,CourseWHERECourse.Cno=SC.CnoANDSno=Student.SnoANDCname='VB')查詢每個(gè)學(xué)期學(xué)分最高的課程信息,列出開課學(xué)期、課程名和學(xué)分。SELECTCname,Semester,CreditFROMCoursec1WHERENOTEXISTS(SELECT*FROMCoursec2WHEREc1.Semester=c2.SemesterANDc1.Credit<c2.Credit)查詢每門課程考試成績(jī)最高的學(xué)生信息,列出課程號(hào)、學(xué)生姓名和最高成績(jī),結(jié)果按課程號(hào)升序排序,不包括沒考試的課程。SELECTCname,sname,SC.Cno,GradeFROMstudentjoinsconstudent.sno=o=oWHEREgrade=(SELECTmax(grade)FROMscWHEREcno=o)orderBYSC.CnoASc或者SELECTsc1.sno,Sname,Cno,GradeFROMSCsc1,studentWHEREnotexists(SELECT*FROMSCsc2WHEREsc1.Cno=sc2.CnoANDsc1.Grade<sc2.Grade)ANDGradeISNOTNULLANDStudent.Sno=sc1.SnoorderBYCnoASC查詢選了全部課程的學(xué)生姓名SELECTSnameFROMStudentWHERESnoin(SELECTSnoFROMSCGROUPBYSnohavingCOUNT(*)=(SELECTCOUNT(*)FROMCourse))或者SELECTSnameFROMstudentWHERENOTexists(SELECT*FROMcourseWHERENOTexists(SELECT*FROMSCWHERESno=student.snoANDcno=Course.Cno))創(chuàng)建一個(gè)新表,表名為test,其結(jié)構(gòu)為(COL1,COL2,COL3),其中,COL1:整型,允許空值。COL2:普通編碼定長(zhǎng)字符型,長(zhǎng)度為10,不允許空值。COL3:普通編碼定長(zhǎng)字符型,長(zhǎng)度為10,允許空值。試寫出按行插入如下數(shù)據(jù)的語(yǔ)句(空白處表示是空值)。COL1COL2COL3B11B2C22B3createtabletest(C0L1int,C0L2char(10)notnull,C0L3char(10))insertintotest(C0L2)values('B1')insertintotestvalues(1,'B2','C2')insertintotest(C0L1,C0L2)values(2,'B3')利用23題建立的VB_Grade表,將信息管理系選了VB課程的學(xué)生姓名、所在系和考試成績(jī)插入到VB_Grade表中。INSERTINTOVB_GradeSELECTSname,Sdept,GradeFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.CnoANDSdept='信息管理系'ANDCname='VB'將所有選修C001課程的學(xué)生的成績(jī)加10分。UPDATESCSETGrade=Grade+10WHERECno='C001'將計(jì)算機(jī)系所有學(xué)生的“計(jì)算機(jī)文化學(xué)”的考試成績(jī)加10分。UPDATESCSETGrade=Grade+10WHERESnoin(SELECTSC.SnoFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.CnoANDSdept='計(jì)算機(jī)系'ANDCname='計(jì)算機(jī)文化學(xué)')修改“VB”課程的考試成績(jī),如果是通信工程系的學(xué)生,則增加10分;如果是信息管理系的學(xué)生則增加5分,其他系的學(xué)生不加分。UPDATESCSETGrade=Grade+CASESdeptWHEN'通信工程系'THEN10WHEN'信息管理系'THEN5else0endFROMStudent,SC,CourseWHERESC.Sno=Student.SnoANDCourse.Cno=SC.CnoANDCname='VB'刪除成績(jī)小于50分的學(xué)生的選課記錄。DELETEFROMSCWHEREGrade<50刪除計(jì)算機(jī)系VB考試成績(jī)不及格學(xué)生的VB選課記錄。DELETEFROMSCFROMSC,Student,CourseWHERESC.Sno=Student.SnoANDSC.Cno=Course.CnoANDSdept='計(jì)算機(jī)系'ANDCname='VB'ANDGrade<60刪除“VB”考試成績(jī)最低的學(xué)生的VB修課記錄。DELETEFROMSCFROMSC,CourseWHERESC.Cno=Course.CnoANDCname='VB'ANDGrade=(SELECTMIN(Grade)FROMSC,CourseWHERESC.Cno=Course.CnoANDCname='VB')刪除沒人選的課程的基本信息。DELETEFROMCourseFROMCourseleftjoinSConCourse.Cno=SC.CnoWHERESC.CnoISNULL本章有關(guān)建表和插入表格中的數(shù)據(jù)CREATETABLEStudent(SnoCHAR(7)PRIMARYKEY,SnameNCHAR(5)NOTNULL,SsexNCHAR(1),SageTINYINT,SdeptNVARCHAR(20))CREATETABLECourse(CnoCHAR(6),CnameNVARCHAR(20)NOTNULL,CreditTINYINT,SemesterTINYINT,PRIMARYKEY(Cno))CREATETABLESC(SnoCHAR(7)NOTNULL,CnoCHAR(6)NOTNULL,GradeTINYINT,PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESStudent(Sno),FOREIGNKEY(Cno)REFERENCESCourse(Cno))insertintostudentvalues('0811101','李勇','男',21,'計(jì)算機(jī)系')insertintostudentvalues('0811102','劉晨','男',20,'計(jì)算機(jī)系')insertintostudentvalues('0811103','王敏','女',20,'計(jì)算機(jī)系')insertintostudentvalues('0811104','張小紅','女',19,'計(jì)算機(jī)系')insertintostudentvalues('0821101','張立','男',20,'信息管理系')insertintostudentvalues('0821102','吳賓','女',19,'信息管理系')insertintostudentvalues('0821103','張海','男',20,'信息管理系')insertintostudentvalues('0831101','錢小平','女',21,'通信工程系')insertintostudentvalues('0831102','王大力','男',20,'通信工程系')insertintostudentvalues('0831103','張姍姍','女',19,'通信工程系')insertintocoursevalues('C001','高等數(shù)學(xué)',4,1)insertintocoursevalues('C002','大學(xué)英語(yǔ)',3,1)insertintocoursevalues('C003','大學(xué)英語(yǔ)',3,2)insertintocoursevalues('C004','計(jì)算機(jī)文化學(xué)',2,2)insertintocoursevalues('C005','VB',2,3)insertintocoursevalues('C006','數(shù)據(jù)庫(kù)基礎(chǔ)',4,5)insertintocoursevalues('C007','數(shù)據(jù)結(jié)構(gòu)',4,4)insertintocoursevalues('C008','計(jì)算機(jī)網(wǎng)絡(luò)',4,4)insertintoscvalues('0811101','C001',96)insertintoscvalues('0811101','C002',80)insertintoscvalues('0811101','C003',84)insertintoscvalues('0811101','C005',62)insertintoscvalues('0811102','C001',92)insertintoscvalues('0811102','C002',90)insertintoscvalues('0811102','C004',84)insertintoscvalues('0821102','C001',76)insertintoscvalues('0821102','C004',85)insertintoscvalues('0821102','C005',73)insertintoscvalues('0821102','C007',NULL)insertintoscvalues('0821103','C001',50)insertintoscvalues('0821103','C004',80)insertintoscvalues('0831101','C001',50)insertintoscvalues('0831101','C004',80)insertintoscvalues('0831102','C007',NULL)insertintoscvalues('0831103','C004',78)insertintoscvalues('0831103','C005',65)insertintoscvalues('0831103','C007',NULL)C.3第6章上機(jī)實(shí)驗(yàn)下列實(shí)驗(yàn)均使用SQLServer的SSMS工具實(shí)現(xiàn)。利用第4章上機(jī)實(shí)驗(yàn)創(chuàng)建的“學(xué)生數(shù)據(jù)庫(kù)”中Student、Course和SC表,完成下列實(shí)驗(yàn)。寫出實(shí)現(xiàn)下列操作的SQL語(yǔ)句,并執(zhí)行所寫代碼。(1)在Student表上為Sname列建立一個(gè)聚集索引,索引名為:IdxSno。(提示:若執(zhí)行創(chuàng)建索引的代碼,請(qǐng)先刪除該表的主鍵約束)注意:一個(gè)表只能有一個(gè)聚集索引,可以有多個(gè)非聚集索引(聚集索引對(duì)數(shù)據(jù)按索引關(guān)鍵字值進(jìn)行物理排序,數(shù)據(jù)行本身只能按一個(gè)順序存儲(chǔ))Student本身創(chuàng)建主鍵(Sno)的同時(shí)會(huì)默認(rèn)創(chuàng)建唯一聚集索引,且Sno為SC表的外鍵,所以,首先要?jiǎng)h除SC表的外鍵約束,再刪除Student表的主鍵約束----chenyuchao ALTERTABLESCDROPCONSTRAINTFK__SC__Sno__31EC6D26ALTERTABLESTUDENTDROPCONSTRAINTPK__Student__CA1FE464CD8CBE4FCREATECLUSTEREDINDEXidxSnoONStudent(Sname)(2)在Course表上為Cname列建立一個(gè)唯一的非聚集索引,索引名為:IdxCNCREATEUNIQUENONCLUSTEREDINDEXidxCNONCourse(Cname) (如果是在表中數(shù)據(jù)都插入完成后建立索引,此處會(huì)報(bào)錯(cuò),因?yàn)镃name中有兩個(gè)不同學(xué)期的大學(xué)英語(yǔ)課程,就不唯一了,請(qǐng)注意)(3)在SC表上為Sno和Cno建立一個(gè)組合的聚集索引,索引名為:IdxSnoCno。(提示:若執(zhí)行創(chuàng)建索引的代碼,請(qǐng)先刪除該表的主鍵約束)同樣需要?jiǎng)h除主鍵約束 ALTERTABLESCDROPCONSTRAINTPK__SC__E6000253A86AC951CREATECLUSTEREDINDEXidxSnoCnoONSC(Sno,Cno)(4)刪除Sname列上建立的IdxSno索引。DROPINDEXStudent.idxSno寫出創(chuàng)建滿足下述要求的視圖的SQL語(yǔ)句,并執(zhí)行所寫代碼。(1)查詢學(xué)生的學(xué)號(hào)、姓名、所在系、課程號(hào)、課程名、課程學(xué)分。 CREATEVIEWv1ASSELECTStudent.Sno,Sname,Sdept,SC.Cno,Cname,CreditFROMstudent,SC,CourseWHEREStudent.Sno=SC.SnoANDCourse.Cno=SC.CnoGO(2)查詢學(xué)生的學(xué)號(hào)、姓名、選修的課程名和考試成績(jī)。CREATEVIEWv2ASSELECTStudent.Sno,Sname,Cname,GradeFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDCourse.Cno=SC.CnoGO(3)統(tǒng)計(jì)每個(gè)學(xué)生的選課門數(shù),要求列出學(xué)生學(xué)號(hào)和選課門數(shù)。 CREATEVIEWv3ASSELECTSno,COUNT(Cno)CoursenumFROMSCGROUPBYSnoGO(4)統(tǒng)計(jì)每個(gè)學(xué)生的修課總學(xué)分,要求列出學(xué)生學(xué)號(hào)和總學(xué)分(說明:考試成績(jī)大于等于60才可獲得此門課程的學(xué)分)。CREATEVIEWv4ASSELECTSno,SUM(Credit)CreditsumFROMSC,CourseWHERESC.Cno=Course.CnoANDGrade>=60GROUPBYSnoGO利用第2題建立的視圖,完成如下查詢。(1)查詢考試成績(jī)大于等于90分的學(xué)生的姓名、課程名和成績(jī)。 SELECTSname,Cname,GradeFROMv2WHEREGrade>=90(2)查詢選課門數(shù)超過3門的學(xué)生的學(xué)號(hào)和選課門數(shù)。SELECTSname,Cname,GradeFROMv2WHEREGrade>=90(3)查詢計(jì)算機(jī)系選課門數(shù)超過3門的學(xué)生的姓名和選課門數(shù)。SELECTSname,CnumFROMStudent,v3WHEREv3.Sno=Student.SnoANDSdept='計(jì)算機(jī)系'ANDCoursenum>3(4)查詢修課總學(xué)分超過10分的學(xué)生的學(xué)號(hào)、姓名、所在系和修課總學(xué)分。 SELECTStudent.Sno,Sname,Sdept,CreditsumFROMStudent,v4WHEREv4.Sno=Student.SnoANDCreditsum>10(5)查詢年齡大于等于20歲的學(xué)生中,修課總學(xué)分超過10分的學(xué)生的姓名、年齡、所在系和修課總學(xué)分。SELECTSname,Sage,Sdept,CreditsumFROMStudent,v4WHEREv4.Sno=Student.SnoANDCreditsum>10ANDSage>=20修改第3題(4)定義的視圖,使其查詢每個(gè)學(xué)生的學(xué)號(hào)、總學(xué)分以及總的選課門數(shù)。ALTERVIEWv4ASSELECTSno,SUM(Credit)Creditsum,COUNT(SC.Cno)CoursenumFROMSC,CourseWHERESC.Cno=Course.CnoGROUPBYSnoC.4第7章上機(jī)實(shí)驗(yàn)利用第5章建立的學(xué)生數(shù)據(jù)庫(kù)以及Student、Coures和SC表,完成下列操作。創(chuàng)建滿足如下要求的后觸發(fā)型觸發(fā)器。說明:對(duì)于insertinto表名values()單行插入語(yǔ)句,觸發(fā)器每次都會(huì)被觸發(fā)對(duì)于insertinto表名selecFROM表名或者是insertinto表名values(),(),()....多行插入語(yǔ)句,觸發(fā)器只會(huì)觸發(fā)一次,所有的插入數(shù)據(jù)都會(huì)一并備份到inserted表中,然后執(zhí)行觸發(fā)篩選----chenyuchao(1)限制學(xué)生的考試成績(jī)必須在0-100之間。CREATETRIGGERtri1ONSCafterinsertASifexists(SELECTGradeFROMinsertedWHEREGradenotbetween0AND100)rollbackgo(2)限制不能刪除成績(jī)不及格的考試記錄。CREATETRIGGERtri2ONSCAFTERDELETEASifexists(SELECT*FROMdeletedWHEREGrade<60)rollbackgo(3)限制每個(gè)學(xué)期開設(shè)的課程總學(xué)分不能超過20。CREATETRIGGERtri3ONCourseAFTERINSERTASifexists(SELECTSUM(Credit)FROMCourseGROUPBYSemesterhavingSUM(Credit)>20)rollbackgo(4)限制每個(gè)學(xué)生每學(xué)期選的課程不能超過5門。CREATETRIGGERtri4ONSCAFTERINSERTASifexists(SELECTCOUNT(SC.Cno)FROMSC,CourseWHERESC.Cno=Course.CnoGROUPBYSemester,SnohavingCOUNT(SC.Cno)>5)ROLLBACKgo創(chuàng)建滿足如下要求的存儲(chǔ)過程。(1)查詢每個(gè)學(xué)生的修課總學(xué)分,要求列出學(xué)生學(xué)號(hào)及總學(xué)分。CREATEPROCp1ASSELECTStudent.Sno,SUM(Credit)CreditSumFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.CnoGROUPBYStudent.Sno執(zhí)行:execp1(2)查詢學(xué)生的學(xué)號(hào)、姓名、修的課程號(hào)、課程名、課程學(xué)分,將學(xué)生所在的系作為輸入?yún)?shù),執(zhí)行此存儲(chǔ)過程,并分別指定一些不同的輸入?yún)?shù)值。CREATEPROCp2@deptchar(20)='信息管理系'ASSELECTStudent.Sno,Sname,SC.Cno,Course.Cname,CreditFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.CnoANDSdept=@dept執(zhí)行:execp2執(zhí)行:execp2@dept='計(jì)算機(jī)系'(3)查詢指定系的男生人數(shù),其中系為輸入?yún)?shù),人數(shù)為輸出參數(shù)。 CREATEPROCp3@deptchar(20),@numberintoutputASSELECT@number=COUNT(Sno)FROMStudentWHERESdept=@deptANDSsex='男'執(zhí)行:declare@numintexecp3計(jì)算機(jī)系,@numoutputprint@num(4)刪除指定學(xué)生的修課記錄,其中學(xué)號(hào)為輸入?yún)?shù)。CREATEPROCp4@snochar(20)ASdeleteFROMSCWHERESno=@sno執(zhí)行:execp4'0811101'(5)修改指定課程的開課學(xué)期。輸入?yún)?shù)為:課程號(hào)和修改后的開課學(xué)期。CreateProcp5@cnochar(20),@semesterIntASupdateCoursesetSemester=@semesterWHERECno=@cno執(zhí)行:execp5'C001',4C.5第11章上機(jī)實(shí)驗(yàn)利用第4、5章建立的學(xué)生數(shù)據(jù)庫(kù)和其中的Student、Course、SC表,并利用SSMS工具完成下列操作。用SSMS工具建立SQLServer身份驗(yàn)證模式的登錄名:log1、log2和log3。用log1建立一個(gè)新的數(shù)據(jù)庫(kù)引擎查詢,在“可用數(shù)據(jù)庫(kù)”下列列表框中是否能選中學(xué)生數(shù)據(jù)庫(kù)?為什么?用系統(tǒng)管理員身份建立一個(gè)新的數(shù)據(jù)庫(kù)引擎查詢,將log1、log2和log3映射為學(xué)生數(shù)據(jù)庫(kù)中的用戶,用戶名同登錄名。在log1建立的數(shù)據(jù)庫(kù)引擎查詢中,現(xiàn)在在“可用數(shù)據(jù)庫(kù)”下列列表框中是否能選中學(xué)生數(shù)據(jù)庫(kù)?為什么?在log1建立的數(shù)據(jù)庫(kù)引擎查詢中,選中學(xué)生數(shù)據(jù)庫(kù),執(zhí)行下述語(yǔ)句,能否成功?為什么?SELECT*FROMCourse在系統(tǒng)管理員的數(shù)據(jù)庫(kù)引擎查詢中,執(zhí)行合適的授權(quán)語(yǔ)句,授予log1具有對(duì)Course表的查詢權(quán)限,授予log2具有對(duì)Course表的插入權(quán)限。用log2建立一個(gè)新的數(shù)據(jù)庫(kù)引擎查詢,執(zhí)行下述語(yǔ)句,能否成功?為什么?INSERTINTOCourseVALUES('C1001','數(shù)據(jù)庫(kù)基礎(chǔ)',4,5)再執(zhí)行下述語(yǔ)句,能否成功?為什么?SELECT*FROMCourse在log1建立的數(shù)據(jù)庫(kù)引擎查詢中,再次執(zhí)行下述語(yǔ)句:SELECT*FROMCourse這次能否成功?但如果執(zhí)行下述語(yǔ)句:INSERTINTOCourseVALUES('C103','軟件工程',4,5)能否成功?為什么?log3建立一個(gè)新的數(shù)據(jù)庫(kù)引擎查詢,執(zhí)行下述語(yǔ)句,能否成功?為什么? CREATETABLENewTable(C1int,C2char(4))授予log3在學(xué)生數(shù)據(jù)庫(kù)中具有創(chuàng)建表的權(quán)限。在系統(tǒng)管理員的數(shù)據(jù)庫(kù)引擎查詢中,執(zhí)行下述語(yǔ)句: GRANTCREATETABLETOlog3 GO CREATESCHEMAlog3AUTHORIZATIONlog3 GO ALTERUSERlog3WITHDEFAULT_SCHEMA=log3在log3建立一個(gè)新的數(shù)據(jù)庫(kù)引擎查詢中,再次執(zhí)行第9題的語(yǔ)句,能否成功?為什么? 如果執(zhí)行下述語(yǔ)句: SELECT*NewTable 能否成功?為什么?附錄D全國(guó)主要城市年平均雷暴日數(shù)統(tǒng)計(jì)表地名雷暴日數(shù)(d/a)地名雷暴日數(shù)(d/a)地名雷暴日數(shù)(d/a)1、北京市36.3吉林市40.514

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論