- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验4 多表查询-连接查询和嵌套查询
一、目的和要求
(1)掌握简单的多表连接查询,了解多表查询的目的。
(2)掌握嵌套查询的用法。
(3)掌握带有IN谓词、ANY、SOME、ALL谓词、EXISTS谓词实现嵌套查询的区别。
(4)理解嵌套查询时,=和IN的区别。
(5)掌握外连接的使用方法和目的。
(6)理解嵌套查询和连接查询的区别和效率。
(7)掌握利用AS给表重新命名的方法和目的。
二、背景知识
同实验3。
三、实验内容
要求在查询分析器窗口中选择XSGL数据库为当前数据库,且使用SQL语句练习多表查询、嵌套查询。
四、实验步骤
1.查询学号为的同学的每门课的成绩,输出格式为:学号,课程名,课程成绩。
SELECT SNO AS 学号, CNAME AS 课程名 ,GRADE AS 课程成绩
FROM sc,course
WHERE sc.CNO=course.CNO AND SNO2.查询每个学生的每门课程的成绩,要求输出学号,课程名,成绩。
SELECT SNO,CNAME,GRADE
FROM sc, course
WHERE sc.CNO=course.CNO
3.查询每个学生的每门课程的成绩,要求输出学号,姓名,课程名,成绩。
SELECT student.SNO,SNAME,CNAME,GRADE
FROM sc, course,student
WHERE sc.CNO=course.CNO AND student.SNO=sc.SNO
4.查询选修了线性代数课程的学生学号、姓名。
SELECT student.SNO,SNAME
FROM sc,course,student
WHERE sc.SNO=student.SNO AND sc.CNO=course.CNO AND course.CNAME=线性代数
5.查询线性代数的所有授课班级的平均成绩,并列出授课班号、教师名、平均成绩,且按平均成绩排序。
SELECT sc.CNO,course.TNAME,AVG(GRADE) AS 平均成绩
FROM sc,course
WHERE sc.CNO=course.CNO AND CNAME=线性代数
GROUP BY sc.CNO,course.TNAME
ORDER BY AVG(GRADE)
6.使用多表连接方法,查询和学号为的同学同年同月同日出生的所有学生的学号、姓名、生日。
SELECT a.SNO,a.SNAME,a.BIRTHDAY
FROM student AS a, student b
WHERE a.BIRTHDAY =b.BIRTHDAY AND b.SNO7.使用嵌套查询方法,查询和学号为的同学同年同月同日出生的所有学生的学号、姓名、生日。
SELECT SNO,SNAME,BIRTHDAY
FROM student
WHERE BIRTHDAY =
(
SELECT BIRTHDAY
FROM student
WHERE SNO)
说明:该嵌套子查询只执行一次,整个查询效率比第6题快
8.使用嵌套查询方法,查询“赵蓉”教师任课的学生成绩,并按成绩递增排列。
SELECT CNO,SNO,GRADE
FROM sc
WHERE CNO IN
( SELECT CNO FROM course
WHERE TNAME=赵蓉 )
ORDER BY GRADE
说明:该嵌套子查询只执行一次,执行效率比多表连接查询效率高
9. 使用嵌套查询方法,查询课程最低分大于70,最高分小于90的学生学号和姓名。
SELECT SNO,SNAME
FROM student
WHERE SNO IN
( SELECT SNO
FROM sc
GROUP BY sc.SNO
HAVING MIN(GRADE)70 AND MAX(GRADE)90 )
10.用嵌套法查询选修了“线性代数“的学生学号和姓名。
SELECT SNO,SNAME
FROM student
WHERE SNO IN
(
SELECT SNO FROM sc
WHERE CNO IN
( SELECT CNO FROM course
WHERE CNAME=线性代数 )
)
说明:该查询使用了两层嵌套查询,查询次序为从里向外执行
11.从选修’218801’课程的同学中,选出成绩高于’季莹’的学生的学号和成绩。
SELECT SNO,GRADE
FROM sc
WHERE CNO=
文档评论(0)