图解
JOIN 内连接
JOIN 默认就是 INNER JOIN 的简写,从数学的角度讲就是求两个表的交集,从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录。
FULL JOIN
MySQL 中没有 FULL JOIN,就是两表相连,可以使用 UNION 来代替
OUTER JOIN
LEFT JOIN (就是 LEFT OUTER JOIN)
两表关联,左表全部保留,右表关联不上用 NULL 表示
RIGHT JOIN (就是 RIGHT OUTER JOIN)
右表全部保留,左表关联不上的用 NULL 表示。
CROSS JOIN
cross join 是mysql中的一种连接方式,区别于内连接和外连接,对于 cross join 连接来说,其实使用的就是笛卡尔连接。在MySQL中,当 CROSS JOIN 不使用WHERE子句时,CROSS JOIN产生了一个结果集,该结果集是两个关联表的行的乘积。通常,如果每个表分别具有n和m行,则结果集将具有n*m行
如果 cross 不实用 join 的效果与 inner join 不使用 on 的结果是一样的
UNION
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
SELECT country, name FROM Websites
WHERE country='CN'
UNION ALL
SELECT country, name FROM apps
如果不想删除重复数据,那么使用 UNION ALL