连接查询一:基本概念与用法

示例数据:

连接(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后面。
  • 连接查询的效率高于子查询

本文由博客一文多发平台 OpenWrite 发布!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘彦青-Yannis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值