内连接,外连接,等值连接,自然连接
表A:SELECT * FROM dbo.[111]
ID | AA | BB |
1 | a1 | b1 |
2 | a2 | b2 |
3 | a3 | b3 |
表B:SELECT *FROM dbo.[222]
id | cc | dd |
1 | c1 | d1 |
2 | c2 | d2 |
4 | c3 | d3 |
第一种:内连接-inner join A表和B表的交集
SELECT * FROM dbo.[111] a INNER JOIN dbo.[222] b ON b.id = a.ID
ID | AA | BB | id | cc | dd |
1 | a1 | b1 | 1 | c1 | d1 |
2 | a2 | b2 | 2 | c2 | d2 |
第二种:全连接-Full outer join A表和B表的并集
SELECT * FROM dbo.[111] a Full outer join dbo.[222] b ON b.id = a.ID
ID | AA | BB | id | cc | dd |
1 | a1 | b1 | 1 | c1 | d1 |
2 | a2 | b2 | 2 | c2 | d2 |
3 | a3 | b3 | NULL | NULL | NULL |
NULL | NULL | NULL | 4 | c3 | d3 |
第三种:左外连接-LEFT outer join A表全集,left join是left outer join 的缩写,右外连接同理
SELECT * FROM dbo.[111] a LEFT outer join dbo.[222] b ON b.id = a.ID
ID | AA | BB | id | cc | dd |
1 | a1 | b1 | 1 | c1 | d1 |
2 | a2 | b2 | 2 | c2 | d2 |
3 | a3 | b3 | NULL | NULL | NULL |
第四种:交差集 cross join ,笛卡尔积的结果,性能不够好
SELECT * FROM dbo.[111] a CROSS join dbo.[222] b
ID | AA | BB | id | cc | dd |
1 | a1 | b1 | 1 | c1 | d1 |
2 | a2 | b2 | 1 | c1 | d1 |
3 | a3 | b3 | 1 | c1 | d1 |
1 | a1 | b1 | 2 | c2 | d2 |
2 | a2 | b2 | 2 | c2 | d2 |
3 | a3 | b3 | 2 | c2 | d2 |
1 | a1 | b1 | 4 | c3 | d3 |
2 | a2 | b2 | 4 | c3 | d3 |
3 | a3 | b3 | 4 | c3 | d3 |
第五种:等值连接的写法,结果跟内连接一样
SELECT * FROM dbo.[111] a ,dbo.[222] b where b.id = a.ID
第六种:自然连接是特殊的等值连接,去重重复的项,结果为下:
ID | AA | BB | cc | dd |
1 | a1 | b1 | c1 | d1 |
2 | a2 | b2 | c2 | d2 |