数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

SQL实战新手入门:左联接(LEFT OUTER JOIN)


发布日期:2021年06月15日
 
SQL实战新手入门:左联接(LEFT OUTER JOIN)

左联接(LEFT OUTER JOIN)

虽然先前没有说明但总有两个表相互联接并符合我们人类的观察方式我们可以将其想象成在左边或者在右边的联接而无须考虑数据库将其保存在何处以及如何保存表中的数据OUTERJOIN的想法正是来源于这种观念例如LEFTOUTER JOIN用于这样的情形我们想看到左表中感兴趣的全部记录列表以及右表中的一些项所具有的额外特性如果右表中没有对应数据行则对于左表中不匹配的行在右侧表中填充NULL值描述了LEFT OUTER JOIN的概念

例如假定列出书柜中所有的书架位置并列出书柜的书架中已经具有的图书但是现在需要列出所有图书甚至包括哪些还没有放置到书架中的图书由于所有图书在书柜中都已经各自具有一个正确的位置因此在BOOKS表中必须创建不匹配的行下面将创建一个BK_ID=的新行

INSERT INTO books (bk_id bk_title)

VALUES (LEFT JOIN EXAMPLE

其余的列将被填充为默认值NULL

现在可以使用之前曾用过的关于图书放置位置的查询只需要将JOIN类型从INNER JOIN修改为LEFT OUTER JOIN:

SELECT

bk_title

loc_shelf

loc_position_left

FROM books LEFT OUTER JOIN location

ON locationfk_bk_loc = booksbk_id

该查询从BOOKS表中请求所有记录另外还包含LOCATION表中不匹配的数据行刚才新插入的记录(BOOKS表中的最后一条记录)在书架上并没有对应的位置因此在返回的结果集中将它的位置信息填充为NULL值如果以INNER JOIN方式来运行该查询由于第条记录没有匹配的项因此INNER JOIN将简单地将其排除在结果集之外列出了该LEFT OUTERJOIN查询的结果

LEFT OUTER JOIN查询返回的结果

现在至少我们知道了哪些图书还没有放置到书柜中如果使用INNER JOIN的话该图书的记录就不会显示出来

返回目录SQL实战新手入门

编辑推荐

Oracle索引技术

高性能MySQL

数据仓库与数据挖掘培训视频教程

上一篇:SQL实战新手入门:N路INNER JOIN

下一篇:SQL实战新手入门:右联接(RIGHT OUTER JOIN)