连接查询补充

  • 作用:从2张或多张表中,取出有关联的数据.
  • 关联查询一共有几种情况:
    • 内连接:INNER JOIN 、CROSS JOIN
    • 外连接:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)、全外连接(FULL OUTER JOIN)
    • 自连接:当table1和table2本质上是同一张表,只是用取别名的方式虚拟成两张表以代表不同的意义
  • 说明:

(1)连接 n个表,至少需要 n-1个连接条件。 例如:连接三个表,至少需要两个连接条件。

(2)当两个关联查询的表如果有字段名字相同,并且要查询中涉及该关联字段,那么需要使用表名前缀加以区分

(3)当如果表名比较长时,可以给表取别名,简化SQL语句

  • 笛卡尔积

定义:将两(或多)个表的所有行进行组合,连接后的行数为两(或多)个表的乘积数.

在MySQL中如下情况会出现笛卡尔积,主要是因为缺少关联条件或者关联条件不准确

注:外连接必须写关联条件,否则报语法错误

  • 关联条件
    • 表连接的约束条件可以有三种方式:WHERE, ON, USING
      • WHERE:适用于所有关联查询
      • ON:只能和JOIN一起使用,只能写关联条件。虽然关联条件可以并到WHERE中和其他条件一起写,但分开写可读性更好。
      • USING:只能和JOIN一起使用,而且要求两个关联字段在关联表中名称一致,而且只能表示关联字段值相等
  • 内连接(INNER JOIN)
    • 分类:显式的隐式的,返回连接表中符合连接条件和查询条件的数据行

格式:

隐式:

  • SELECT [cols_list] from 1,2 where [condition]

显式:

  • SELECT [cols_list] from 1 INNER JOIN 2 ON [关联条件] where [其他筛选条件]
  • SELECT [cols_list] from 1 CROSS JOIN 2 ON [关联条件] where [其他筛选条件]
  • SELECT [cols_list] from 1 JOIN 2 ON [关联条件] where [其他筛选条件]

  • 外连接(OUTER JOIN)
    • 外连接分为:
      • 左外连接(LEFT OUTER JOIN),简称左连接(LEFT JOIN)
      • 右外连接(RIGHT OUTER JOIN),简称右连接(RIGHT JOIN)
      • 全外连接(FULL OUTER JOIN),简称全连接(FULL JOIN)。
  • 右外连接(RIGHT JOIN)

  • 外连接(FULL JOIN)

  • 自连接
    • 当table1和table2本质上是同一张表,只是用取别名的方式虚拟成两张表以代表不同的意义。然后两个表再进行内连接,外连接等查询
原文地址:https://www.cnblogs.com/li330273334/p/13854381.html