组合查询
结构:select 列1,列2
from 表名
where 过滤条件
group by 列1,列2
having 聚合函数(列1)=值
group by 列1,列2
子查询:嵌套在其他查询中的查询
子查询的计算列:
限制:嵌套在select语句中的SQL 语句要求查询只能是单列单行
a. from中的嵌套子查询
语法:select 列1,列2 from表名 where 列1=(子查询)
比较运算符:</>/<=/>=/=/!=
b.in 和not in
子查询运算符(all any exists)
第一:in
语法:select * from 表名 where 列in(子查询)
第二:not in
语法:select * from 表名 where 列in(子查询)
c.where中的嵌套:
第一:all 如果子查询返回的所有值都满足比较运算,那么比较表达式就为真,否是假
第二:any如果子查询返回的值,只要有一行满足比较运算,那么比较表达式就为真,否则所有的每一行都不满足就是假。
第三:exists有返回值就为真
d.where 子句的嵌套:
exists/ not exists
使用exists运算符时只要子查询有数据,则为真,因此子查询的结果是单列或多列或单行或多行都行
在group by 中使用子查询
与select中嵌套类似,要求子查询只能返回单行单列值
在having中
与where中嵌套类似,只能用到聚合函数
在order by中:与select中嵌套类似,要求子查询只能返回单行单列值
Union :是一种联合两条或以上查询的运算符
类似多条查询结果,相组合的效果
语法:select 列1,列2 from1
Union
select 列3,列4 from2
使用它:;结构是一样查询的列数,自动去除重复的行,结果使用拼接
Union all :与union不同的地方:保留重复行