附錄C數(shù)據(jù)庫上機實驗_第1頁
附錄C數(shù)據(jù)庫上機實驗_第2頁
附錄C數(shù)據(jù)庫上機實驗_第3頁
免費預覽已結束,剩余12頁可下載查看

下載本文檔

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

文檔簡介

1、附錄C上機實驗C.1第4章上機實驗 陳宇超,僅供參考下列實驗均使用 SQL Server的SSMST具實現(xiàn)。1. 用圖形化方法創(chuàng)建符合如下條件的數(shù)據(jù)庫(創(chuàng)建數(shù)據(jù)庫的方法可參見本書附錄A):數(shù)據(jù)庫名為:學生數(shù)據(jù)庫主要數(shù)據(jù)文件的邏輯文件名為:Students_data ,存放在D:Data文件夾下(若 D:盤中無此文件夾,請先建立此文件夾,然后再創(chuàng)建數(shù)據(jù)庫。),初始大小為:5MB增長方式為自動增長,每次增加 1MB日志文件的邏輯文件名字為:Studentsog ,也存放在D:Data文件夾下,初始大小為:2MB增長方式為自動增長,每次增加10%2選用已建立的“學生數(shù)據(jù)庫”,寫出創(chuàng)建滿足表C-1到4

2、-4條件的表的SQL語句,并執(zhí)行所寫代碼。(注:“說明”部分不作為表定義內(nèi)容)表C-1 Student 表結構列名說明數(shù)據(jù)類型約束Sno學號普通編碼定長字符串,長度為7主鍵Sname姓名普通編碼定長字符串,長度為10非空Ssex性別普通編碼定長字符串,長度為2取值范圍:男,女Sage年齡微整型(tinyint )取值范圍:15-45Sdept所在系普通編碼不定長字符串,長度為20默認值為“計算機系”Sid身份證號普通編碼定長字符串,長度為10取值不重Sdate入學日期日期默認為系統(tǒng)當前日期表C-2 Course表結構列名說明數(shù)據(jù)類型約束Cno課程號普通編碼定長字符串,長度為10主鍵Cname課

3、程名普通編碼不定長字符串,長度為20非空Credit學時數(shù)整型取值大于0Semester學分小整型表C-3 SC表結構列名說明數(shù)據(jù)類型約束Sno學號普通編碼定長字符串,長度為7主鍵,引用Student的外鍵Cno課程號普通編碼定長字符串,長度為10主鍵,引用 Course的外鍵Grade成績小整型取值范圍為0-100表C-4 Teacher表結構列名說明數(shù)據(jù)類型約束Tno教師號普通編碼定長字符串,長度為8非空Tname教師名普通編碼定長字符串,長度為10非空Salary工資定點小數(shù),小數(shù)點前 4位,小數(shù)點后2位3.寫出實現(xiàn)如下功能的SQL語句,并執(zhí)行所寫代碼,查看執(zhí)行結果。(1) 在Teach

4、er表中添加一個職稱列,列名為:Title ,類型為nchar(4)。ALTERTABLETeacher ADDTitle VARCHA(R)(2) 為Teacher表中的Title列增加取值范圍約束, 取值范圍為:教授,副教授,講師。ALTERTABLETeacher ADDCONSTRAINTitle CHECKTitle IN('教授,' 副教授','講師)(3)將Course表中Credit列的類型改為:tinyint 。注意:這里首先需要先刪除Credit的約束,修改完數(shù)據(jù)類型后再重新添加約束項ALTERTABLECourse DROPCONSTRAI

5、NTCK_Course_Credit_2B3F6F97ALTERTABLECourse ALTERCOLUMCredit TINYINTALTERTABLECourse ADDCONSTRAINCredit CHECK( Credit >0)(4)刪除Student表中的Sid和Sdate列。注意:這里首先需要先刪除約束ALTERTABLEStudent DROPDONSTRAINTUQ_Student_CA1E5D79B3204FCFALTERTABLEStudent DROPCONSTRAINTDF_Student_Sdate_3B75D760ALTERTABLEStudent DR

6、OPCOLUMSdate, Sid(5) 為Teacher表添加主鍵約束,其主鍵為:Tno。ALTERTABLETeacher ADDPRIMARYKEYTno)建立數(shù)據(jù)庫主要文件和日志文件我們可以看到 D盤增加了主要數(shù)據(jù)文件.mdf和日志文件df卜 此電臘 > JAVA (D:l > CitsV Cf站手"D對A <3-I- a2016/11/2 10 48SQLDaUjjJ出SQL Scrwr給students_data 建立表格create table Student (Sno char (7),Sname char (10) not null,Ssex ch

7、ar (2) check ( Ssex='男'or Ssex='女') Sage tinyint check (Sage >14 AND Sage<46),Sdept varchar (20) default'計算機系',Sid char (10) unique ,-身份證號Sdate date default getdate () primary key( S no)create table Course(Cno char (10) primary key,Cnamevarchar (20) not nuII,Credit int

8、check (Credit >0),Semester tinyint ,)create table SC(Sno char (7),Cno char (10),Grade tinyint check( Grade>=0 ANDGrade<=100) foreignkey( Sno) referencesStudent ( Sno),foreignkey( Cno) referencesCourse (Cno)create table Teacher ( Tno char (8) not null, Tname char (10) not null,Salary decimal

9、 (6, 2)C.2第5章上機實驗本實驗均在SQL Server的SSMST具中實現(xiàn)。首先在已創(chuàng)建的“學生數(shù)據(jù)庫”中創(chuàng)建 本章表5-15-3所示的Student、Course和SC表,并插入表5-45-6所示數(shù)據(jù),然后編寫 實現(xiàn)如下操作的SQL語句,執(zhí)行所寫的語句,并查看執(zhí)行結果。有關建表及所需要的數(shù)據(jù),見本章末尾1.查詢SC表中的全部數(shù)據(jù)。SELECT* FROMSC2. 查詢計算機系學生的姓名和年齡。SELECTS name Sage FROMBtude nt WHERSdept='計算機系3. 查詢成績在7080分的學生的學號、課程號和成績。SELECTSnQ Cnq Grade

10、 FROMSC WHERGrade between 70 AND804. 查詢計算機系年齡在 1820歲的男生姓名和年齡。SELECTSnameSage FROMStudent WHERSdept='計算機系ANDSage BETWEE18 AND20 ANDSsex='男'5. 查詢C001課程的最高分。SELECTMAXgrade) AS 最高成績 FROMSCWHERCno='C001'6. 查詢計算機系學生的最大年齡和最小年齡。SELECTMAXSag© AS 年長,MINSag© AS 年幼 FROMStudent WHER

11、E Sdept='計算機系7. 統(tǒng)計每個系的學生人數(shù)。SELECTSdept, COUNTSnc) AS 人數(shù) FROMStudent GROUFBY Sdept8. 統(tǒng)計每門課程的選課人數(shù)和最高成績。SELECTC nq COUNTS no) AS 人數(shù),MAGrade) AS 最高成績 FROMSCGROUP BYC no9. 統(tǒng)計每個學生的選課門數(shù)和考試總成績,并按選課門數(shù)升序顯示結果。SELECTSnqCOUNJCno) AS 選課數(shù)量,SUMGrade) AS 考試總成績 FROMSC GROUfBYS no10. 列出總成績超過200的學生的學號和總成績。SELECTSnQ

12、 SUMGrade) AS 考試總成績 FROMSC GROUPS Sno HAVING SUMGrade)20011. 查詢選了 C002課程的學生姓名和所在系。SELECTSnameSdept FROMStudent st, SC sc WHERISt . Sno=sc. Sno ANDCn o='C002'或者SELECT Sn ameSdept FROMStude nt WHERE no I N( SELECTS no FROMSCWHERCno='C002')或者SELECTSnameSdept FROMStudent WHEREXISTS (SELE

13、CT* FROMSCWHERSno = Student. Sno ANDCno = 'C002')12. 查詢考試成績80分以上的學生姓名、課程號和成績,并按成績降序排列結果。SELECTSnameCno Grade FROMStudent , SCWHERStudent . Snc=SC Sno AND Grade>80 ORDERLY Grade DESC13. 查詢與VB在同一學期開設的課程的課程名和開課學期。SELECTc2. Cnamec2. Semester FROMCourse c1, Course c2WHERE1.Cnam=c2. CnameANDc1.

14、 Cname'VB' ANDc2. Cnamfe='VB'14. 查詢與李勇年齡相同的學生的姓名、所在系和年齡。SELECTS. Snames2. Sdept, s2. Sage FROMStudent s1, Student s2 WHERE1. Sage=s2. Sage ANDs1. Snam='李勇ANDs2. Sname='李勇 或者SELECTSnameSdept, Sage FROMStudent WHERISage=( SELECTSage FROM Student WHEREnam='李勇')ANDSname=&

15、#39;李勇'15. 查詢哪些課程沒有學生選修,列出課程號和課程名。SELECTCourse. Cnq Course. CnameFROMDourse LEFT JOIN SC onSCCno=Course. Cno WHERSCCno IS NULL16. 查詢每個學生的選課情況,包括未選課的學生,列出學生的學號、姓名、選的課程號。SELECTStudent . SnQ Student . SnameCno FROMStudent LEFT JOIN SC ON SC Sno=Student. Sno17. 查詢計算機系哪些學生沒有選課,列出學生姓名。SELECTSnameFRONS

16、tudent WHERSdept='計算機系ANDSnoNOTN( SELECT Sno FROMSC或者SELECTSnameFROMStudent S LEFT JOIN SC ONS. Sno = SC SnoWHERSdept ='計算機系'ANDSCCno IS NULL18. 查詢計算機系年齡最大的三個學生的姓名和年齡。SELECTTop3 SnameSage FROMStudent WHERSdept='計算機系ORDEBY Sage DESC19. 列出“VB'課程考試成績前三名的學生的學號、姓名、所在系和VB成績。SELECTTOP3

17、WITHTIES Sname Sdept, Grade FROMStudent S JOIN SCon S Sno = SC Sno JOIN Course C ONC Cno = SC Cno WHERCname= 'VB' ORDERLY Grade DESC20. 查詢選課門數(shù)最多的前 2位學生,列出學號和選課門數(shù)。"SELECTtop 2 Snq COUNCnQ AS 選課數(shù) FROMSCGROUBY Sno ORDEfBY COUNT:n。DESC21. 查詢計算機系學生姓名、年齡和年齡情況,其中年齡情況為:如果年齡小于18,則顯示“偏小”;如果年齡在18-

18、22,則顯示“合適”;如果年齡大于22,則顯示“偏大”。VSELECTSno, Sage,CASEWHENSage<18 THEN' 偏小 'WHENSage>=18 ANDSage<=22 THEN' 適合 'WHENSage>22 THEN' 偏大 'ENDAS 年齡情況 FROMStudent22. 統(tǒng)計每門課程的選課人數(shù), 包括有人選的課程和沒有人選的課程, 列出課程號, 選課人 數(shù)及選課情況, 其中選課情況為: 如果此門課程的選課人數(shù)超過 100人,則顯示“人多”; 如果此門課程的選課人數(shù)在 40100,則顯示“

19、一般”;如果此門課程的選課人數(shù)在 1 40,則顯示“人少” ;如果此門課程沒有人選,則顯示“無人選” 。 V SELECTCourse. Cno, COUN(TSno) AS 選課人數(shù),CASEWHENCOUN(TSno)> 100 THEN' 人多'WHENCOUN(TSno)< 40 ANDCOUN(TSno)> 0 THEN' 人少'WHENCOUN(TSno)<=100 ANDCOUN(TSno)>=40 THEN' 一般 ' WHENCOUN(TSno)= 0 THEN' 無人選'endAS

20、 人數(shù)情況 FROMSCRIGHTJOIN Course ONCourse. Cno=SC. Cno GROUPBY Course. Cno23. 查詢計算機系選了 VB 課程的學生姓名、所在系和考試成績,并將結果保存到新表VB_Grade 中。V? 局部臨時表: #新表名。局部于當前連接,生命期同連接期。? 全局臨時表: # 新表名??稍谒羞B接中使用,生命期同用戶連接期? 永久表: 新表名,存儲在磁盤上? 格式:SELECT選擇列表INTO新表名FROM子句SELECTSname, Sdept, Grade INTO VB_Grade FROMStudent , SC, Course WH

21、EREStudent . Sno=SC. Sno ANDCourse. Cno=SC. Cno ANDCname='VB'24. 統(tǒng)計每個系的女生人數(shù),并將結果保存到新表Girls中。VSELECTSdept, Ssex, COUN(TSsex) AS 人數(shù) Into Girls FROMStudent WHERE Ssex=' 女' GROUPBY Sdept, Ssex25. 用子查詢實現(xiàn)如下查詢:(1) 查詢選了“ C001 ”課程的學生姓名和所在系。VSELECTSname, Sdept FROMStudent WHERESno IN( SELECTSn

22、o FROMSC WHERECno='C001' )(2) 查詢通信工程系成績 80分以上的學生的學號和姓名。VSELECTSno, SnameFROMStudent WHERESdept=' 通信工程系 ' ANDSno IN ( SELECTSno FROMSC WHEREGrade>80)(3 )查詢計算機系考試成績最高的學生的姓名。VSELECTSnameFROMStudent , SC WHERSC Sno=Student. Sno ANDSdept='計算機系'ANDGrade in(SELECTMAXGrade) FROMSC

23、, Student WHERE5C Sno=Student. Sno AND Sdept='計算機系)(4)查詢年齡最大的男生的姓名、所在系和年齡。"SELECTSnameSdept, Sage FROMStudent WHERSsex='男'ANDSage in (SELECTMAXSage) FROMStudent WHERE>sex='男')26. 查詢C001課程的考試成績高于該課程平均成績的學生的學號和成績。SELECTSnQ Grade FROMSC WHERCno 二C001'ANDGrade > ( SELE

24、CTAVGGrade) FROMSC WHERCno 二C001')27. 查詢計算機系學生考試成績高于計算機系學生平均成績的學生的姓名、考試的課程名和考試成績。SELECTSnameSdept, CnameGrade FROMStudent , SC Course WHERE Student. Sno=SC Sno ANDCourse. Cno=SC Cno ANDSdept='計算機系 ANDGrade>( SELECTAV(?Grade) FROMSC, Course, Student WHERE SC Cno=Course. Cno ANDStudent. Sno

25、=SC Sno ANDSdept='計算機系)28. 查詢VB課程考試成績高于 VB平均成績的學生姓名和 VB成績。SELECTSnameGrade FROMStudent, SC Course WHERStudent. Sno =SC Sno ANDCourse. Cno=SC Cno ANDCname'VB' ANDGrade> (SELECTAVGGrade) FROMSC; Course WHERCourse. Cno=SCCno AND Cname'VB')29. 查詢沒選VB的學生姓名和所在系。SELECTS nameSdept FRO

26、MStude nt WHERE no NOTIN (SELECTS no FROM SC Course WHERSC Cno=Course. Cno ANDCname'VB') 或者SELECTSnameSdept FROMStudent WHEREJOTEXISTS (SELECT* FROM SC; Course WHERCourse. Cno=SC Cno ANDSno=Student. Sno AND Cname'VB')30. 查詢每個學期學分最高的課程信息,列出開課學期、課程名和學分。SELECTSnameSemester, Credit FROMC

27、ourse cl WHEREJOTEXISTS (SELECT* FROMCourse c2 WHERIC1. Semester=c2. Semester AND c1. Credit <c2. Credit )31. 查詢每門課程考試成績最高的學生信息,列出課程號、學生姓名和最高成績,結果按課程號升序排序,不包括沒考試的課程。SELECTC names name SC Cno GradeFROMstudent join sc on student . sno二sc. sno join course on course . cno =sc. cnoWHERErade=(SELECTmaX

28、 grade)FROMScWHEREno=course . cno ) order BY SC Cno ASc 或者SELECScl. sno, SnameCno. Grade FROMSCscl, student WHEREot exists (SELECT* FROMSCsc2 WHEREc1. Cno=sc2. CnoANDsc1. Grade<sc2. Grade) ANDGrade IS NOTNULLANDStudent. Sno=sc1. Sno order BY Cno ASC32. 查詢選了全部課程的學生姓名SELECTSnameFROMStudent WHERSno

29、in(SELECTSno FROMBC GROUFBY Sno having COUNT)=(SELECTCOUNT) FROMCourse) 或者SELECTS nameFROMbtude ntWHERNOTexists( SELECT* FROMcourseWHEREJOT exists( SELECT* FROMSCWHERSno=student . sno ANDcno=Course. Cnc)33.創(chuàng)建一個新表,表名為 test ,其結構為(COL1, COL 2, COL 3 ),其中, COL1:整型,允許空值。COL2普通編碼定長字符型,長度為10,不允許空值。COL3普通編碼

30、定長字符型,長度為10,允許空值。試寫出按行插入如下數(shù)據(jù)的語句(空白處表示是空值)。COL1COL2COL3B11B2C22B3create table test (C0L1 int ,C0L2 char( 10) not null,C0L3 char(10)in sertintotest (C0L2 values ('B1')in sertintotestvalues (1, 'B2' , 'C2')in sertintotest(C0L1 C0L? values (2, 'B3')34. 利用23題建立的VB_Grade表,將

31、信息管理系選了 VB課程的學生姓名、所在系和考試 成績插入到 VB_Grade表中。INSERTINTOVBGradeSELECEnameSdept, Grade FROMStudent, SC Course WHERStudent. Sno=SC Sno ANDSC Cno=Course. Cno ANDSdept='信息管理系ANDCname'VB'35. 將所有選修C001課程的學生的成績加 10分。UPDATE5C SETGrade=Grade+10 WHEREno='C001'36. 將計算機系所有學生的“計算機文化學”的考試成績加 10分。U

32、PDATESCSETGrade=Grade+10 WHERESno in (SELECTSC Sno FROMStudent, SC Course WHERStudent. Sno=SC Sno ANDSC Cno=Course. Cno ANDSdept='計算機系'ANDCname'計算機文化學')37. 修改“VB'課程的考試成績,如果是通信工程系的學生,則增加10分;如果是信息管理系的學生則增加 5分,其他系的學生不加分。UPDATE5C SET Grade=Grade+CASESdeptWHEN通信工程系'THEN10WHEN信息管理系

33、'THEN5else 0endFROMStudent, SC CourseWHERSC Sno=Student . Sno ANDCourse. Cno=SC Cno ANDCnam='VB'38. 刪除成績小于50分的學生的選課記錄。DELETEFROMSC WHERGrade <5039. 刪除計算機系 VB考試成績不及格學生的 VB選課記錄。DELETEFROMSCFROMSC Student, Course WHERSC Sno=Student . Sno ANDSC Cno=Course. Cno ANDSdept='計算機系AND Cname&

34、#39;VB' ANDGrade<6040. 刪除“ VB'考試成績最低的學生的 VB修課記錄。DELETEFROMSC FROMSC CourseWHERSC Cno=Course. Cno ANDCnam='VB'ANDGrade=(SELECTMINGrade) FROMSC, Course WHERBCCno=Course. CnoANDCname'VB')41. 刪除沒人選的課程的基本信息。DELETEFROMCourse FROMCourse left join SC on Course. Cno=SC Cno WHERBCCn

35、o IS NULL本章有關建表和插入表格中的數(shù)據(jù)CREATETABLEStude nt(SnoCHAR7)PRIMARY YSn ameNCHAR5)NOTNULL,SsexNCHAR1),SageTINYINT,Sdept NVARCHA20)CREATETABLECourse (CnoCHAR6),Cn ameNVARCHARD)NOTNULL,CreditTINYINT,Semester TINYINT,PRIMAR*EYC nO)CREATETABLESC (SnoCHAR7) NOTNULL,CnoCHAR6) NOTNULL,Grade TINYINT,PRIMAR*EY (Sno

36、 CnQ,FOREIGhKEY (Snc) REFERENCEStudent (Snc), FOREIGhKEY (CnQ REFERENCESourse (CnQin sertintostude ntin sertintostude ntin sertintostude ntin sertintostude ntin sertintostude ntin sertintostude ntin sertintostude ntin sertintostude ntin sertintostude ntin sertintostude ntin sertintocoursein sertinto

37、coursein sertintocoursein sertintocoursein sertintocoursein sertintocoursein sertintocoursein sertintocoursein sertinto scvalues ('0811101','李勇','男',21,'計算機系') values ('0811102','劉晨','男',20,'計算機系') values ('0811103','王敏'

38、,'女',20,'計算機系') values ('0811104','張小紅','女',19,'計算機系') values ('0821101','張立','男',20,'信息管理系') values ('0821102','吳賓','女' ,19,'信息管理系') values ('0821103','張海','男',20,

39、'信息管理系') values ('0831101','錢小平','女',21,'通信工程系 values ('0831102','王大力','男',20,'通信工程系 values ('0831103','張姍姍','女',19,'通信工程系values ('C001','高等數(shù)學',4,1) values ('C002','大學英語',3,1)

40、values ('C003','大學英語',3, 2) values ('C004','計算機文化學',2, 2) values ('C005' , 'VB' ,2, 3)values ('C006','數(shù)據(jù)庫基礎',4, 5) values ('C007','數(shù)據(jù)結構',4, 4) values ('C008','計算機網(wǎng)絡',4, 4)in sertinto scin sertinto scin se

41、rtinto scin sertinto scin sertinto scin sertinto scvalues ('0811101' ,'C001' , 96) values ('0811101' , 'C002' , 80) values ('0811101' , 'C003' , 84) values ('0811101' , 'C005' , 62) values ('0811102' ,'C001' , 92) values

42、 ('0811102' , 'C002' , 90) values ('0811102' ,'C004' , 84)in sertintoscin sertintoscin sertintoscin sertintoscin sertintoscin sertintoscin sertintoscin sertintoscin sertintoscin sertintoscin sertintoscin sertintoscvalues ('0821102' values ('0821102' va

43、lues ('0821102' values ('0821102' values ('0821103' values ('0821103' values ('0831101' values ('0831101' values ('0831102' values ('0831103' values ('0831103' values ('0831103','C001' , 76),'C004' , 85),

44、'C005' , 73),'C007' ,NULL),'C001' , 50),'C004' , 80),'C001' , 50),'C004' , 80),'C007' ,NULL),'C004' , 78),'C005' , 65),'C007' ,NULL)C.3第6章上機實驗下列實驗均使用 SQL Server的SSMS工具實現(xiàn)。禾U用第 4章上機實驗創(chuàng)建的“學生數(shù) 據(jù)庫”中Student、Course和SC表,完成下列實驗。1

45、. 寫出實現(xiàn)下列操作的 SQL語句,并執(zhí)行所寫代碼。(1 )在Student表上為Sname列建立一個聚集索引,索引名為:IdxSno。(提示:若執(zhí)行創(chuàng)建索引的代碼,請先刪除該表的主鍵約束)一個表只能有一個聚集索引,可以有多個非聚集索引(聚集索引對數(shù)據(jù)按索引關鍵字值進行物理排序,數(shù)據(jù)行本身只能按一個順序存儲)Student本身創(chuàng)建主鍵(Sno)的同時會默認創(chuàng)建唯一聚集索引,且Sno為SC表的外鍵,所以,首先要刪除SC表的外鍵約束,再刪除Student表的主鍵約束-che ny uchaoALTERTABLESC DROPCONSTRAINTK_SC_Sno_31EC6D26ALTERTABLE

46、STUDENDROR)ONSTRAINffK_Stude nt_CA1FE464CD8CBE4FCREATEDLUSTEREDNDEX idxSno ON Student (Sname(2) 在Course表上為Cname列建立一個唯一的非聚集索弓I,索引名為:IdxCN CREATEJNIQUENONCLUSTERBNDEXidxCN ONCourse( Cnam(如果是在表中數(shù)據(jù)都插入完成后建立索引,此處會報錯,因為Cnam中有兩個不同學期的大學英語課程,就不唯一了,請注意 )(3) 在SC表上為Sno和Cno建立一個組合的聚集索引,索引名為:IdxSnoCno。(提示: 若執(zhí)行創(chuàng)建索引的

47、代碼,請先刪除該表的主鍵約束)同樣需要刪除主鍵約束ALTERTABLESC DROPCONSTRAINPK_SC_E6000253A86AC951 CREATEDLUSTEREDNDEX idxSnoCno ONSCSno CnQ(4)刪除Sname列上建立的IdxSno索弓I。DROPINDEXStudent . idxSno2. 寫出創(chuàng)建滿足下述要求的視圖的SQL語句,并執(zhí)行所寫代碼。(1)查詢學生的學號、姓名、所在系、課程號、課程名、課程學分。CREATEVIEWv1 ASSELECTStudent . Sno, Sname, Sdept, SC. Cno, Cnam,eCreditFR

48、OMstudent ,SC, Course WHEREStudent . Sno=SC. Sno AND Course. Cno=SC. CnoGO(2)查詢學生的學號、姓名、選修的課程名和考試成績。CREATEVIEWv2 ASSELECTStudent . Sno, Sname, Cnam,eGrade FROMStudent , SC, Course WHEREStudent . Sno=SC. Sno ANDCourse. Cno=SC. Cno GO(3)統(tǒng)計每個學生的選課門數(shù),要求列出學生學號和選課門數(shù)。CREATEVIEWv3ASSELECTSno, COUN(TCno) Cou

49、rsenum FROMSC GROUPBY SnoGO(4)統(tǒng)計每個學生的修課總學分,要求列出學生學號和總學分(說明:考試成績大于等 于 60 才可獲得此門課程的學分) 。CREATEVIEWv4ASSELECTSno , SUM( Credit ) CreditsumFROMSC, Course WHERESC. Cno=Course. Cno ANDGrade>=60 GROUPBY Sno GO3. 利用第 2 題建立的視圖,完成如下查詢。(1)查詢考試成績大于等于 90 分的學生的姓名、課程名和成績。SELECTSname, Cnam,eGrade FROMv2 WHEREGra

50、de>=90(2)查詢選課門數(shù)超過 3 門的學生的學號和選課門數(shù)。SELECTSname, Cnam,eGrade FROMv2 WHEREGrade>=90(3)查詢計算機系選課門數(shù)超過 3 門的學生的姓名和選課門數(shù)。SELECTSname, CnumFROMStudent , v3 WHEREv3. Sno=Student .Sno AND Sdept=' 計算機系 ' ANDCoursenum>3(4)查詢修課總學分超過 10 分的學生的學號、姓名、所在系和修課總學分。SELECTStudent .Sno, Sname, Sdept, Creditsum

51、 FROMStudent ,v4 WHEREv4. Sno=Student . Sno ANDCreditsum >10(5)查詢年齡大于等于 20歲的學生中,修課總學分超過 10 分的學生的姓名、年齡、所 在系和修課總學分。SELECTSnameSage Sdept, Creditsum FROMStudent , v4WHERE4. Sno=Student. Sno ANDCreditsum >10 ANDSage>=204. 修改第3題(4)定義的視圖,使其查詢每個學生的學號、總學分以及總的選課門數(shù)。ALTERVIEWv4 ASSELECTS no SUMCredit

52、) Creditsum , COUNTSC C nc) Course num FROMSC Course WHERSC Cno=Course. Cno GROUPBY SnoC.4第7章上機實驗禾U用第5章建立的學生數(shù)據(jù)庫以及Student、Coures和SC表,完成下列操作。1. 創(chuàng)建滿足如下要求的后觸發(fā)型觸發(fā)器說明:對于insert into 表名values()單行插入語句,觸發(fā)器每次都會被觸發(fā)對于insert into 表名selec FROM 表名 或者是insert into 表名values (),(),().多行插入語句,觸發(fā)器只會觸發(fā)一次,所有的插入數(shù)據(jù)都會一并備份到in s

53、erted表中,然后執(zhí)行觸發(fā)篩選-chen yuchao(1) 限制學生的考試成績必須在0-100之間。CREATETRIGGERtril ONSC after insertASif exists( SELECTGrade FROMnserted WHERGrade not between 0 AND100)rollbackgo(2) 限制不能刪除成績不及格的考試記錄。CREATETRIGGEFtri2 ON SC AFTERDELETEASif exists( SELECT* FROMdeleted WHERGrade<60)rollbackgo(3) 限制每個學期開設的課程總學分不能

54、超過20。CREATETRIGGERtri3 ON Course AFTERINSERTASif exists( SELECTSUMCredit ) FROMCourseGROUPBY Semester having SUMCredit )>20)rollbackgo(4) 限制每個學生每學期選的課程不能超過5門。CREATETRIGGERtri4 ONSC AFTERINSERTASif exists( SELECTCOUN(TSC. Cno) FROMSC, CourseWHERESC. Cno=Course. Cno GROUPBY Semester, Sno havingCOUN(TSC. Cno)>5 )ROLLBACK go2. 創(chuàng)建滿足如下要求的存儲過程。( 1)查詢每個學生的修課總學分,要求列出學生學號及總學分。CREATEPROCp1ASSELECTStudent . Sno, SUM( Credit ) CreditSum FROMStudent , SC, Course WHEREStudent . Sno=SC. Sno ANDSC. Cno=Course. Cno GROUPBY Student . Sno 執(zhí)行: exec p1(2) 查詢學生的學

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論