在SQL中表的链接类型主要有:
内部链接、外部链接、交叉连接,下面对这几种类型进行简单的总结。
1.内部链接
关键字:INNER JOIN/JOIN
所谓内部链接也可以称为简单连接,它连接两个或多个表,只返回符合连接条件的行。
下面通过表格进行简单示例:
表Tablel1
ColumnA | ColumnB | ColumnC |
---|---|---|
X1 | Y1 | Z1 |
X2 | Y2 | Z2 |
X3 | Y3 | Y3 |
表Tablel2
ColumnA | ColumnD | ColumnE |
---|---|---|
X4 | D4 | E4 |
X2 | D2 | E2 |
X3 | D3 | E3 |
Table1 INNER JOIN Tablel2 ON Table1.ColumnA = Tablel2.ColumnB
结果表:
ColumnA | ColumnC | ColumnD | ColumnE | ColumnF |
---|---|---|---|---|
X2 | Y2 | Z2 | D2 | E2 |
X3 | Y3 | Z3 | D3 | E3 |
2.外部链接
左外连接
关键字:LEFT OUTER JOIN/LEFT JOIN
使用左外连接的查询,包含了左边表中的全部记录,右边表则只返回符合连接条件的记录,如果左边表的某行记录在右边表中没有匹配项,则在返回结果中右边表的对应处为空。
示例如下:
表Tablel1
ColumnA | ColumnB | ColumnC |
---|---|---|
X1 | Y1 | Z1 |
X2 | Y2 | Z2 |
X3 | Y3 | Y3 |
表Tablel2
ColumnA | ColumnD | ColumnE |
---|---|---|
X4 | D4 | E4 |
X2 | D2 | E2 |
X3 | D3 | E3 |
Table1 LEFT OUTER JOIN Tablel2 ON Table1.ColumnA = Tablel2.ColumnB
结果表:
ColumnA | ColumnC | ColumnD | ColumnA | ColumnE | ColumnF |
---|---|---|---|---|---|
X2 | Y2 | Z2 | X2 | D2 | E2 |
X3 | Y3 | Z3 | X3 | D3 | E3 |
X1 | Y1 | Z1 | NULL | NULL | NULL |
右外连接
关键字:RIGHT OUTTER JOIN/RIGHT JOIN
与左外连接相反,将右边表中所有的数据与左边表进行匹配,返回的结果包含了匹配成功的记录,也包含了右边表中未匹配成功的记录,并在其左边对应的列处添补空值。
表Tablel1
ColumnA | ColumnB | ColumnC |
---|---|---|
X1 | Y1 | Z1 |
X2 | Y2 | Z2 |
X3 | Y3 | Y3 |
表Tablel2
ColumnA | ColumnD | ColumnE |
---|---|---|
X4 | D4 | E4 |
X2 | D2 | E2 |
X3 | D3 | E3 |
Table1 RIGHT OUTER JOIN Tablel2 ON Table1.ColumnA = Tablel2.ColumnB
结果表:
ColumnA | ColumnC | ColumnD | ColumnA | ColumnE | ColumnF |
---|---|---|---|---|---|
X2 | Y2 | Z2 | X2 | D2 | E2 |
X3 | Y3 | Z3 | X3 | D3 | E3 |
NULL | NULL | NULL | X4 | D4 | E4 |
全外连接
关键字:FULL OUTER JOIN/FULL JOIN
全外连接除了包含连个表的匹配行外,还包含了FROM 子句中JOIN 关键词左边表和右边表的不匹配行。全外连接实际上可以表示如下:
全外连接 = 内部连接+左边表中失配的元组+右边表中失配的元组
把上面表Table1和Table2用全连接查询结果可表示为:
ColumnA | ColumnC | ColumnD | ColumnA | ColumnE | ColumnF |
---|---|---|---|---|---|
X2 | Y2 | Z2 | X2 | D2 | E2 |
X3 | Y3 | Z3 | X3 | D3 | E3 |
X1 | Y1 | Z1 | NULL | NULL | NULL |
NULL | NULL | NULL | X4 | D4 | E4 |