1

图解

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


哈基石
88 声望3 粉丝