left join on 多条件_详细汇总 SQL 语句 Join 连接方式与用法。

↑ 点击上面 “时代Java”关注我们, 关注新技术,学习新知识!

连接 (Join)

我们知道,连接可以理解为筛选+笛卡尔乘积,即便真实的算法可以做很多优化,基本思想不会变。笛卡尔乘积是固定的,让连接操作变得复杂的,只有筛选操作,也就是筛选条件。根据不同的筛选条件,SQL提供了不同的书写方式,帮助程序员明确目的、减少意料之外的事情,也增加了学习的难度。只要牢记,各种连接就是筛选条件不同,也就可以很容易地区分各种连接了。

以下挨个介绍常用的连接方式,同时呈现对应SQL的写法。

自然连接 (Natural Join)

两个表中含有相同的「属性」,或称「列」,在笛卡尔乘积的结果集中,筛选这些相同属性相等的情况。

前文讲解笛卡尔集合时的例子就是一种自然连接,相同的列是表达教师姓名的两个属性。但是, 从SQL的角度说,这个例子并不自动构成「自然连接」,因为两个列的「名称」不同。把instructor表中的列名改为teacher,或把course表中的列名改为name,才可以自动构成SQL意义下的「自连接」。

虽然SQL有所规定,但是我们知道,自然连接实际划出了一类连接,代表「使用相等条件筛选」。只要我们明确,「使用相等条件筛选」是有直接SQL支持的,就可以了。

说了这么多,还没说SQL怎么写。

最简单的是直接使用SQL提供的关键字natural join。假设student表和takes表有相同的列ID,则以下两行SQL等价:

select name, title from student natural join takes;select name, title from student, takes where student.ID = takes.ID;

关键字natural join相当于自动添加了where语句,自动检查了两个表的哪几个属性相同。

也可以同时操作多个表,多

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值