MySQL数据库学习之连接查询

第三章 连接查询

第一节 内连接

	--等值连接
		案例:要求查询每一个员工所在的部门名,最终显示员工名和部门名
		SQL92语法:mysql> select e.ename,d.dname from emp e,dept d where e.deptno=d.deptno;
		SQL99语法:mysql> select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno;
		+--------+----------------+
		| ename  | dname          |
		+--------+----------------+
		| Jack   | sales          |
		| White  | administration |
		| cathy  | planning       |
		| merry  | project        |
		| lucy   | Secretarys     |
		| Hellen | technical      |
		| jenny  | sales          |
		| Andrew | planning       |
		| ford   | sales_2        |
		| Angus  | sales          |
		| Andy   | sales_2        |
		| Jacob  | administration |
		+--------+----------------+
		--非等值连接
		SQL92语法:select e.ename,e.sal,s.sgrade from emp e,salgrade s where e.sal between s.lowsal and s.highsal;
		SQL99语法:select e.ename,e.sal,s.sgrade from emp e join salgrade s on e.sal between s.lowsal and s.highsal;
		+--------+---------+--------+
		| ename  | sal     | sgrade |
		+--------+---------+--------+
		| Jack   | 4000.00 |      3 |
		| White  | 4500.00 |      4 |
		| cathy  | 4000.00 |      3 |
		| merry  | 3500.00 |      2 |
		| lucy   | 2800.00 |      1 |
		| Hellen | 2700.00 |      1 |
		| jenny  | 5500.00 |      6 |
		| Andrew | 6000.00 |      7 |
		| ford   | 2700.00 |      1 |
		| Angus  | 3000.00 |      1 |
		| Andy   | 3500.00 |      2 |
		| Jacob  | 2700.00 |      1 |
		+--------+---------+--------+
		--自连接
		案例:要求查询每一个员工的上级领导名
		SQL92语法:mysql> select a.ename,b.ename as leadername from emp a , emp b where a.mgr=b.empno;
		SQL99语法:mysql> select a.ename,b.ename as leadername from emp a join emp b on a.mgr=b.empno;
		+--------+------------+
		| ename  | leadername |
		+--------+------------+
		| Jack   | ford       |
		| White  | Andrew     |
		| cathy  | merry      |
		| merry  | lucy       |
		| lucy   | cathy      |
		| Hellen | Jack       |
		| jenny  | ford       |
		| ford   | White      |
		| Angus  | Andy       |
		| Andy   | ford       |
		| Jacob  | Angus      |
		+--------+------------+

第二节 外连接

		--左外连接(左连接)
		案例:要求查询每一个员工的上级领导名,要求显示每一个人的情况,包括最高领导(下表Andrew为最高领导)
		SQL99语法:mysql> select a.ename,b.ename as leadername from emp a left join emp b on a.mgr=b.empno;
		+--------+------------+
		| ename  | leadername |
		+--------+------------+
		| Jack   | ford       |
		| White  | Andrew     |
		| cathy  | merry      |
		| merry  | lucy       |
		| lucy   | cathy      |
		| Hellen | Jack       |
		| jenny  | ford       |
		| Andrew | NULL       |
		| ford   | White      |
		| Angus  | Andy       |
		| Andy   | ford       |
		| Jacob  | Angus      |
		+--------+------------+
		--右外连接(右连接)
                每一个左连接都可以转化为右连接

第三节 多表连接

		案例:要求查询每一个员工所在的部门名及薪水等级,最终显示员工名和部门名以及薪水等级
		SQL99语法:
		mysql> select
		-> e.ename,d.dname,s.sgrade
		-> from
		-> emp e
		-> join
		-> dept d
		-> on
		-> e.deptno=d.deptno
		-> join
		-> salgrade s
		-> on
		-> e.sal between s.lowsal and s.highsal;
		+--------+----------------+--------+
		| ename  | dname          | sgrade |
		+--------+----------------+--------+
		| Jack   | sales          |      3 |
		| White  | administration |      4 |
		| cathy  | planning       |      3 |
		| merry  | project        |      2 |
		| lucy   | Secretarys     |      1 |
		| Hellen | technical      |      1 |
		| jenny  | sales          |      6 |
		| Andrew | planning       |      7 |
		| ford   | sales_2        |      1 |
		| Angus  | sales          |      1 |
		| Andy   | sales_2        |      2 |
		| Jacob  | administration |      1 |
		+--------+----------------+--------+

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值