概述
两张表中的数据为:
mysql> select * from department;
+----+----------+
| id | deptName |
+----+----------+
|
1 | 软件部
|
|
2 | 财务部
|
|
3 | 人事部
|
|
4 | 行政部
|
+----+----------+
4 rows in set
mysql> select * from employee;
+----+---------+--------+
| id | empName | deptId |
+----+---------+--------+
|
1 | rose
|
1 |
|
2 | lily
|
2 |
|
3 | lucy
|
3 |
+----+---------+--------+
3 rows in set
一、交叉连接查询
查询员工及其所在部门(显示员工姓名和部门名称):
从结果可以看出,不是我们想要的结果,产生了 笛卡尔积 现象,3*4,有些数据是重复的;
mysql> select empName,deptName from employee,department;
+---------+----------+
| empName | deptName |
+---------+----------+
| rose
| 软件部
|
| lily
| 软件部
|
| lucy
| 软件部
|
| rose
| 财务部
|
| lily
| 财务部
|
| lucy
| 财务部
|
| rose
| 人事部
|
| lily
| 人事部
|
| lucy
| 人事部
|
| rose
| 行政部
|
| lily
| 行政部
|
| lucy
| 行政部
|
+---------+----------+
12 rows in set
二、内连接查询
查询员工及其所在部门(显示员工姓名和部门名称):
使用 where 条件语句(最常使用)
mysql> select empName,deptName from employee,department where employee.deptId=department.id;
+---------+----------+
| empName | deptName |
+---------+----------+
| rose
| 软件部
|
| lily
| 财务部
|
| lucy
| 人事部
|
+---------+----------+
3 rows in set
内连接查询的另一种方式:使用关键字 inner join
mysql> select empName,deptName
-> from employee e
-> inner join department d
-> on e.deptId=d.id;
+---------+----------+
| empName | deptName |
+---------+----------+
| rose
| 软件部
|
| lily
| 财务部
|
| lucy
| 人事部
|
+---------+----------+
3 rows in set
三、左外连接查询
查询每个部门的员工
用内连接查询无法达到要求,因为 行政部 没有对应的员工,需要显示 null;
使用左外连接查询:使用左边表的数据 去匹配右边表的数据,如果符合连接条件的结果则显示,
如果不符合连接条件则显示 null;
注意:左外连接查询,左表的数据一定会完全显示;
mysql> select deptName,empName
-> from department d
-> left outer join employee e
-> on d.id=e.deptId;
+----------+---------+
| deptName | empName |
+----------+---------+
| 软件部
| rose
|
| 财务部
| lily
|
| 人事部
| lucy
|
| 行政部
| NULL
|
+----------+---------+
4 rows in set
四、右外连接查询
查询每个部门的员工
使用右边表的数据 去匹配左边表的数据,如果符合连接条件的结果则显示,如果不符合连接条件则显示 null;
右外连接查询,右表的数据一定会完全显示;
mysql> select deptName,empName
-> from employee e
-> right outer join department d
-> on e.deptId=d.id;
+----------+---------+
| deptName | empName |
+----------+---------+
| 软件部
| rose
|
| 财务部
| lily
|
| 人事部
| lucy
|
| 行政部
| NULL
|
+----------+---------+
4 rows in set
最后
以上就是阔达秀发为你收集整理的mysql学习笔记(四):多表查询(关联查询)的全部内容,希望文章能够帮你解决mysql学习笔记(四):多表查询(关联查询)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复