SQL(六)——连接查询

关于内连接、左连接、右连接、全连接
多表查询包括:

  • 等值与非等值连接查询(就是“=”“>”等)
  • 自然连接查询
  • 非自然连接查询
  • 自身连接查询
  • 复合条件连接查询

三个示例表

学生表student
学生表student
课程表course
在这里插入图片描述
成绩表sc
在这里插入图片描述

等值与非等值连接查询

连接操作执行过程
student.sno=scc.sno

  • 先在表 student 中找到第一个元组(行),
  • 然后从头开始扫描表 sc ,逐一查找与 student 第一个元组的相等的 sc 元组,
  • 找到后就将student中的第一个元组与该元组拼接起来,形成结果表中的一个元组

course.cno=scc.cno
找到sc中满足条件的元组后,开始从头扫描course表,像student.sno=scc.sno 描述的那样查找。
最终得到一个拼接后的结果,然后显示select student.sname,course.cname,scc.grade中的student.sname,course.cname,scc.grade部分

select student.sname,course.cname,scc.grade
from student,course,sc scc
where student.sno=scc.sno and course.cno=scc.cno and scc.grade>80
selectstudent.snamecourse.cnamesc.grade
——想要查询到的是哪个表的哪个属性course.”是为了防止重名的情况
fromstudentcoursesc scc
——需要在哪几个表查询表名 表别名”为了使用方便,(别名都是这么定义的)
wherestudent.sno=scc.snoandcourse.cno=scc.cnoandscc.grade>80
——第一个条件——第二个条件——第三个条件

在这里插入图片描述

自身连接

这个情况就比较特殊了
表 course 中 cpno属性是指“你要是想学这个课程,你需要先学哪个课程”

select c1.cname 课程, c2.cname 先修课
from course c1, course c2
where c1.cpno=c2.cno
fromcourse c1course c2
——因为是自身连接,所以要用别名

在这里插入图片描述

外连接

三个表的外连接

select student.sno 学号, sname 姓名, sage 年龄, sgender 性别, sdept 院系, cname 课程名, grade 成绩, ccredit 学分
from student left outer join sc on student.sno=sc.sno left outer join course on sc.cno=course.cno
fromstudentleft outer joinscon student.sno=sc.snoleft outer joincourseon sc.cno=course.cno
——表名左连接表名连接的条件左连接表名连接的条件

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值