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