数据库--连接(JOIN)

SQL join 用于把来自两个或多个表的行结合起来。
下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。

数据库--连接(JOIN)_第1张图片
image.png

接下来我们将会实现这7种链接
首先准备两个表: website(网站表) access_log(网站访问表)

数据库--连接(JOIN)_第2张图片
website

数据库--连接(JOIN)_第3张图片
access_log

LEFT JOIN:

LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配

包含所有a集合(普通情况):

select id,name from Websites a left join access_log b on a.id=b.aid
数据库--连接(JOIN)_第4张图片
image.png

排除a集合中包含的b集合

select id,name from Websites a left join access_log b on a.id=b.aid where b.aid is null
数据库--连接(JOIN)_第5张图片
image.png

INNER JOIN(表的并集):

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

select id,name FROM Websites a INNER JOIN access_log b on a.id=b.aid
数据库--连接(JOIN)_第6张图片
image.png

RIGHT JOIN:

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

包含所有b集合(普通情况):

select id,name from Websites a right join access_log b on a.id=b.aid
数据库--连接(JOIN)_第7张图片
image.png

排除b中包含有a的数据

select id,name from Websites a right join access_log b on a.id=b.aid where a is null
数据库--连接(JOIN)_第8张图片
image.png

FULL OUTER JOIN :

FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.
FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。

使用的mysql不支持该语法,就不贴结果了.解决方案使用left join union right join

select id,name from Websites a FULL OUTER JOIN  access_log b on a.id=b.aid

你可能感兴趣的:(数据库--连接(JOIN))