数据库查询中left join,right join 和inner join的区别

在这里插入图片描述
先上图,虽然图中所示有7种情况,但仔细分析后能得到所有的结果其实只有left,right和inner三种情况。
最直白的区别,就是:

  1. left join 只保留左表记录的数据,而且是全部保留
  2. right join 同理,只保留右表记录数据
  3. inner join,只保留双方都记录的数据
    full join就是保留全部数据并将其呈现在一张表中。这中间可能会出现null值。
    反映到图中,就是1和2是一种情况,3是一种情况,4和5是一种情况,6和7又是一种情况。
    联结联结,也就是必须有相同的字段名和记录才能联结的起来。
    1和2 就是添加了一个筛选条件,选中A中没有B的部分,也就是B.key = NULL;
    4和5同理
    6和7就是 full join返回两表全部的结果,如果有的行数据没有联结字段的数据,则会显示null。即A和B的交集中的所有行的数据选出来都是完整的,反之,在剩下集合中的行的数据一定有null值。
    而7在这个基础上添加条件 A.key is null代表联结字段是null,也就是无法联结,那么就是剩下集合。
    注意,这里的key代表的是联结字段,不代表主键,注意理解别混淆。
    (因为只要联结字段不为null,那么一定可以通过这个联结字段去另一张表中获取对应数据)

现在回过来理解left,right和inner也就比较好理解了。

  • left代表左表中无论联结字段key是否为null,都保留下来
  • right代表右表中无论联结字段key是否为null,都保留下来
  • inner表示联结字段必须有值,即非null才可以保留
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值