前面我们讲解的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
该操作符用于取得两个结果集的并集
会去掉结果集中的重复行