Mysql基本命令之JOIN连接查询

来源:互联网 发布:cv模板 知乎 编辑:程序博客网 时间:2024/04/29 05:06

在mysql中,用的最多的就是查询就是join连接查询

join连接查询分为交叉连接 cross join,内连接inner join,外连接;

外连接又分为左连接left(out) join,右连接right(out) join,全外连接full (outer) join


交叉连接cross join

含义:
将两个表的每一行都进行两两对接之后的所有数据行所构成的结果数据;
通常,此时,结果数据中的行数,就是两个表的原先行数的乘积;
这种连接,又称为“笛卡尔积”;

形式:

//select *  from  表1  cross  join 表2  SELECT * FROM table1 CROSS JOIN tables2;

表1:
第一张表

表2:
第二张表

cross join后的结果:
corss join后的结果


内连接 inner join

含义:
将两个表的每一行进行两两对接之后的所有数据中,取出满足所给定的条件那些数据所得到的结果;
通常,此时,结果数据中的行数,不一定是多少,而是完全看具体条件的设定;

形式:

// select * from  表1  inner  join 表2  on 表1.字段1 = 表2.字段2SELECT *  FROM table1 INNER JOIN table2 ON table1.id = table2.id;

原表:
原数据表

inner join
inner join 结果

连接查询的作用,就是找出这些表的连接数据结果中有意义的那些行


左外连接 left [outer] join

含义:
将两个表的内连接所得到的结果数据,再加上左边表中,那些不能满足连接条件的数据行所得到的结果。其中,后一部分数据的“右边部分”,填充空值(null);

形式:

//select * from  表1  left  【outer】  join 表2  on 表1.字段1 = 表2.字段2SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id;

left join结果


右外连接 right [outer] join

含义:
将两个表的内连接所得到的结果数据,再加上右边表中,那些不能满足连接条件的数据行所得到的结果。其中,后一部分数据的“左边部分”,填充空值(null);

形式:

//select * from  表1  right  【outer】  join 表2  on 表1.字段1 = 表2.字段2SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id;

这里写图片描述



全外连接 full [outer] join

含义:
将两个表的内连接所得到的结果数据,
再加上左边表中,那些不能满足连接条件的数据行所得到的结果。其中“右边部分”,填充空值(null);
再加上右边表中,那些不能满足连接条件的数据行所得到的结果。其中“左边部分”,填充空值(null);
目前,mysql本身还没有实现该连接的语法形式!!!


实际上,在实际应用中基本上是多个表的连接,
形式为:
select * from 表1
inner join 表2 on 表1.字段1 = 表2.字段2
inner join 表3 on 表3.字段3 = 表1或表2的某字段
inner join 表4 on 表4字段4 = 表1或表2或表3的某字段
where 条件
可见,这样就可以将更多表连接起来,称为一个整体。
总体上,其实可以理解为:每次两个表连接完之后,都可以当做“新的表数据结果”,继续跟后续的一个表进行连接,再得到新的表数据结果,在继续跟后续连接。

原创粉丝点击