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条记录

浙公网安备 33010602011771号