您现在的位置是:首页 >

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

火烧 2021-09-27 11:10:44 1056
SQL实战新手入门:左联接 LEFT OUTER JOIN    左联接(LEFT OUTER JOIN)  虽然先前没有说明 但总有两个表相互联接 并符合我们人类的观察方式 我们可以将其想象成在左边

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 location fk_bk_loc = books bk_id

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

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

  表 LEFT OUTER JOIN查询返回的结果

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

      返回目录SQL实战新手入门

      编辑推荐

       Oracle索引技术

       高性能MySQL

lishixinzhi/Article/program/SQL/201311/16471  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码