数据库连接查询之外连接查询

实际的数据库中总包含着许多的表,并且实际应用中也不可能只对一个表格进行查询。如果一个查询同时涉及两个以上的表,则称之为连接查询。连接查询是关系数据库中最主要的查询。连接查询包括等值连接查询、非等值连接查询、自然连接查询、自身连接查询、外连接查询和复合条件连接查询等。

外连接
通常的连接操作中,只有满足连接查询条件的元组才能作为结果输出。由于连接查询操作某个表中某字段不满足条件而被舍弃不出现在查询结果集中,在实际应用中往往需要将被查询操作舍弃掉的字段也显示在结果表中,并把不满足条件的字段用空值表示

外连接包括左外连接(LEFT JOIN)、右外连接(RIGHT JOIN)、全外连接(FULL JOIN)。

如果只把左边表中要舍弃的元组保留就叫做左外连接。即左边表的所有元组都会显示在结果表中,对于左表中没有连接上的元组,其右表中的相应属性用空值替代。也就是说两个表以上的连接查询中,查询了两个表分别为左表与右表,查询时在左表去一部分字段作为结果表的字段,也在右表中取一部分字段作为结果集字段,当满足连接条件时左右表中字段都有相应的值,不满足查询条件时,即左表的字段在右表中没有找到相应字段匹配,此时右表中相应字段用空值表示。

右外连接的连接结果包含右表中的所有元组,对于右表中没有连接上的元组,其左表中相应字段用空值替代。

全外连接的连接结果包含左表和右表中的所有选择的元组,对于左表中没有连接上的元组,其右表中的相应属性用空值替代,对于右表中没有连接上的元组,其左表中的相应属性用空值替代。

停车场可用车位查询时,有parkingno停车管理表、booking预约信息表,两表中都有Parking_No(停车位号)字段,现需要查询在parkingno中出现而在booking表中没出现的Parking_No字段,即没被预约的车位号
parkingno停车管理表
parkingno停车管理表
booking预约信息表
booking预约信息表

需要的结果是出A1001与A1003之外的所有停车场车位号

首先左外连接查询
这里写图片描述
左外连接查询结果

要达到目标的结果还要个刷选条件就是把右表(booking表)中为空的Parking_No字段对应的左表(parkingno表)的Parking_No字段选出来

如下
这里写图片描述

即在左外连接的基础上还可以加上where等选择条件

实现目标结果的相近sql语句

这里写图片描述

更详细解释请参考数据库原理与设计(第二版) 人民邮电出版社 83-84页

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值