仅供个人参考不得用于商业用途薅数据库大作业薀11.针对习题10的四个表,用SQL语言完成以下各项操作:羀(1)给学生表增加一属性Nation(民族),数据类型为Varchar(20);蚅ALTERTABLEdbo.Student蚅ADDNationVarChar(20);羁SElECT*蒈FROMdbo.Student;蚈(2)删除学生表中新增的属性Nation;螅ALTERTABLEdbo.Student莂DROPCOLUMNNation;腿SElECT*蒇FROMdbo.Student;袅(3)向成绩表中插入记录(“2001110”,“3”,80);螂INSERTINTOdbo.Grade薇VALUES('2001110','3',80);膅SElECT*羅FROMdbo.Grade;罿(4)将学号为“2001110”的学生的成绩修改为70分;仅供个人参考不得用于商业用途荿UPDATEdbo.Grade羄SETGmark=70肅WHERESno='2001110';莀SElECT*螇FROMdbo.Grade;羇(5)删除学号为“2001110”的学生的成绩记录;肅DELETEFROMdbo.Grade螁WHERESno='2001110';葿SElECT*螆FROMdbo.Grade;膄(6)在学生表的Clno属性上创建一个名为IX_Class的索引,以班级号的升序排序;膂CREATEINDEXIX_CLASS羇ONdbo.Student(Clno);薅SELECT*芄FROMdbo.Student;薃(7)删除IX_Class索引。虿DROPINDEXStudent.IX_CLASS;薈SELECT*莄FROMdbo.Student;蚀12.针对习题10的四个表,用SQL语言完成以下各项查询:莁(1)找出所有被学生选修了的课程号;仅供个人参考不得用于商业用途莇SELECTDISTINCTCno蒄FROMGrade,Student肁WHEREGrade.Sno=Student.Sno;袈(2)找出01311班女学生的个人信息;肆SELECT*薄FROMStudent蒁WHERESsex='女'ANDClno='01311';薀(3)找出0311班和01312班的学生姓名、性别、出生年份;袄SELECTSname,Ssex,(2014-Sage)AS'出生年份'蚄FROMStudent袂WHEREClnoIN('01311','01312');羈(4)找出所有姓李的学生的个人信息;羇SELECT*蚄FROMStudent罿WHERESnameLIKE'李%';螀(5)找出学生李勇所在班级的学生人数;蚆SELECTCOUNT(*)AS'李勇班级人数'螄FROMStudent莀WHEREClnoIN(膈SELECTClno蒅FROMStudent袃WHERESname='李勇');仅供个人参考不得用于商业用途螁(6)找出课程名为操作系统的平均成绩、最高分、最低分;袀SELECTMAX(Gmark)AS'最高分'蒈,MIN(Gmark)AS'最低分'羃,AVG(Gmark)AS'平均成绩'节FROMGradeg,Coursec莈WHEREg.CnoIN(SELECTc.Cno芇FROMCourse肃WHEREc.Cname='操作系统');蚃(7)找出选修了课程的学生人数;肀SELECTCOUNT(DISTINCTSno)AS'选修了课程的学生人数'肆FROMGrade;膃(8)找出选修了课程操作系统的学生学号和姓名;螀SELECTS.Sno,S.Sname薇FROMStudentS,GradeG螅WHERES.SnoIN(芃SELECTG.Sno膀FROMGrade艿WHEREG.Cno=(袇SELECTCno芃FROMCourse薁WHERECname='操作系统'));仅供个人参考不得用于商业用途蚇(9)找出2000级计算机软件班的成绩为空的学生姓名。薆SELECTS.Sname莃FROMStudentS羂WHERES.SnoNOTIN(荿SELECTSno莅FROMGrade)ANDS.Clno=(SELECTClno蒂FROMClass莃WHEREInyear='2000'ANDSpeciality='计算机软件');袇13.针对习题10的四个表,用SELECT的嵌套查询完成以下各项查询:莈(1)找出与李勇在同一个班级的学生信息;薂SELECT*蒀FROMStudent蕿WHEREClno=(SELECTClno膇FROMStudent蚂WHERESname='李勇')ANDSnameNOTIN('李勇');袁(2)找出所有与李勇有相同选修课程的学生信息;芁SELECT*羆FROMStudent螂WHERESnoIN(节SELECTSno蝿FROMGrade蚅WHEREGrade.CnoIN(仅供个人参考不得用于商业用途袂SELECTCno蚃FROMGrade蒀WHERESno=(螈SELECTSno袂FROMStudent衿WHERESname='李勇')))ANDSnameNOTIN('李勇');羈(3)找出年龄介于学生李勇与25岁之间的学生信息(已知李勇的年龄小于25岁);蒆SELECT*羂FROMStudent芀WHERESage25ANDSage(SELECTSage蚀FROMStudent芅WHERESname='李勇');莆(4)找出选修了课程操作系统的学生学号与姓名;蚁SELECTSno,Sname肈FROMStudent莈WHERESnoIN(SELECTSno蒆FROMGrade肂WHERECno=(SELECTCno螀FROMCourse肇WHERECname='操作系统'));蒅(5)找出没有选修1号课程的所有学生姓名;仅供个人参考不得用于商业用途蒃SELECTSname芈FROMStudent袆WHERESnoNOTIN(SELECTSno薅FROMGrade薀WHERECno='1');羀(6)找出选修了全部课程的学生姓名。蚅SELECTSname蚅FROMStudent羁WHERENOTEXISTS(SELECT*蒈FROMCourse蚈WHERENOTEXISTS(SELECT*螅FROMGrade莂WHERESno=Student.Sno腿ANDCno=Course.Cno));蒇14.针对习题10的四个表,用SQL语言完成以下各项查询:膅(1)查询选修了3门以上的课程的学生学号及其成绩,并按成绩的降序排列;膃SELECTSno,Gmark羈FROMGrade薆WHERECno=3芅ORDERBYGmarkDESC;芀(2)查询全体学生信息,要求查询结果按班级号升序排列同一班级按年龄降序排列;蚀SELECT*仅供个人参考不得用于商业用途芅FROMStudent莅ORDERBYClno,SageDESC;蚁(3)求每个课程号及相应的选课人数;肇SELECTCno,COUNT(Cno)AS'选修人数'莇FROMGrade蒅GROUPBYCno;肁(4)查询选修了3门以上课程的学生学号。衿SELECTSno,COUNT(Sno)AS'选修课程数'肆FROMGrade薅GROUPBYSnoHAVING(COUNT(Sno)3);蒂15.针对习题10的四个表,用SQL语言完成以下各项操作:芇(1)将01311班的全体学生的成绩置零;袅UPDATEGrade薅SETGmark=0袃WHERESnoIN(SELECTSno罿FROMStudent袈WHEREClno='01311');蚄(2)删除2001级计算机软件的全体学生的选课记录;羀DELETEFROMGrade蚁WHERESnoIN(SELECTSno蚇FROMStudent螄WHEREClno=(SELECTClno仅供个人参考不得用于商业用途莁FROMClass腿WHEREInyear='2001'ANDSpeciality='计算机软件'));蒆(3)学生李勇已退学,从数据库中删除有关他的记录;袄UPDATEClass螂SETMonitor=NULL袁WHEREClno=(SELECTClno膅FROMStudent羄WHERESname='李勇')膃DELETEFROMGrade荿WHERESno=(SELECTSno芈FROMStudent肄WHERESname='李勇')莀DELETEFROMStudent肀WHERESname='李勇';羆(4)对每个班,求学生的平均年龄,并把结果存入数据库。膄CREATEVIEWV_Sag螀AS蒈SELECTClno,AVG(Sage)AS'Sag'螅FROMStudent膄GROUPBYClno;膁16.视图操作:芀(1)建立01311班选修了1号课程的学生视图Stu_01311_1;仅供个人参考不得用于商业用途袈CREATEVIEWStu_01311_1芄ASSELECT*薂FROMStudent蚈WHERESnoIN(SELECTSno薇FROMGrade莃WHERECno=1)ANDClno='01311';羃(2)建立01311班选修了1号课程并且不及格的学生视图Stu_01311_2;莀CREATEVIEWStu_01311_2莆ASSELECT*蒃FROMStudent肀WHERESnoIN(SELECTSno袈FROMGrade膅WHERECno=1ANDGmark60)ANDClno='01311';薃(3)建立视图Stu_year,由学生学号、姓名、出生年份组成;蒁CREATEVIEWStu_year薀ASSELECTSnoAS'学号',SnameAS'姓名',(2014-Sage)AS'出生年份'膈FROMStudent;蚃(4)查询1990年以后出生的学生姓名;袂SELECTSname肇FROMdbo.Stu_year羇WHERE'出生年份''1990';螃(5)查询01311班选修了1号课程并且成绩不及格的学生的学号、姓名、出生年份。仅供个人参考不得用于商业用途芃SELECT*蝿FROMStu_year蚅WHERESnoIN(SELECTSno螃FROMStu_01311_2);第四章第五章蚃触发器膇11.对于成绩管理数据库,为成绩管理数据库中的Student表创建一触发器:当向表中插入或删除记录时,修改Class表中相应的班级人数螈CREATETRIGGERfri_stu袃ONStudent袀AFTERINSERT,DELETE衿AS蒇IFUPDATE(Sno)羃UPDATEClass芁SETNumber=Number+1蚁WHEREClno=(SELECTClno芆FROMINSERTED)肂ELSE蚂UPDATEClass聿SETNumber=Number-1肅WHEREClno=(SELECTClno膂FROMDELETED);第六章第七章肃存储过程仅供个人参考不得用于商业用途螁10.创建一存储过程:根据学生学号查询该学生所有选修课成绩,学号作为输入参数肈CREATEPROCEDUREproc_Stu节@stu_Snochar(7)膀AS艿SELECTGmark,Cno袇FROMGrade莂WHERESno=@Stu_Sno;仅供个人参考不得用于商业用途仅供个人用于学习、研究;不得用于商业用途。Forpersonaluseonlyinstudyandresearch;notforcommercialuse.NurfürdenpersönlichenfürStudien,Forschung,zukommerziellenZweckenverwendetwerden.Pourl'étudeetlarechercheuniquementàdesfinspersonnelles;pasàdesfinscommerciales.толькодлялюдей,которыеиспользуютсядляобучения,исследовани