您好,欢迎访问三七文档
计算机科学系实验报告(首页)课程名称数据库系统概论班级网络工程2班实验名称数据库中数据的查询指导教师索剑姓名李文森学号1214080613213日期2014年5月12日一、实验目的学会使用SQL语言进行各种类型的查询,理解各种查询的异同及相互之间的转换。二、实验设备与环境SQLSERVER2000、XP系统三、实验内容、程序清单及运行结果实验内容:练习单表查询、嵌套查询、连接查询及集合查询操作步骤:1)打开实验1建立的数据库2)在查询分析器中完成以下单表查询语句查询全体学生的姓名及其出生年份查询年龄不在20~23岁之间的学生姓名、系别和年龄查询既不是IS、MA,也不是CS系学生的姓名和性别查询所有姓刘的学生的姓名、学号和性别查询选修了3号课程的学生的学号及其成绩,结果按分数的降序排列计算1号课程的学生平均成绩查询选修了3门以上课程的学生学号3)在查询分析器中完成以下连接查询语句查询每个学生及其选修课程的情况(使用自然连接、外连接分别完成)查询每一门课的间接先修课查询选修2号课程且成绩在90分以上的所有学生查询每个学生的学号、姓名、选修的课程名及成绩4)在查询分析器中完成以下嵌套查询语句查询与“刘晨”在同一个系学习的学生(使用嵌套查询、自身连接、比较运算符分别完成)查询选修了课程名为“信息系统”的学生学号和姓名(使用嵌套查询、自然连接分别完成)查询其他系中比信息系某一学生年龄小的学生姓名和年龄(使用ANY谓词、集函数分别完成)查询所有选修了1号课程的学生(使用比较运算符、IN、EXISTS分别完成)查询没有选修1号课程的学生的姓名查询选修全部课程的学生姓名查询至少选修了学生95002选修的全部课程的学生号码5)在查询分析器中完成以下集合查询语句查询计算机科学系的学生及年龄不大于19岁的学生并按学号排序(使用单表查询、集合查询分别完成)查询计算机科学系的学生及年龄不大于19岁的学生的差集6)在企业管理器可视化环境下重新完成2-5步骤的内容程序清单及运行结果第一:查询7)打开实验1建立的数据库8)在查询分析器中完成以下单表查询语句查询全体学生的姓名及其出生年份SELECTSname,2014-SageASyearsFROMStudent;查询选修了课程的学生学号(去掉重复行)SELECTDISTINCTSnoFROMSC;查询年龄不在20~23岁之间的学生姓名、系别和年龄SELECTSname,Sdept,SageFROMStudentwhereSagenotbetween20and23;查询既不是IS、MA,也不是CS系学生的姓名和性别SELECTSname,SdeptFROMStudentWHERESdeptnotin('IS','MA','CS');查询所有姓刘的学生的姓名、学号和性别SELECTSname,Sno,SageFROMStudentWHERESnameLIKE'刘%';查询选修了3号课程的学生的学号及其成绩,结果按分数的降序排列SELECTSno,GradeFROMSCWHERECno='3'ORDERBYGradeDESC;计算1号课程的学生平均成绩SELECTAVG(Grade)FROMSCWHERECno='1';查询选修了3门以上课程的学生学号SELECTSnofromSCGROUPBYSnoHAVINGCOUNT(Cno)3;9)在查询分析器中完成以下连接查询语句查询每个学生及其选修课程的情况(使用自然连接、外连接分别完成)SELECTStudent.*,SC.CnoFROMStudent,SCWHEREStudent.Sno=SC.Sno;SELECTStudent.*,CnoFROMStudentJOINSCON(Student.Sno=SC.Sno);查询每一门课的间接先修课SELECTfirst.Cno,second.CpnofromCoursefirst,CoursesecondWHEREfirst.Cpno=second.Cno;查询选修2号课程且成绩在90分以上的所有学生SELECTSnameFROMStudenta,SCbWHEREa.Sno=b.SnoANDCno='2'ANDGrade90;查询每个学生的学号、姓名、选修的课程名及成绩SELECTa.Sno,Sname,c.Cname,GradeFROMStudenta,SCb,CoursecWHEREa.Sno=b.SnoANDb.Cno=c.Cno;10)在查询分析器中完成以下嵌套查询语句查询与“刘晨”在同一个系学习的学生(使用嵌套查询、自身连接、比较运算符分别完成)1.嵌套查询SELECT*FROMStudentaWHERESdeptIN(SELECTSdeptFROMStudentbWHEREb.Sname='刘晨');2.自身连接SELECTa.*FROMStudenta,StudentbWHEREb.Sname='刘晨'ANDa.Sdept=b.Sdept;3.比较查询SELECT*FROMStudentaWHERESdept=(SELECTSdeptFROMStudentbWHEREb.Sname='刘晨');查询选修了课程名为“信息系统”的学生学号和姓名(使用嵌套查询、自然连接分别完成)1.嵌套查询SELECTSno,SnameFROMStudentWHERESnoIN(SELECTSnoFROMSCWHERECnoIN(SELECTCnoFROMCourseWHERECname='信息系统'));2.自然连接SELECTa.Sno,SnameFROMStudenta,SCb,CoursecWHEREa.Sno=b.SnoANDb.Cno=c.CnoANDCname='信息系统';查询其他系中比信息系某一学生年龄小的学生姓名和年龄(使用ANY谓词、集函数分别完成)1.ANY谓词SELECTSname,SageFROMStudentWHERESageANY(SELECTSageFROMStudentWHERESdept='IS')ANDSdept'IS';2.聚集函数SELECTSname,SageFROMStudentWHERESage(SELECTMAX(Sage)FROMStudentWHERESdept='IS')ANDSdept'IS';查询所有选修了1号课程的学生(使用比较运算符、IN、EXISTS分别完成)1.比较运算符2.INSELECTSnameFROMStudentWHERESnoIN(SELECTSnoFROMSCWHERECno='1');3.EXISTSSELECTSnameFROMStudentWHEREEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno='1');查询没有选修1号课程的学生的姓名查询选修全部课程的学生姓名SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=Course.Cno));查询至少选修了学生95002选修的全部课程的学生号码SELECTDISTINCTSnoFROMSCaWHERENOTEXISTS(SELECT*FROMSCbWHEREb.Sno='95002'ANDNOTEXISTS(SELECT*FROMSCcWHEREc.Sno=a.SnoANDc.Cno=b.Cno));11)在查询分析器中完成以下集合查询语句查询计算机科学系的学生及年龄不大于19岁的学生并按学号排序(使用单表查询、集合查询分别完成)单表查询:SELECT*FROMStudentWHERESdept='CS'ORSage=19ORDERBYSno;集合查询:SELECT*FROMStudentWHERESdept='CS'UNIONSELECT*FROMStudentWHERESage=19ORDERBYSno;查询计算机科学系的学生及年龄不大于19岁的学生的差集SELECT*FROMStudentWHERESdept='CS'ANDSage19;第二:可视化实现结果1.查询全体学生的姓名及其出生年份2.查询选修了课程的学生学号(去掉重复行)3.查询年龄不在20~23岁之间的学生姓名、系别和年龄4.查询既不是IS、MA,也不是CS系学生的姓名和性别5.查询所有姓刘的学生的姓名、学号和性别6.查询选修了3号课程的学生的学号及其成绩,结果按分数的降序排列7.计算1号课程的学生平均成绩8.查询选修了3门以上课程的学生学号9.在查询分析器中完成以下连接查询语句查询每个学生及其选修课程的情况(使用自然连接、外连接分别完成)10.查询每一门课的间接先修课11查询选修2号课程且成绩在90分以上的所有学生12查询每个学生的学号、姓名、选修的课程名及成绩13在查询分析器中完成以下嵌套查询语句查询与“刘晨”在同一个系学习的学生(使用嵌套查询、自身连接、比较运算符分别完成)1.嵌套查询2.自身连接3.比较查询查询选修了课程名为“信息系统”的学生学号和姓名(使用嵌套查询、自然连接分别完成)1.嵌套查询2.自然连接14查询其他系中比信息系某一学生年龄小的学生姓名和年龄(使用ANY谓词、集函数分别完成)1.ANY谓词2.聚集函数15.查询所有选修了1号课程的学生(使用比较运算符、IN、EXISTS分别完成)1.比较运算符2.IN3.EXISTS查询没有选修1号课程的学生的姓名查询选修全部课程的学生姓名SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=Course.Cno));查询至少选修了学生95002选修的全部课程的学生号码在查询分析器中完成以下集合查询语句查询计算机科学系的学生及年龄不大于19岁的学生并按学号排序(使用单表查询、集合查询分别完成)单表查询:SELECT*FROMStudentWHERESdept='CS'ORSage=19ORDERBYSno;集合查询:SELECT*FROMStudentWHERESdept='CS'UNIONSELECT*FROMStudentWHERESage=19ORDERBYSno;查询计算机科学系的学生及年龄不大于19岁的学生的差集SELECT*FROMStudentWHERESdept='CS'ANDSage19;四、实验体会数据库的逻辑关系很强,通过做实验,让我更容易的知道其中的奥秘,通过不断的实验来锻炼自己逻辑分析能力也是一个不错的选择。
本文标题:数据库实验二
链接地址:https://www.777doc.com/doc-2332829 .html