原文:
章节2:SQL之多表连接
一、内连接:
补充:
Sql的多表连接关系有:内连接、外连接和交叉连接。
先建立两个用于演示的表:
TB_Characters:
| Id | Character |
| 1 | 内向 |
| 2 | 外向 |
| 3 | 中性性格 |
TB_Colors:
| Id | Color |
| 1 | 绿色 |
| 2 | 红色 |
| 4 | 蓝色 |
一、内连接:
内连接(JOIN 或 INNER JOIN):内连接取交集
示意图:
SELECT
*
FROM
tb_characters
INNER
JOIN
tb_colors
ON
tb_characters.ID
=
tb_colors.ID;
结果:
二、外连接:
外连接可分为:左连接、右连接、完全外连接。
1、左连接(LEFT JOIN):
示意图:
SELECT
*
FROM
tb_characters
LEFT
JOIN
tb_colors
ON
tb_characters.ID
=
tb_colors.ID;
结果:
2、右连接(RIGHT JOIN):
示意图:
SELECT
*
FROM
tb_characters
RIGHT
JOIN
tb_colors
ON
tb_characters.ID
=
tb_colors.ID;
结果:
3、完全外连接:
示意图:
select
*
from
tb_characters
LEFT
JOIN
tb_colors
on
tb_characters.ID
=
tb_colors.ID
UNION
select
*
from
tb_characters
RIGHT
JOIN
tb_colors
on
tb_characters.ID
=
tb_colors.ID
结果:
三、交叉连接( CROSS JOIN ):
交叉连接产生连接所涉及的表的笛卡尔积。
SELECT
*
FROM
tb_characters
CROSS
JOIN
tb_colors;
结果:
补充:
1、如下可获取内连接结果:
SELECT
*
FROM
tb_characters,tb_colors
WHERE
tb_characters.ID
=
tb_colors.ID;
2、如下可获取交叉连接结果:
SELECT
*
FROM
tb_characters,tb_colors;

