嵌套子查询设计实验

上传人:F****n 文档编号:99132196 上传时间:2019-09-17 格式:DOC 页数:9 大小:502KB
返回 下载 相关 举报
嵌套子查询设计实验_第1页
第1页 / 共9页
嵌套子查询设计实验_第2页
第2页 / 共9页
嵌套子查询设计实验_第3页
第3页 / 共9页
嵌套子查询设计实验_第4页
第4页 / 共9页
嵌套子查询设计实验_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《嵌套子查询设计实验》由会员分享,可在线阅读,更多相关《嵌套子查询设计实验(9页珍藏版)》请在金锄头文库上搜索。

1、南 京 晓 庄 学 院数据库原理与应用课程实验报告实验五 嵌套子查询设计实验所在院(系): 数学与信息技术学院班级: 学号: 姓名: 1.实验目的(1) 掌握多表查询和子查询的方法。(2) 熟练使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。(3) 理解不相关子查询和相关子查询的实现方法和过程。2.实验要求(1) 针对 “TM”数据库,在SQL Server查询分析器中,用T-SQL语句实现以下查询操作:a) 查询选修了数据结构与算法的学生学号和姓名。b) 查询课程的成绩低于孙云禄的学生学号和成绩。c) 查询和孙云禄同年出生的学生的姓名和出生年份。d) 查询其他系中年龄小

2、于数学与信息技术学院年龄最大者的学生。e) 查询其他系中比数学与信息技术学院学生年龄都小的学生。f) 查询同孙云禄数据库原理与应用课程分数相同的学生的学号和姓名。g) 查询选修了课程的学生姓名。h) 查询没有选课程的学生姓名。i) 查询同时选修了和课程的学生的学号。j) 查询所有未授课的教师的工号、姓名和院系,结果按院系升序排列。扩展实验:a) 查询和选修的全部课程相同的学生的学号、课程号、期末考试成绩。b) 查询至少选了选修的全部课程的学生的学号。c) 查询年龄比所在院系平均年龄小的学生的学号、姓名、年龄、院系,按院系和年龄升序排列。d) 查询每门课都在80分以上的学生的学号和姓名。(2)

3、在SQL Server Management Studio中新建查询,尽可能用多种形式表示实验中的查询语句,并进行比较。(3) 按要求完成实验报告。 3.实验步骤、结果和总结实验步骤/结果将调试成功的T-SQL语句写在下方(标明题号)。a)查询选修了数据结构与算法的学生学号和姓名。select Student.S_ID,Student.S_Namefrom Student,Course,SCwhere Student.S_ID=SC.S_ID and Course.C_ID=SC.C_ID and Student.S_ID=SC.S_ID and C_Name=数据结构与算法b)查询课程的成绩

4、低于孙云禄的学生学号和成绩select Student.S_ID,SC.EXAM_Gradefrom Student,SCwhere Student.S_ID=SC.S_ID and SC.EXAM_Grade(select SC.EXAM_Grade from Student,SC where Student.S_ID=SC.S_ID and Student.S_Name=孙云禄 and SC.C_ID=)c)查询和孙云禄同年出生的学生的姓名和出生年份。select S_Name,Date_of_Birth from Student where Year(Date_of_Birth )=(s

5、elect year(Date_of_Birth ) from student where S_Name=孙云禄 )and S_Name !=孙云禄d)查询其他系中年龄小于数学与信息技术学院年龄最大者的学生。select * from Studentwhere DEPT_ID数学与信息技术学院 and year(getdate()-year(Date_of_Birth)all(select max(year(getdate()-year(Date_of_Birth) ) as 年龄from Student,Department where Student.DEPT_ID=Department.

6、DEPT_ID and DEPT_Name=数学与信息技术学院)e)查询其他系中比数学与信息技术学院学生年龄都小的学生。select * from Studentwhere year(getdate()-year(Date_of_Birth)(select min(year(getdate()-year(Date_of_Birth) as 年龄from Student,Departmentwhere Student.DEPT_ID=Department.DEPT_ID and DEPT_Name=数学与信息技术学院)andDEPT_ID07 f)查询同孙云禄数据库原理与应用课程分数相同的学生的

7、学号和姓名。select s.s_id,s_namefrom student s,sc,course cwhere s.s_id=sc.s_id and sc.c_id=c.c_idand c.c_name=数据库原理与应用 and s_name孙云禄and exam_grade=(select exam_gradefrom student s,sc,course cwhere s.s_id=sc.s_id and sc.c_id=c.c_idand s_name=孙云禄 and c.c_name=数据库原理与应用)g)查询选修了课程的学生姓名。select S_Name from Stude

8、nt,SCwhere Student.S_ID=SC.S_ID and SC.C_ID=h)查询没有选课程的学生姓名。select S_Name from Studentwhere S_ID not in(select S_ID from SC where C_ID =)i)查询同时选修了和课程的学生的学号。select a.s_idfrom sc a,sc bwhere a.s_id=b.s_id and a.C_ID = and b.c_id=;j)查询所有未授课的教师的工号、姓名和院系,结果按院系升序排列。select T_ID,T_NAME,DEPT_ID from Teacher w

9、here T_ID not in(select T_ID from TC )order by DEPT_ID扩展实验:a) 查询和选修的全部课程相同的学生的学号、课程号、期末考试成绩。select s.s_id,c_id,exam_gradefrom student s,sc awhere s.s_id=a.s_id and not exists(select c_idfrom sc bwhere b.s_id=s.s_id)except(select c_idfrom scwhere s_id=) and not exists(select c_idfrom scwhere s_id=)ex

10、cept(select c_idfrom sc cwhere c.s_id=s.s_id)b) 查询至少选了选修的全部课程的学生的学号。select s.s_id,c_id,exam_gradefrom student s,sc awhere s.s_id=a.s_id and not exists(select c_idfrom scwhere s_id=)except(select c_idfrom sc cwhere c.s_id=s.s_id)c) 查询年龄比所在院系平均年龄小的学生的学号、姓名、年龄、院系,按院系和年龄升序排列。select S_ID,S_Name,DEPT_ID,D

11、ate_of_Birth from Studentwhere year(getdate()-year(Date_of_Birth)all(select avg(year(getdate()-year(Date_of_Birth) ) as 年龄from Student )order by DEPT_ID,year(getdate()-year(Date_of_Birth)d) 查询每门课都在80分以上的学生的学号和姓名。select s_id,s_namefrom student swhere not exists(select *from scwhere sc.s_id=s.s_id and

12、 exam_grade=80)4实验思考:哪些类型的嵌套查询可以用联接查询表示?如果只是单个的条件的时候,即只有一个连接条件的时候,使用两种方式都是一样的,但是,如果是多个条件的话,就要考虑一下效率了,一般这种情况下需要嵌套查询更能提高效率,因为连接查询是先要做笛卡尔积之后之后再筛选,而嵌套查询的话可以先筛选。嵌套查询具有何种优势?嵌套查询是逐层求解,避开了连接查询的笛卡尔运算,所以速度快,效率高。相关子查询和不相关子查询的执行顺序有何不同,子查询各自执行几遍?所谓相关子查询是指,子查询是一个独立的查询不与外部查询相关,子查询将被先执行,而且只被执行一次,子查询执行完成后,再执行外部的查询,外部查询在执行过程中会使用到子查询的结果。非相关子查询,解除构成子查询的查询语句与主查询语句的嵌套关系或者通过表的连接方式替代子查询,以获得良的执行速度。事实上,几乎大部分的子查询都要经过转化。在子查询非嵌套化不可能实现时,优化器会制定把子查询放在最优先或最后位置 执行的独立执行计划。此时,这个查询语句的执行速度会随着子查询被放在最优先或最后位置执行的顺序不同而不同。全国驴友团队、自驾俱乐部、户外俱乐部、及各旅行社、社会团体,以及户外爱好者均可报名。报名时提供真实身份证信息、联系电话等信息。以报名款到帐成功为准确认报名资格9

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号