外连接
外连接分为左外连接,右外连接和全外连接。
左外连接
左外连接的结果集包括左表所有记录和右表中满足连接条件的记录,结果集中那些不符合连接条件的来源于右表的列值为null。
语法
SELECT
fieldlist
FROM
table1
LEFT JOIN table2 ON
table1.column1 = table2.column2;
左外连接就是在等值连接的基础上加上主表中的未匹配数据
示例:查询所有非空调车的车牌号、型号、线路号、起点站和终点站
分析:需要显示所有非空调车,所以需要外连接
SELECT
plateNo '车牌号',
model '型号',
lineNo '线路号',
from_station '起点站',
end_station '终点站'
FROM
vehicle v
LEFT JOIN line l ON v.lineID = l.lineID
WHERE
type = '非空调车';
执行结果如图:
最后一行为非匹配行,来源于右表列相应字段为空
右外连接
右外连接与左外连接相似,是左外连接的反向连接。
语法
SELECT
fieldlist
FROM
table1
RIGHT JOIN table2 ON
table1.column1 = table2.column2;
示例:查询所有线路的车辆信息,要求显示车牌号、型号、线路号、起点站和终点站
分析:需要显示所有非空调车,所以需要外连接
SELECT
plateNo '车牌号',
model '型号',
lineNo '线路号',
from_station '起点站',
end_station '终点站'
FROM
vehicle v
RIGHT JOIN line l ON v.lineID = l.lineID;
执行结果如图:
最后一行为非匹配行,来源于左表列相应字段为空
内连接是指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。
而外连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行