数据库上课 第六讲 SQL语言_3(连接与聚合)精要.ppt

数据库上课 第六讲 SQL语言_3(连接与聚合)精要.ppt

数据库上课 第六讲 SQL语言_3(连接与聚合)精要

主讲: 顾 曦 电话Email:guxi@ ;主要内容; 1.1 等值与非等值连接 1.2 自表连接 1.3 外连接 ;在实际应用中,往往会涉及到多个关系的查询,需用到连接运算或子查询。 连接运算包括;1.1 等值与非等值连接;比较运算符;1.1.1 等值连接[例3.27] ;SELECT studentNo, studentName, native, Student.classNo, className FROM Student, Class WHERE Student.classNo=Class.classNo AND institute=会计学院 WHERE子句中 Student.classNo=Class.classNo为连接条件(from子句中涉及的关系) institute=会计学院 为选择条件 注意:在连接操作中,如果涉及到多个表的相同属性名,必须在相同的属性名前加上表名加以区分 如Student.classNo、Class.classNo ;别名;[例3.28] ;Where 连接条件: Course.courseNo=Score.courseNo AND Score.studentNo=Student.studentNo Where 选择条件: 选修“计算机原理” :courseName=计算机原理 ;SELECT a.studentNo, studentName FROM Student a, Course b, Score c WHERE b.courseNo=c.courseNo AND c.studentNo=a.studentNo AND b.courseName=计算机原理 注意: 本例使用了无as的元组变量a、b、c 多对多关系转化为2个一对多关系的方法;[例3.29] ;Where 选择条件: 同时选修“001”和“002”课程: courseNo = ‘001’ and courseNo = ‘002’ ? 思路: 在选修了‘001’ 的学生中查找选出‘002’课程的学生(学号相同) ;综上:;排序要求: ORDER BY studentNo 综上;该查询也可以表示为: SELECT a.studentNo, studentName, b.courseNo, b.score, c.courseNo, c.score FROM Student a, Score b, (SELECT * FROM Score WHERE courseNo=002) c WHERE b.courseNo = 001 AND a.studentNo = b.studentNo AND a.studentNo = c.studentNo ORDER BY a.studentNo;该查询还可以表示为: SELECT a.studentNo, studentName, b.courseNo, b.score, c.courseNo, c.score FROM Student a, Score b, Score c WHERE a.studentNo = b.studentNo AND a.studentNo = c.studentNo AND b.courseNo = 001 AND c.courseNo = 002 ORDER BY a.studentNo;1.1.2 自然连接;1.1.3 非等值连接;1.2 自表连接;示例;[例3.31];Where 选择条件: b.courseNo=001 AND c.courseNo=002 Where 连接条件: 成绩表b与成绩表c在学号上做等值连接(自表连接) b.studentNo = c.studentNo 学生表与成绩表b (或成绩表c)在学号上做等值连接。 a.studentNo = b.studentNo;综上;[例3.32] ;查询语句:;;1.3 外连接;从查询结果中可以看出: 班级表中的“注册会计08_01班”、“注册会计08_03班”以及“金融管理07_01班”这3个班没有出现在查询结果中,原因是这3个班

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档