Mysql的自连接、等值连接与非等值连接 8月25日学习笔记

4 篇文章 0 订阅
2 篇文章 0 订阅


环境信息:

员工表:EMP
在这里插入图片描述
部门表:
在这里插入图片描述
工资等级表 salgrade
在这里插入图片描述

sql92标准的多表连接

注意:

  1. 如果为表起了别名,则查询的字段就不能用原来的表名
  2. 多表等值连接的结果为多表的交集部分
  3. n表连接,至少需要n-1个连接条件
  4. 多表的顺序没有要求
  5. 一般为表起别名
  6. 可以搭配前面介绍的所有查询子句使用,比如排序、分组、筛选

1、等值连接

1.1 案例:

案例1:查询员工的部门名称

select  e.ENAME,d.DNAME from EMP e , DEPT d where e.DEPTNO=d.DEPTNO

案例2:查询有奖金的员工名,部门名称

select  e.ENAME,d.DNAME from EMP e , DEPT d where e.DEPTNO=d.DEPTNO and e.COMM is not null;

案例3:查询第二个字符为i的员工名以及所属的部门名称

select  e.ENAME,d.DNAME from EMP e , DEPT d where e.DEPTNO=d.DEPTNO and e.ENAME like '_I%'

1.2 等值连接加分组函数加排序

案例1:查询deptno的个数

select count(*) 个数,e.DEPTNO from EMP e group by DEPTNO

案例2:查询有奖金的每个部门的部门名和部门的位置和该部门的工资

select d.DNAME 部门名,e.SAL,d.LOC from DEPT d ,EMP e where  e.DEPTNO=d.DEPTNO and e.COMM is not null order by e.SAL

1.3 三表连接

案例1:查询员工名字,员工薪水,员工部门名称,员工薪水等级

select e.ENAME,e.SAL, d.DNAME,s.GRADE from EMP e , DEPT d, SALGRADE s where e.DEPTNO=d.DEPTNO and e.SAL > s.LOSAL and e.SAL < s.HISAL order by e.SAL

2、非等值连接

2.1 含义:

不是等号的连接

2.2 案例:

案例1:查询员工的薪资与薪资等级

select e.SAL,s.GRADE from EMP e , SALGRADE s where e.SAL > s.LOSAL and e.SAL < s.HISAL order by e.SAL
select e.SAL,s.GRADE from EMP e , SALGRADE s where e.SAL > s.LOSAL between  s.LOSAL and s.HISAL

3、自连接

3.1 含义:

将一张表比作两张表或多张表
只连接自己的表

3.2 案例:

查询 员工名 以及上级的名字
将一张表比作两张表或多张表

select e.ENAME 员工名字,m.ENAME ,e.MGR from EMP e ,EMP m where e.MGR=m.EMPNO
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈小c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值