MySQL复合查询 & 内外连接

本文详细介绍了SQL中的多表查询、内连接、外连接、自连接和子查询,包括单行和多行子查询、多列子查询,以及如何使用union和unionall合并查询结果。通过实例展示了如何在实际开发中处理不同表之间的数据关联和筛选。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言:

多表查询:

显示部门号为10的部门名,员工名和工资 :

显示各个员工的姓名,工资,及工资级别:

 自连接 

显示员工FORD的上级领导的编号和姓名(mgr是员工领导的编号)

子查询 

单行子查询:

多行子查询: 

多列子查询: 

在from子句中使用子查询

合并查询 

union:

将工资大于2500或职位是MANAGER的人找出来:

union all:

表的内连和外连 

内连接: 

显示SMITH的名字和部门名称

外连接: 


前言:

前面文章分享了mysql对一张表的查询,但在实际开发中是远远不够的,本篇博客提供sql数据,大家可以到本地MySQL执行语法后,跟着文章一起练练手

多表查询:

实际开发过程中,数据往往来自不同的表,所以需要多表查询。

本篇博客用一个简单的公司管理系统来作为分享,其中有三张表 EMP,DEPT,SALGREADE来演示如何多表查询

显示雇员名、雇员工资以及所在部门的名字因为上面的数据来自EMP和DEPT表,因此要联合查询

先看看EMP表:

再看一眼DEPT表:

对他们进行联合查询 select *from EMP,DEPT:

select *from EMP,DEPT;

 

可以得出结论,如果没有附加条件的联合查询,呈现出的结果就是两张表的笛卡尔积

但是其实我们只要emp表中的deptno = dept表中的deptno字段:

select EMP.ename, EMP.sal, DEPT.dname from EMP, DEPT where EMP.deptno =
DEPT.deptno;

显示部门号为10的部门名,员工名和工资 :

select DEPT.dname,EMP.ename,EMP.sal from EMP,DEPT 
where EMP.deptno = DEPT.deptno and EMP.deptno = 10;

显示各个员工的姓名,工资,及工资级别:

先看一下工资级别表SALGRADE:

 

select EMP.ename,EMP.sal,salgrade.grade from EMP,SALGRADE 
where EMP.sal between SALGRADE.losal and SALGRADE.hisal;

 


 

 自连接 

 自连接 是指在同一张表连接查询:

案例:

显示员工FORD的上级领导的编号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Obto-

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

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

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

打赏作者

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

抵扣说明:

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

余额充值