内容正文:
数据库表数据的操纵
第四章
1
目 录
2
4.1 单表查询
4.2 分组统计查询
4.3 多表连接查询
4.4 嵌套查询
4.5 数据更新
4.6 查询优化——索引
4.3 多表连接查询
掌握多表连接查询的方法。
掌握对查询结果进行分组和筛选的方法。
掌握对查询结果按一定顺序进行排序的方法。
掌握使用排名函数对数据进行排名的方法。
知识目标
会进行多表连接查询。
会对查询结果进行分组和筛选。
会对查询结果按一定的顺序进行排序。
会使用排名函数
能力目标
5
学生考试成绩统计
计算机应用技术1701班(班级编号为17041011)的班主任王老师需要对本班学生的期末考试成绩进行统计,将统计结果作为2017-2018-2学期奖学金的评定依据。
查询本班学生各门课程的成绩,要求输出学号、姓名、课程名称、成绩,查询结果按学号的升序和分数的降序排列。
统计每个学生本学期所有课程的平均分、总分及名次。
查询本学期所有课程平均分高于60分(包括60分)的学生的学号、姓名、总分和平均分。
统计本班本学期每门课程的最高分、最低分和平均分,并且按平均分降序排列。
查询本学期不及格学生的学号、姓名、课程名称、成绩,查询结果按课程名称升序排列。
、
任务描述
6
查询本班学生各门课程的成绩,要求输出学号、姓名、课程名称、成绩,查询结果按学号的升序和分数的降序排列。
查询的数据分别来自3个表,属于多表查询。
统计每个学生本学期所有课程的平均分、总分及名次。
此任务首先按学号分组,然后利用聚合函数得到每个学生的平均分、总分,最后利用排名函数获取名次。
查询本学期所有课程平均分高于60分(包括60分)的学生的学号、姓名、总分和平均分。
此任务按学号分组统计成绩信息后,使用HAVING子句对分组结果进行筛选。
统计本班本学期每门课程的最高分、最低分和平均分,并且按平均分降序排列。
此任务按照课程编号对成绩进行分组统计。
查询本学期不及格学生的学号、姓名、课程名称、成绩,查询结果按课程名称升序排列。
此任务属于多表查询。
学生考试成绩统计
任务分析
4.3.1使用连接谓词连接
使用连接谓词连接表的语法格式如下:
SELECT <输出字段列表>
FROM 表1,表2[,...n]
WHERE <表1.字段名1><连接谓词><表2.字段名2>
连接谓词是“=”的连接,称为等值连接。
连接谓词使用其他运算符的连接,称为不等值连接。
等值连接条件通常采用“主键列=外键列”的形式。
【例4-34】在学生表和成绩表中查询学生的基本信息和成绩信息。
SELECT student.*,score.*
FROM student, score
WHERE student.s_id=score.s_id
知识导读
4.3.1使用连接谓词连接
使用连接谓词连接表的语法格式如下:
SELECT <输出字段列表>
FROM 表1,表2[,...n]
WHERE <表1.字段名1><连接谓词><表2.字段名2>
连接谓词是“=”的连接,称为等值连接。
连接谓词使用其他运算符的连接,称为不等值连接。
等值连接条件通常采用“主键列=外键列”的形式。
【例4-34】在学生表和成绩表中查询学生的基本信息和成绩信息。
SELECT student.*,score.*
FROM student, score
WHERE student.s_id=score.s_id
1.等值连接和不等值连接
知识导读
4.3.1使用连接谓词连接
2.自然连接
在等值连接中,使输出字段列表中重复的字段只保留一个的连接称为自然连接。
【例4-35】查询学生的基本信息和成绩信息,在输出结果中相同的字段只保留一个。
SELECTstudent.s_id,s_name,class_id,s_sex,
nation,place,politic, born_date,address,tel,
student.resume,c_id,grade,score.resume
FROM student,score
WHERE student.s_id=score.s_id
知识导读
4.3.1使用连接谓词连接
3.复合条件连接
含有多个连接条件的连接称为复合条件连接。
【例4-36】查询学生的学号、姓名、所学课程名称和成绩。
SELECT student.s_id,s_name,c_name,grade
FROM student,score,course
WHERE student.s_id=score.s_id
AND