前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够。
mysql 万物皆表
文章目录
- 1. 子查询与查询回顾
- 员工表:
- 子查询:
- every derived table must have its own alias
- in
- all
- any
- 2. 多表笛卡尔积
- 部门表:
- 笛卡尔积
- 3. 自连接
- 4. 合并查询
- union
- union all
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. 多表笛卡尔积
部门表:
我们对员工表和部门表做整合。
笛卡尔积
将两张表数据穷举组合,我们称之为笛卡尔积。
3. 自连接
一个表可以跟自己笛卡尔积吗?可以。
子查询的第二个示例,也可以用自连接的方式查找:
4. 合并查询
合并多个select的执行结果
union
该操作符用于取得两个结果集的并集
会去掉结果集中的重复行