表连接

  初学SQL表连接的时候,什么笛卡尔积,左连接,右连接看的头都大了

  后来看了《SQL Server技术内幕2008:T-SQL查询》之后,豁然开朗。今天写数据库又用到了表连接,印象有点模糊了,赶紧找地方写下来先。

  所谓的笛卡尔积其实就是多行数据交叉连接。

  例如

A     1        与            M      3                                  A       1      N       4

B     2                        N       4  进行笛卡尔积得      A       1      M      3

                                                                                B        2      N      4

                                                                                B        2      M      3

   其实表连接总共就4种连接,分别是交叉连接,内连接,外连接和多表连接

   1.交叉连接        关键字(cross join)

       交叉连接就是两表进行笛卡尔积获得的结果集

  2.内连接      关键字(inner join)

       内连接就是两表进行笛卡尔积的结果再通过“on”条件进行筛选后得到的结果集

  3.外连接      关键字(left join  ,right join)

       有时候我们希望两个表进行笛卡尔积并筛选后,可以保留其中一个表不符合条件的行,于是外连接就应运而生了。可以把外连接理解为两个表进行笛卡尔积并筛选后,再根据关键字(left还是right)选择将左表或右表不符合条件的列置为null并显示出来

   4.多表连接    关键字(union all)

        这个就没什么好说的了,列数和数据类型的多个表按照从上到下的顺序(这样说其实不准确,结果集是没有先后顺序的)依次落起来就完了。

原文地址:https://www.cnblogs.com/qiuyeyaozhuai/p/2740418.html