3、sql 表的连接

摘自: https://blog.csdn.net/holly2008/article/details/25704471

表连接分为:CROSS JOIN、INNERT JOIN、OUTER JOIN、SELF JOIN。

 

一、CROSS JOIN 交叉连接

  CROSS JOIN连接用于生成两张表的笛卡尔集。
  1、返回的记录数为两个表的记录数乘积。比如,A表有n条记录,B表有m条记录,则返回n*m条记录。
  2、将A表的所有行分别与B表的所有行进行连接。

 

二、INNER JOIN 内连接

  内连接就是关联的两张或多张表中,根据关联条件,显示所有匹配的记录,匹配不上的,不显示。

  1、--也可以省略inner关键字,直接写join

  2、--如果两张表的关联字段名相同,也可以使用USING子句。

  

三、OUTER JOIN 外连接
  外连接,又分为:(-如果两张表的关联字段名相同,也可以使用USING子句)
        1.LEFT OUTER JOIN/LEFT JOIN(左外连接)
        2.RIGHT OUTER JOIN/RIGHT JOIN(右外连接)
        3.FULL OUTER JOIN/FULL JOIN(全外连接)

 

 1.LEFT OUTER JOIN/LEFT JOIN(左外连接)

        左外连接就是关联的两张或多张表中,根据关联条件,显示匹配的记录,左表中有的记录,但是右表中没有匹配上的,以空(null)显示。
        LEFT OUTER JOIN也可以简写成LEFT JOIN,效果是一样的。

2.RIGHT OUTER JOIN/RIGHT JOIN(右外连接)
        右外连接就是关联的两张或多张表中,根据关联条件,显示匹配的记录。右表中有的记录,但是左表中没有匹配上的,以空(null)显示。
        RIGHT OUTER JOIN也可以简写成RIGHT JOIN,效果是一样的。
 

3.FULL OUTER JOIN/FULL JOIN(全外连接)
        全外连接就是关联的两张或多张表中,根据关联条件,显示所有匹配和不匹配的记录。(m + n)
        左表中有的记录,但是右表中没有匹配上的,以空(null)显示。右表中有的记录,但是左表中没有匹配上的,也以空(null)显示。
        FULL OUTER JOIN也可以简写成FULL JOIN,效果是一样的。
 

四、SELF JOIN 自连接 

   自连接,就是把一张表取两个别名,当做两张表来使用,自己和自己关联。(一般不用)

  

  可以修改为

  

 

五、Natural JOIN 自然连接

  对两张表中名称、数据类型都相同的字段进行等值连接,并返回符合条件的结果

  两张表的相同的字段不能超过 11 个。

  eg:  select select_list from table1 natural join tabl2

 

六、总结
表连接分为:
  1.CROSS JOIN:显示迪卡尔积。
  2.INNERT JOIN:显示所有匹配的项。
  3.OUTER JOIN
     外连接又分为:
       1) LEFT OUTER JOIN/LEFT JOIN:显示左表的所有项,右表没有匹配的项,则以null显示。
       2) RIGHT OUTER JOIN/RIGHT JOIN:显示右表的所有项,左表没有匹配的项,则以null显示。
       3) FULL OUTER JOIN/FULL JOIN:显示所有匹配和不匹配的项,左右两张表没有匹配的,都以null显示。
  4.SELF JOIN:把一张表取两个别名,当做两张表来使用,自己和自己关联。

        5、NATURAL JOIN: 把两张表根据同名称、同数据类型的字段进行连接起来,返回匹配的项。

 

posted @ 2018-10-17 10:01  skillking2  阅读(302)  评论(0编辑  收藏  举报