多表查询

1.啥叫多表查询?

我要查询的信息 a表有一些 b 表也有一些

2.多表查询方式

  • 内连接
    • 隐式内连接
    • 显式内连接
  • 外连接
    • 全连接 full outner
    • Left outner 左外连接 左表过滤
    • Right outner 右外连接 右表过滤

2.1.1啥叫隐式内连接

语法:select *from work1,work2 where 连接条件

没有限制条件就会得到笛卡尔积

2.1.2啥叫显式内连接

语法:select *from work1 (inner)join work2 on 连接条件

2.1.3外连接

左外连接(left [outer] join):查询出 join 左边表的全部数据,右边的表不能匹配的数据使用 null

来填充数据

右外连接(right [outer] join):查询出 join 右边表的全部数据,左边的表不能匹配的数据使用

null 来填充数据

全外连接(full [outer] join):MySQL 不支持,可以通过 union + 左右连接查询来完成

3.如何查询

  • 如果表有别名,则不能再使用表的真名

  • MySQL 执行关联查询的过程:MySQL 先在一个表中循环取出单条数据,然后再嵌套循环到下一个表中寻找匹

配的行,依次下去,直到找到所有表中匹配的行为止。然后根据各个表匹配的行,返回査询中需要的各个列(嵌

套循环关联)

4.子查询

子查询必须要位于圆括号中

不能把同一个表既用于子查询的 from 子句,又用于更新目标,如

update t1 set column2 = (select max(column1) from t1); 
update t1 set column2 = (select max(column1) from t1); 

4.1子查询的分类

  • 标量子查询:子查询返回的结果是一个数据(一行一列),当成一个标量值使用,可以使用单行记录比较运算符

  • 列子查询:返回的结果是一列(一列多行),当成一个值列表,需要使用 in、any 和 all 等关键字,any

和 all 可以与 >、>=、<、<=、<>、= 等运算符结合使用 in:与列表中的任意一个值相等 any:与列表中

的任意一个值比较,=any、>any、all、

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容