连接查询一:基本概念与用法
示例数据:
连接(JOIN)
所谓连接就在表关系的笛卡儿积数据记录中,按照相应字段值的比较条件进行选择生成一个新的关系。连接分为内连接(INNER JOIN)、外连接(OUTER JOIN)、交叉连接(CROSS JOIN).
内连接(INNER JOIN)
-
自然连接(NATURAL JOIN):自然连接操作就是表关系的笛卡儿积中, 根据表关系中相同名称的字段自动进行记录匹配(同名字段值相等),然后去掉重复的字段。 等值连接:等值连接操作就是表关系的笛卡儿积中,选择所匹配字段值相等(=符号)的数据记录。 不等连接:不等连接操作就是表关系的笛卡儿积中, 选择所匹配字段值不相等(!-符号)的数据记录。
外连接(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后面。 连接查询的效率高于子查询
本文由博客一文多发平台 发布!
