【SQL高级(三)】【SQL 连接(JOIN)】

上一篇:【SQL高级(二)】【SQL IN 操作符+SQL BETWEEN 操作符+SQL 别名】

SQL 连接(JOIN)

SQL join 用于把来自两个或多个表的行结合起来。
下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。
在这里插入图片描述
SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。

最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。
SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

不同的 SQL JOIN

使用的不同的 SQL JOIN 类型:
INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行

SQL INNER JOIN 关键字

INNER JOIN 关键字在表中存在至少一个匹配时返回行。

语法

SELECT column_name(s)

FROM table1

INNER JOIN table2 ON table1.column_name=table2.column_name;

或:

SELECT column_name(s)

FROM table1

JOIN table2 ON table1.column_name=table2.column_name;

在这里插入图片描述

SQL LEFT JOIN 关键字

LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。

语法

SELECT column_name(s)

FROM table1

LEFT JOIN table2

ON table1.column_name=table2.column_name;

或:

SELECT column_name(s)

FROM table1

LEFT OUTER JOIN table2

ON table1.column_name=table2.column_name;

在这里插入图片描述
左表是websites,右表是access_log。右表沒有数据也会显示。
在这里插入图片描述
LEFT JOIN 关键字从左表返回所有的行,即使右表中没有匹配。

SQL RIGHT JOIN 关键字

RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。

语法

SELECT column_name(s)

FROM table1

RIGHT JOIN table2

ON table1.column_name=table2.column_name;

或:

SELECT column_name(s)

FROM table1

RIGHT OUTER JOIN table2

ON table1.column_name=table2.column_name;

在这里插入图片描述

access_log 作为左表,websites 作为右表

在这里插入图片描述
RIGHT JOIN 关键字从右表返回所有的行,即使左表中没有匹配。

SQL FULL OUTER JOIN 关键字

FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行。

FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。

语法

SELECT column_name(s)

FROM table1

FULL OUTER JOIN table2

ON table1.column_name=table2.column_name;

在这里插入图片描述

MySQL中不支持 FULL OUTER JOIN。

FULL OUTER JOIN 关键字返回左表和右表中所有的行。
如果 “websites” 表中的行在 “access_log” 中没有匹配或者 “access_log” 表中的行在 “websites” 表中没有匹配,也会列出这些行。

发布了96 篇原创文章 · 获赞 164 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42893334/article/details/104675269