文章目录
子查询简介
- 子查询指嵌套在查询内部,且必须始终出现在圆括号内
- 子查询可以包含多个关键字或条件
- 子查询的外层查询可以是增删改查
- 子查询返回值:可以返回标量、一行、一列或子查询
由比较运算符引发的子查询
- 比较符 (operand-操作谁 comparison_operator-操作关系 subquery-子查询)
=、>、<、>=、<=、<>、!=、<=> - 语法结构
operand comparison_operator (subquery) - 子查询返回多个结果时,用ANY、SOME或ALL修饰比较运算符
- 语法
operand comparison_operator ANY (subquery)
operand comparison_operator SOME (subquery)
operand comparison_operator ALL (subquery) - 举例
select * from 表名 where 字段名 = all(select from where) - 使用规则
- 语法
使用[NOT] IN 的子查询
IN:取值在子查询返回的结果里面
NOT IN:取值不在子查询返回的结果里面
!= ALL 或者<> ALL 运算符与 NOT IN 等价
- 语法结构
operand comparison_operator [NOT] IN (subquery) - 举例
select * from 表名 where 字段名 in(select from where)
使用[NOT] EXISTS 的子查询
如果子查询返回任何行,EXISTS将返回TRUE;否则返回FALSE
使用比较少
使用INSERT…SELECT插入记录
用于将子查询查出来的值存入表中
- 语法
insert [into] 表名 (列名,…) select …
多表更新
参照其他表,更新本表的记录
- 语法
update 表1 连接符 表2 on 表的条件 set 表1.列1 =表2.列1,表1.列2 =表2.列2
使用CREATE TABLE…SELECT创建表
在创建数据表的同时,将查询的结果写入数据表
- 语法
create table 表名 (列 数据类型,列 数据类型, …)select …