7、1_连接查询:概念和分类

一 连接查询概述

join 单词本意:连接

连接查询就是多表查询。

实际开发中,我们不可能一张表查询,都是多张表联合查询,取出最终的结果。

在实际开发中,一个业务都会对应多张表。比如学生和班级

 

一张表的弊端

+-------+--------+-----------+--------------------+
| 学生编号 | 学生名字 | 班级编号 |      班级名称       |
+-------+--------+-----------+--------------------+
|  1    |   张三   |    10    | 太原市小店一中高三一班| 
|  2    |   李四   |    20    | 太原市小店一中高三一班| 
|  3    |   王五   |    30    | 太原市小店一中高三一班| 
+-------+--------+-----------+---------------------+

数据会大量重复 造成数据冗余,所以我们必须分为 班级表 和 学生表

 

二 连接查询的分类

 1)内连接 inner join

根据查询条件,取出两张表数据的交集部分

在这里插入图片描述

select e.ename,d.ename from emp e inner join emp d on e.mgr = d.empno;

+--------+-------+
| ename | ename |
+--------+-------+
| SMITH | FORD |
| ALLEN | BLAKE |
| WARD | BLAKE |
| JONES | KING |
| MARTIN | BLAKE |
| BLAKE | KING |
| CLARK | KING |
| SCOTT | JONES |
| TURNER | BLAKE |
| ADAMS | SCOTT |
| JAMES | BLAKE |
| FORD | JONES |
| MILLER | CLARK |
+--------+-------+
13 rows in set (0.00 sec)

内连接以两张表为基准,查出13条信息

 

2)左外连接 left outer join

查询结果有两部分:1 左表的全部信息     2 左右两表符合关联查询条件的信息

左表展示出全部信息,而右表没有则以NULL填充

 

在这里插入图片描述

select
e.ename,d.ename
from emp e
left outer join emp d
on e.mgr = d.empno;

+--------+-------+
| ename | ename |
+--------+-------+
| SMITH | FORD |
| ALLEN | BLAKE |
| WARD | BLAKE |
| JONES | KING |
| MARTIN | BLAKE |
| BLAKE | KING |
| CLARK | KING |
| SCOTT | JONES |
| KING | NULL |
| TURNER | BLAKE |
| ADAMS | SCOTT |
| JAMES | BLAKE |
| FORD | JONES |
| MILLER | CLARK |
+--------+-------+
14 rows in set (0.00 sec)

左外连接以左表为基准,查出了所有员工,保证了数据的完整性

 

3)右外连接 right outer join

和左外查询一样,以右表为基准。左表匹配不上的,用NULL填充

 在这里插入图片描述

 

4)全连接 full join

展示的是a表和b表的全部信息(a和b的并集)。但需要注意的是,对于没有匹配的记录(即a.id和b.id没有一一对应的),则会以null做为值。可以使用IFNULL判断。

在这里插入图片描述

mysql不支持,可以用 union 代替

 

5) 交叉连接 cross join (没有连接条件)

1 不带where条件子句,返回被连接两个表的笛卡尔积,返回结果的函数等于:两个表行数的乘积

select e.ename,d.ename from emp e cross join emp d;

返回 14*14 196条记录

 

 

 

2 带where条件子句,返回

select e.ename,d.ename from emp e cross join emp d where e.mgr = d.empno;

 

posted @ 2020-11-20 21:02  棉花糖88  阅读(121)  评论(0)    收藏  举报