外连接查询概念:
在内连接查询中,只有满足连接条件的记录才能出现在查询结果中。但在实际应用中,如果希望不满足连接条件的记录也在查询结果中出现,这时需要使用外连接查询。
根据不同的外连接形式,外连接所生成的结果集中不仅包含符合条件的数据记 录,还包含左表 或右表或左右表中所有的数据记录。
语法:
SELECT 字段名称 FROM 表名 1 LEFT|RIGHT|FULL [OUTER] JOIN 表名 2 ON 表名 1. 字段名 1= 表名 2. 字段名 2
左外连接(LEFT JOIN):
左外连接的结果集包括左表的所有记录和右表中满足连接条件的记录,结果集中那些不符合连接条件的来源于右表的列值为 null。
示例1:
select plateNo 车牌号 , model 型号 , lineNo 线路号 , from_station 起点站 , end_station 终点站from vehicle V left join line L on V.lineID=L.lineID where type=' 非空调车 ';
分析:
由于需要显示所有的非空调车,所以只能外连接。如果将车辆表 vehicle 作为连接左表,线路表 line 作为右表, 则该连接为左外连接。
示例2:
显示所有司机基本信息,并查询其所驾驶车辆和行驶线路的相关信息,要求输出司机姓名、性别、电话、车牌号、型号、线路号、起点站和终点站。
select name 司机姓名 , gender 性别 , phone 电话 , plateNo 车牌号 , model 型号 , lineNo 线路号 , from_station 起点站 , end_station 终点站 from driver D left join vehicle V
on D.driverID=V.driverID left join line L on V.lineID=L.lineID
分析:
连接表为司机表、车辆表和线路表。由于需要显示所有的司机信息,所以需要将司机表和车辆表作为左表(3 张表的连接次序为司机表、车辆表和线路表)。
右外连接(RIGHT JOIN):
右外连接是左外连接的反向连接。右外连接的结果集包括右表的所有记录和左表中满足连接条件的记录,结果集中那些不符合连接条件的来源于左表的列值为 null。
示例:
查询所有线路的车辆信息,要求显示车牌号、型号、线路号、起点站和终点站。
select plateNo 车牌号 , model 型号 , lineNo 线路号 , from_station 起点站 , end_station 终点站from vehicle V right join line L on V.lineID=L.lineID
分析:
由于需要显示所有的线路信息,所有只能外连接。如果车辆表 vehicle 作为连接左表,线路表 line 作为右表, 则该连接为右外连接
总结:
外连接查询的定义是什么?什么是左外连接?
在内连接查询中,只有满足连接条件的记录才能出现在查询结果中。但在实际应用中,如果希望不满足连接条件的记录也在查询结果中出现,这时需要使用外连接查询。根据不同的外连接形式,外连接所生成的结果集中不仅包含符合条件的数据记录,还包含左表、右表或左右表中所有的数据记录。
左外连接的结果集包括左表的所有记录和右表中满足连接条件的记录,结果集中那些不符合连接条件的来源于右表的列值为 null。