连接查询一:基本概念与用法
示例数据:
连接(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****