示例数据:

连接(JOIN)

所谓连接就在表关系的笛卡儿积数据记录中,按照相应字段值的比较条件进行选择生成一个新的关系。连接分为内连接(INNER JOIN)、外连接(OUTER JOIN)、交叉连接(CROSS JOIN).

内连接(INNER JOIN)

  • 自然连接(NATURAL JOIN):自然连接操作就是表关系的笛卡儿积中, 根据表关系中相同名称的字段自动进行记录匹配(同名字段值相等),然后去掉重复的字段。

  • 等值连接:等值连接操作就是表关系的笛卡儿积中,选择所匹配字段值相等(=符号)的数据记录。

  • 不等连接:不等连接操作就是表关系的笛卡儿积中, 选择所匹配字段值不相等(!-符号)的数据记录。

外连接(OUTER JOIN)

所谓外连接(OUTER JOIN),就是在表关系的笛卡儿积数据记录中,不仅保留表关系中所有匹配的数据记录,而且还会保留部分不匹配的数据记录。按照保留不匹配条件数据记录来源可以分为左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。

  • 左外连接操作就是表关系的笛卡儿积中,除了选择相匹配的数据记录,还包含关联左边表中不匹配的数据记录。 (右表不存在的字段为null)

  • 右外连接操作就是表关系的笛卡儿积中,除了选择相匹配(相等)的数据记录,还包含关联右边表中不匹配的数据记录。(左表不存在的字段为null)

  • 全外连接操作就是表关系的笛卡儿积中,除了选择相匹配(相等)的数据记录,还包含关联左右两边表中不匹配的数据记录。 (左右表不存在的字段为null)

内连接语法

一种方式在FROM子句中利用逗号 (,)区分多个表,在WHERE子句中通过逻辑表达式来实现匹配条件,从而实现表的连;

SELECT fieldl field2...fieldn FROM join_tablenamel , join_tablename2 【 , join_tablenamen】 WHERE join_condition

另一种是ANSI连接语法形式,在FROM子句中使用”JOIN…ON”关键字,而连接条件写在关键字ON子句中, MySQL软件推荐使用ANSI语法形式的连接。

SELECT fieldl field2...fieldn FROM join_tablenamel  JOIN join_tablename2 【 JOIN join_tablenamen】 ON join_condition

fieldn表示所要查询的字段名字,

join_tablename1和 join_tablename2表示所连接的表

join_condition 标识过滤条件

多张表用多个JOIN关联

  • 自连接就是指表与其自身进行连接 。

  • 等值连接就是在关键字ON后的匹配条件中通过等于关系运算符(=)来实现等值条件。

  • 不等连接就是在关键字ON后的匹配条件中通过除了等于关系运算符来实现不等条件外,可以使用的关系运算符包含“>”、”>=”、“<“、“<“和“1”等运算符号。

小结

  • 最常用的是内连接中的等值连接和不等连接
  • 连接查询有两种写法:
    • FROM 后面跟随需要连接的表, 中间用,连接表。
    • FROM后面跟随需要连接的表, 中间用JOIN连接表,条件写在ON后面。
  • 连接查询的效率高于子查询

**** 码字不易如果对你有帮助请给个关注****

**** 爱技术爱生活 QQ群: 894109590****

版权声明:本文为freeoldman原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/freeoldman/p/11983033.html