欢迎光临散文网 会员登陆 & 注册

mysql_子查询

2023-02-23 19:02 作者:苏喆i  | 我要投稿

子查询指一个查询语句嵌套在另一个查询语句内部的查询


由一个具体的需求,引入子查询:

一.子查询的基本使用

>称谓的规范:外查询(或主查询)、内查询(或子查询)

> 子查询(内查询)在主查询之前一次执行完成。

> 子查询的结果被主查询(外查询)使用 。

注意事项:

1.子查询要包含在括号内

2.将子查询放在比较条件的右侧

3.单行操作符对应单行子查询,多行操作符对应多行子查询

子查询的分类

角度1:从内查询返回的结果的条目数

单行子查询  vs  多行子查询

角度2:内查询是否被执行多次

相关子查询  vs  不相关子查询

 比如:相关子查询的需求:查询工资大于本部门平均工资的员工信息。

            不相关子查询的需求:查询工资大于本公司平均工资的员工信息。

子查询的编写技巧(或步骤):① 从里往外写  ② 从外往里写

二.单行子查询

单行操作符: =  !=  >   >=  <  <= 

HAVING 中的子查询:

> 首先执行子查询。 

> 向主查询中的HAVING子句返回结果。

CASE中的子查询:

在CASE表达式中使用单列子查询

三.多行子查询

多行子查询的操作符: IN   ANY  ALL  SOME(同ANY)

in: 属于子查询结果中的任意一个就行

any和all往往可以用其他查询代替

举例:

四.相关子查询

(上面写的案例都是不相关子查询)

1.相关子查询执行流程:

如果子查询的执行依赖于外部查询,通常情况下都是因为子查询中的表用到了外部的表,并进行了条件 关联,因此每执行一次外部查询,子查询都要重新计算一次,这样的子查询就称之为 关联子查询

2.代码示例

3.EXISTS 与 NOT EXISTS关键字

五.抛一个思考题

自连接和子查询两种方式有好坏之分吗?

自连接方式好!

理解:子查询实际上是通过未知表进行查询后的条件判断,而自连接是通过已知的自身数据表 进行条件判断,因此在大部分 DBMS 中都对自连接处理进行了优化。

六.练习




mysql_子查询的评论 (共 条)

分享到微博请遵守国家法律