我是靠谱客的博主 阔达秀发,最近开发中收集的这篇文章主要介绍mysql学习笔记(四):多表查询(关联查询),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

两张表中的数据为:

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学习笔记(四):多表查询(关联查询)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部