7、3_连接查询:内连接

内连接语法: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条记录

King是大老板,没有上级,在mgr字段里的值为NULL, 用内连接就把King漏掉了

 

 

 

 

 

 

 

 一  等值连接

特点:连接条件是等量关系

需求:查询每个员工的部门名称,显示员工姓名和部门名称

SELECT e.ename,d.dname FROM emp as e INNER JOIN dept as d ON e.deptno = d.deptno;
需要的字段 内连接 连接条件:等值连接

 

二 非等值连接

特点:连接条件不是等量关系

需求:找出每个员工的工资等级,需要显示员工姓名、工资、工资等级。

SELECT  e.ename,e.sal,s.grade FROM emp e INNER JOIN salgrade s ON e.sal between s.losal and s.hisal;
需要的字段 内连接 连接条件:非等值连接

 

三 自连接

特点:一张表看做两张表,自己连接自己

等量关系:可以用等值  也可以用非等值

需求:找出每个员工的上级领导,要求显示员工姓名和对应的领导姓名

//1 先把用到的字段查出来
select empno,ename,mgr from emp;

//2 分表  分为员工表 和 领导表
//员工表a +-------+--------+------+ | empno | ename | mgr | +-------+--------+------+ | 7369 | SMITH | 7902 | | 7499 | ALLEN | 7698 | | 7521 | WARD | 7698 | | 7566 | JONES | 7839 | | 7654 | MARTIN | 7698 | | 7698 | BLAKE | 7839 | | 7782 | CLARK | 7839 | | 7788 | SCOTT | 7566 | | 7839 | KING | NULL | | 7844 | TURNER | 7698 | | 7876 | ADAMS | 7788 | | 7900 | JAMES | 7698 | | 7902 | FORD | 7566 | | 7934 | MILLER | 7782 | +-------+--------+------+ // 领导表 b | empno | ename | +-------+--------+-- | 7566 | JONES | | 7698 | BLAKE | | 7782 | CLARK | | 7788 | SCOTT | | 7839 | KING | | 7902 | FORD | +-------+--------+ //重点:找到两个表的等量关系:员工表的领导编号 = 领导表的员工编号 a.mgr = b.empno 书写SQL语句: select a.ename '员工名',b.ename '领导名' from emp a inner join emp b on a.mgr = b.empno;                                 自连接           SQL执行结果: +-----------+-----------+ | 员工名 | 领导名 | +-----------+-----------+ | 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 | +-----------+-----------+ king没有上级领导 所以查出13条记录 表里共有14条记录

 

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