资源描述:
《实验4多表查询-连接查询和嵌套查询》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验4多表查询•连接查询和嵌套查询一、目的和要求(1)掌握简单的多表连接查询,了解多表查询的目的。(2)掌握嵌套查询的用法。(3)掌握带有TN谓同、ANY、SOME、ALL谓同、EXISTS谓词实现嵌套查询的区别。(4)理解嵌套查询时,=和1?4的区别。(5)掌握外连接的使用方法和目的。(6)理解嵌套查询和连接查询的区别和效率。(7)掌握利用AS给表重新命名的方法和H的。二、背景知识同实验3。三、实验内容要求在查询分析器窗口屮选择XSGL数据库为当前数据库,且使用SQL语句练习多表查询、嵌套查询。四、实验步骤1.查询学号为‘20022037’的同学的每门课的成绩,输出格式为:学号
2、,课程名,课程成绩。SELECTSNOAS学号,CNAMEAS课程名,GRADEAS课程成绩FROMsc,courseWHEREsc.CN0=course.CNOANDSNO=’20022037’2.査询每个学生的每门课程的成馈,要求输出学号,课程名,成绩。SELECTSNO,CNAME,GRADEPROMsc,courseWHEREsc.CN0=course.CNO3.查询每个学生的每门课程的成绩,要求输出学号,姓名,课程名,成绩。SELECTstudent.SNO,SNAME,CNAME,GRADEFROMsc,course,studentWHEREsc.CN0=course
3、.CNOANDstudent.SNOsc.SNO4.查询选修了’线性代数’课程的学生学号、姓名。SELECTstudent.SNO,SNAMEFROMsc,course,studentWHEREsc.SNO=student.SNOANDsc.CN0=course.CNOANDcourse.CNAME=’线性代数’1.查询’线性代数’的所有授课班级的平均成绩,并列出授课班号、教师名、平均成绩,且按平均成绩排序。SELECTsc.CNO,course.TNAME,AVG(GRADE)AS平均成缋FROMsc,courseWHEREsc.CN0=course.CNOANDCNAME=,
4、线性代数’GROUPBYsc.CNO,course.TNAMEORDERBYAVG(GRADE)2.使用多表连接方法,査询和学号为‘20000156’的同学同年同月同日出生的所有学生的学号、姓名、生日。SELECTa.SNO,a.SNAME,a.BIRTHDAYFROMstudentASa,studentbWHEREa.BTRTHDAY=b.BTRTIIDAYANDb.SNO=20000156,3.使用嵌套查询方法,查询和学号为‘20000156’的同学同年同月同日出生的所有学生的学号、姓名、生日。SELECTSNO,SNAME,BIRTHDAYFROMstudentWHEREB
5、IRTHDAY=(SELECTBIRTHDAYFROMstudentWHERESNO’20000156’)说明:该嵌套子查询只执行一次,整个查询效率比第6题快4.使用嵌套查询方法,查询“赵蓉”教师任课的学生成绩,并按成绩递増排列。SELECTCNO,SNO,GRADEFROMscWHERECNOIN(SELECTCNOFROMcourseWHERETNAME=’赵蓉’)ORDERBYGRADE说明:该嵌套子查询只执行一次,执行效率比多表连接查询效率高5.使用嵌套査询方法,査询课程最低分大于70,最高分小于90的学生学号和姓名。SELECTSNO,SNAMEFROMstudentW
6、HERESNOIN(SELECTSNOFROMscGROUPBYsc.SNOHAVINGMIN(GRADE)>70ANDMAX(GRADE)<90)1.用嵌套法查询选修了“线性代数“的学生学号和姓名。SELECTSNO,SNAMEFROMstudentWHERESNOIN(SELECTSNOFROMscWHERECNOIN(SELECTCNOFROMcourseWHERECNAME=’线性代数’))说明:该查询使用了两层嵌套查询,查询次序为从里向外执行2.从选修’218801’课程的同学中,选出成绩高于’季莹’的学生的学号和成绩SELECTSNO,GRADEFROMscWHERE
7、CNO=21880VANDGRADE>(SELECTGRADEFROMscWHERECNO=’218801’ANDSNO=(SELECTSNOFROMstudentWHERESNAME=’季莹’))说明:先执行子查询,再执行主查询,该子查询只执行一次3.查询成绩比该课程平均成绩低的学生成绩表。SELECTSNO,CNO,GRADEFROMscASaWHEREGRADE<(SELECTAVG(GRADE)FROMscASbWHEREa.CNO=b.CNO说明:主查询在判断每个待选行