子查询

子查询

指嵌套在其他SQL语句中的select语句,也称为嵌套查询;
在执行时,由里向外,先处理子查询,再将子查询的返回结果用于其父语句(外部语句)的执行;

子查询作用:

  • 在insert或create table语句中使用子查询,可以将子查询的结果写入到目标表中;
  • 在update语句中使用子查询可以修改一个或多个记录的数据;
  • 在delete语句中使用子查询可以删除一个或多个记录;
  • 在where和having子句中使用子查询可以返回的一个或多个值;

注意: 在DDL语句中的子查询可以带有order by子句,而在DML语句和DQL语句中使用子查询时不能带有order by子句;

单行子查询

单行单列子查询:

单行单列子查询:指子查询只返回一行数据,而且只返回一列的数据;
运算符:=><>=<=!= 

单行多列子查询: 指子查询返回一行数据,但是包含多列数据;
多列数据进行比较时,可以成对比较,也可以非成对比较;
成对比较要求多个列的数据必须同时匹配;
非成对比较则不要求多个列的数据同时匹配;

多行子查询

多行单列子查询:

多行单列子查询:指返回多行数据,且只返回一列的数据;
运算符:=><>=<=!=

多行多列子查询: 指子查询返回多行数据,并且是多列数据;

关联子查询

无关子查询: 子查询在执行时并不需要外部父查询的信息;
相关子查询: 如果子查询在执行时需要引用外部父查询的信息;
当一个子查询必须对每个由主查询考虑的候选行返回一个不同的结果或结果集时,可以使用相关子查询;在相关子查询中经常使用exists或not exists谓词来实现;如果子查询返回结果,则条件为true,如果子查询没有返回结果,则条件为false;也可以使用any和all进行运算;
无关子查询与相关子查询的区别:
无关子查询中,内部的select查询首先执行并且只执行一次,返回值被主查询使用;
相关子查询中,对由外查询考虑的每个候选行都执行一次,换句话说,内查询由外查询驱动;
相关子查询的执行:
取得候选行(由外查询取回);
用候选行的值执行内查询;
用来自内查询的值确认或取消候选行;
重复前三步直到无剩余的候选行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值