MySQL复合查询

前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够。


mysql 万物皆表

1. 子查询与查询回顾

员工表:

在这里插入图片描述

子查询:

select 里面可以嵌套 select

找工资最高的人的信息: 工资最高是多少 -> 谁的工资是这个工资
在这里插入图片描述

找某个员工领导的工号: 这个员工领导是谁 -> 这个人工号是多少

在这里插入图片描述

回顾聚合:

在这里插入图片描述

every derived table must have its own alias

“每一个获得的表必须有它自己的别名”

在做多表查询时,子查询必须指定名称。

在这里插入图片描述

in

select * from 表 where 列名 in (select ...);

试着分析下如下语句:

在这里插入图片描述

其实是这样子的:

select 出的表重命名后与 dept表 做了笛卡尔积。

在这里插入图片描述

all

all 和 any 用法同 in

any

这里任意其实是存在符合条件的即可的意思。


2. 多表笛卡尔积

部门表:

我们对员工表和部门表做整合。

在这里插入图片描述

笛卡尔积

将两张表数据穷举组合,我们称之为笛卡尔积。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

内外连接

如果想让笛卡尔积并且设置条件后左侧的表完全显示,这个叫做左外连接,可以阅读:MySQL表的内外连接


3. 自连接

一个表可以跟自己笛卡尔积吗?可以。

在这里插入图片描述

子查询的第二个示例,也可以用自连接的方式查找:

在这里插入图片描述


4. 合并查询

合并多个select的执行结果

union

该操作符用于取得两个结果集的并集

会去掉结果集中的重复行

在这里插入图片描述

union all

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值