1、内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。
内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。
2、外联接。外联接可以是左向外联接、右向外联接或完整外部联接。
1)左外链接:LEFT JOIN
左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则
在相关联的结果集行中右表的所有选择列表列均为空值。
2)右外链接:RIGHT JOIN
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
举例说明:创建两个表
3306 [world]>select * from a;
+-----+-------+
| Aid | Aname |
+-----+-------+
| 1 | A1 |
| 2 | A2 |
| 3 | A3 |
| 4 | A4 |
| 5 | A5 |
| 6 | A6 |
| 7 | A7 |
| 8 | A8 |
| 9 | A9 |
+-----+-------+
9 rows in set (0.00 sec)
3306 [world]>select * from b;
+------+---------+
| Bbid | Bnameid |
+------+---------+
| 100 | 2 |
| 101 | 6 |
| 102 | 3 |
| 103 | 7 |
| 104 | 6 |
| 105 | 8 |
| 106 | 2 |
| 107 | 2 |
| 108 | 11 |
+------+---------+
9 rows in set (0.00 sec)
内连接:
利用内连接可获取两表的公共部分的记录 ,即图中的共有数据集
3306 [world]>Select * from a JOIN b ON a.Aid=b.Bnameid;
+-----+-------+------+---------+
| Aid | Aname | Bbid | Bnameid |
+-----+-------+------+---------+
| 2 | A2 | 100 | 2 |
| 6 | A6 | 101 | 6 |
| 3 | A3 | 102 | 3 |
| 7 | A7 | 103 | 7 |
| 6 | A6 | 104 | 6 |
| 8 | A8 | 105 | 8 |
| 2 | A2 | 106 | 2 |
| 2 | A2 | 107 | 2 |
+-----+-------+------+---------+
8 rows in set (0.00 sec)
左连接:
获得两表的共有数据集和a表所有数据
3306 [world]>select * from a Left JOIN b ON a.Aid=b.Bnameid;
+-----+-------+------+---------+
| Aid | Aname | Bbid | Bnameid |
+-----+-------+------+---------+
| 2 | A2 | 100 | 2 |
| 6 | A6 | 101 | 6 |
| 3 | A3 | 102 | 3 |
| 7 | A7 | 103 | 7 |
| 6 | A6 | 104 | 6 |
| 8 | A8 | 105 | 8 |
| 2 | A2 | 106 | 2 |
| 2 | A2 | 107 | 2 |
| 1 | A1 | NULL | NULL |
| 4 | A4 | NULL | NULL |
| 5 | A5 | NULL | NULL |
| 9 | A9 | NULL | NULL |
+-----+-------+------+---------+
12 rows in set (0.00 sec)
右连接
获得两表的共有数据集和b表所有数据
3306 [world]>select * from a right JOIN b ON a.Aid=b.Bnameid;
+------+-------+------+---------+
| Aid | Aname | Bbid | Bnameid |
+------+-------+------+---------+
| 2 | A2 | 100 | 2 |
| 6 | A6 | 101 | 6 |
| 3 | A3 | 102 | 3 |
| 7 | A7 | 103 | 7 |
| 6 | A6 | 104 | 6 |
| 8 | A8 | 105 | 8 |
| 2 | A2 | 106 | 2 |
| 2 | A2 | 107 | 2 |
| NULL | NULL | 108 | 11 |
+------+-------+------+---------+
9 rows in set (0.00 sec)