您好,欢迎访问三七文档
数据库实验内容环境选择:WINDOWSXPSP2+SQLSERVER2005实验一:安装SQLSERVER2005EXPRESS+SQLServerManagementStudioExpress实验二:实验三:使用SQL语句实现视图的更新,例如:UPDATEC_P_NSETpna='人民日报-1'wherepna='人民日报'将“人民日报”修改成“人民日报-1”实验四SELECT查询操作1、基于“教学管理”数据库jxgl,试用SQL的查询语句表达下列查询:(1)检索年龄大于23岁的男学生的学号和姓名。SELECTSno,SnameFROMStudentWHERE(Sage23)AND(Ssex='男')(2)检索至少选修一门课程的女学生姓名。selecta.Snamefromstudentasa,scasbwherea.Ssex='女'anda.Sno=b.Snogroupbya.Snamehavingcount(b.Cno)=1(3)检索王同学不学的课程的课程号。selectCnofromSCwhereSnoin(selectSnofromstudentwhereSnamelike'王%')(4)检索至少选修两门课程的学生学号。selectSnofromscgroupbySnohavingcount(*)=2(5)检索全部学生都选修的课程的课程号与课程名。selectCno,CnamefromCoursewhereCnoin(selectCnofromscgroupbyCno)(6)检索选修了所有3学分课程的学生学号。selectSnofromscwhereCnoin(selectCnofromCoursewhereCcredit=3)2、基于“教学管理”数据库jxgl,试用SQL的查询语句表达下列查询:(1)统计有学生选修的课程门数。SELECTCOUNT(DISTINCTCno)FROMSC(2)求选修4号课程的学生的平均年龄。SELECTAVG(a.Sage)fromStudentasa,Scasbwherea.Sno=b.Snoandb.Cno=4(3)求学分为3的每门课程的学生平均成绩。SELECTAVG(a.Grade)fromScasa,Courseasbwherea.Cno=b.Cnoandb.Ccredit=3(4)统计每门课程的学生选修人数,超过3人的课程才统计。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。SELECTCno,Count(*)as选修人数fromscgroupbycnohavingcount(*)3orderby选修人数DESC,cnoASC(5)检索学号比王非同学大,而年龄比他小的学生姓名。SELECTSnamefromstudentwhereSno(selectsnofromstudentwhereSname='王非')andSage(selectSagefromstudentwhereSname='王非')(6)检索姓名以王打头的所有学生的姓名和年龄。SELECTSname,Sagefromstudentwheresnamelike'王%'(7)在SC中检索成绩为空值的学生学号和课程号。SELECTSno,CnofromScwhereGradeisNULL(8)求年龄大于女同学平均年龄的男学生姓名和年龄。SELECTSname,SagefromStudentwhereSage(Selectavg(Sage)fromStudentwhereSsex='女')andSsex='男'(9)求年龄大于所有女同学年龄的男学生姓名和年龄。SELECTSname,SagefromStudentwhereSage(SelectMax(Sage)fromStudentwhereSsex='女')andSsex='男'(10)检索所有比“王华”年龄大的学生姓名、年龄和性别。SELECTSname,Sage,SsexfromStudentwhereSage(SelectSagefromStudentwhereSname='王华')(11)检索选修“2”课程的学生中成绩最高的学生的学号。SELECTSnofromscwhereCno=2andGrade=(selectMax(Grade)fromscwhereCno=2)(12)检索学生姓名及其所选修课程的课程号和成绩。SELECTa.Sname,b.Cno,b.Gradefromstudentasa,scasbwherea.Sno=b.Sno(13)检索选修4门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。SELECTSUM(Grade)fromscwhereGrade=60andcnoin(selectcnofromscgroupbycnohavingcount(*)4)orderbySUM(Grade)DESC实验五:更新操作命令实验内容1、学生表Student、课程表Course、选课表SC的表结构等信息同上实验4,请实践以下命令式更新操作:(1)在学生表Student和学生选课表SC中分别添加如下两表中的记录。INSERTINTOStudentVALUES('98010','赵青江',18,'男','CS');INSERTINTOStudentVALUES('98011','张丽萍',19,'女','CH');INSERTINTOStudentVALUES('98012','陈景欢',20,'男','IS');INSERTINTOStudentVALUES('98013','陈婷婷',16,'女','PH');INSERTINTOStudentVALUES('98014','李军',16,'女','EH');INSERTINTOSCVALUES('98010','1',87);INSERTINTOSCVALUES('98010','2',NULL);INSERTINTOSCVALUES('98010','3',80);INSERTINTOSCVALUES('98010','4',87);INSERTINTOSCVALUES('98010','6',85);INSERTINTOSCVALUES('98011','1',52);INSERTINTOSCVALUES('98011','2',47);INSERTINTOSCVALUES('98011','3',53);INSERTINTOSCVALUES('98011','5',45);INSERTINTOSCVALUES('98012','1',84);INSERTINTOSCVALUES('98012','3',NULL);INSERTINTOSCVALUES('98012','4',67);INSERTINTOSCVALUES('98012','5',81);(2)备份Student表到TS中,并清空TS表。SELECT*INTOTSFROMstudentTRUNCATETABLETS(3)给IS系的学生开设7号课程,建立所有相应的选课记录,成绩暂定为60分。INSERTINTOSC(Sno,Cno,Grade)SELECTSno,7,60fromstudentwheresdept='IS'(4)把年龄小于等于16的女生记录保存到表TS中。INSERTINTOTSSELECTSno,Sname,Sage,Ssex,SdeptFROMStudentwhereSsex='女'andSage=16(5)在表Student中检索每门课均不及格的学生学号、姓名、年龄、性别及所在系等信息,并把检索到的信息存入TS表中。InsertintoTSSELECTSno,Sname,Sage,Ssex,SdeptTSfromstudentWhereNOTEXISTS(Select*FromSCWhereStudent.Sno=SC.SnoandGrade=60);(6)将学号为“98011”的学生姓名改为'刘华',年龄增加1岁。UPDATEStudentSETSname='刘华',Sage=Sage+1WhereSno='98011';(7)把选修了“数据库系统”课程而成绩不及格的学生的成绩全改为空值(NULL)。UPDATESCSETGRADE=NULLFROMCourse,SCWHERECname='数据库系统'andGrade60andSC.Cno=Course.Cno;(8)将Student的前4位学生的年龄均增加1岁。UPDATEStudentSETSage=Sage+1FROM(SELECTTOP4*FROMStudentORDERBYSNO)ASAWHEREA.SNO=Student.SNO(9)学生王林在3号课程考试中作弊,该课成绩改为空值(NULL)。UPDATESCSETGRADE=NULLWHERECNO='3'AND'王林'=(SELECTSNAMEFROMSTUDENTWHERESTUDENT.SNO=SC.SNO)(10)把成绩低于总平均成绩的女同学成绩提高5%。UPDATESCSETGRADE=GRADE*1.05WHEREGrade(SELECTAVG(GRADE)FROMSC)andSnoIN(SELECTSNOFROMStudentWHERESsex='女')(11)在基本表SC中修改课程号为“2”号课程的成绩,若成绩小于等于80分时降低2%,若成绩大于80分时降低1%(用两个UPDATE语句实现)。UPDATESCSETGRADE=GRADE*0.98WHERECno='2'ANDGRADE=80;UPDATESCSETGRADE=GRADE*0.99WHERECno='2'ANDGRADE80;(12)利用“SELECTINTO……”命令来备份Student、SC、Course三表,备份表名自定。SELECT*INTOStudent1FROMStudent;SELECT*INTOSC1FROMSC;SELECT*INTOCourse1FROMCourse;(13)在基本表SC中删除尚无成绩的选课元组。DELETEFROMSCWHEREGRADE='NULL'(14)把“钱横”同学的选课情况全部删去。DELETEFROMSCWHERESno=(SELECTSnoFROMStudentWHERESname='钱横')(15)能删除学号为“98005”的学生记录吗?一定要删除该记录的话,该如何操作?给出操作命令。DELETEFROMStudentWHERESNO='98005'(16)删除姓“张”的学生记录。DELETEFROMStudentWHERESNAMELIKE'张%';(17)清空STUDENT与Course两表。TRUNCATETABLESTUDENT;TRUNCATETABLECourse;(18)如何又从备份表中恢复所有的三表。TRUNCATETABLESTUDENT;TRUNCATETABLECourse;TRUNCATETABLESC;SELECT*INTOStudentFROMStudent1;SELECT*INTOCourseFROMCourse1;SELECT*INTOSCFROMSC1;
本文标题:数据库实验内容
链接地址:https://www.777doc.com/doc-4833933 .html