mysql 链接查询七中情况_数据库上课-第五讲-SQL语言-2(简单查询与连接).ppt

本文讲解了SQL中的高级查询技巧,包括按学号排序的ORDER BY语句,简单查询与连接(内连接、自然连接和非等值连接),以及自表连接的实际应用。通过实例演示如何使用JOIN操作实现课程和学生表的关联,以及如何查找同时选修001和002课程的学生信息。
摘要由CSDN通过智能技术生成

数据库上课-第五讲-SQL语言-2(简单查询与连接)

要求按学号排序输出,需要排序语句ORDER BY 本查询语句为: 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, (SELECT * FROM Score WHERE courseNo='001') b, (SELECT * FROM Score WHERE courseNo='002') c WHERE 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 * * 2.1.2 自然连接 自然连接的方法是在等值连接的基础上消除重复列 [例3.30] 实现成绩表Score和课程表Course的自然连接。 SELECT studentNo, a.courseNo, score, courseName, creditHour, courseHour, priorCourse FROM Score a, Course b WHERE a.courseNo=b.courseNo 课程编号在两个关系中同时出现,且相同,只需输出一次,即在SELECT子句中仅需出现1次,因此使用a.courseNo,也可以使用b.courseNo。其他列名是唯一的,不需要加上元组变量 * * 2.1.3 非等值连接 非等值连接使用的比较少。 练习:以例2.16(p61)为基础。写出SQL。 * * 2.2 自表连接 若某个表与自己进行连接,称为自表连接 主要用途是检索一张表内部的匹配情况 [例3.31] 查找同时选修了编号为“001”和“002”课程的同学学号、姓名、课程号和相应成绩,并按学号排序输出。 学生姓名在学生表中,必须包含学生表(取别名为a) 考虑两个成绩表,分别起别名b和c(Score b, Score c) b表用于查询选修了编号为“001”课程的同学 c表用于查询选修了编号为“002”课程的同学 * * FROM子句还必须包含两个成绩表b和c,且在WHERE子句中包含两个选择条件: b.courseNo='001' AND c.courseNo='002' 一方面,成绩表b与成绩表c在学号上做等值连接(自表连接),如果连接成功,表示学生同时选修了编号为“001”和“002”的课程 另一方面,学生表与成绩表b (或成绩表c)在学号上做等值连接。WHERE子句包含两个连接条件: b.studentNo=c.studentNo AND a.studentNo=b.studentNo * * 本查询语句为 SELECT a.studentNo, studentName, b.courseNo, b.score, c.courseNo, c.score FROM Student a, Score b, Score c WHERE b.courseNo='001' AND c.courseNo='002'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值