分组数据里面有一个很总要的语法,就是GROUP BY子句语法,它可以将表中的数据分成若干组:
- 在SELECT 列表中所有未包含在组函数中的列都应该包含在 GROUP BY 子句中。
- 不能在 WHERE 子句中使用组函数。
- 可以在 HAVING 子句中使用组函数。
使用 HAVING 过滤分组:
- 行已经被分组;
- 使用了组函数;
- 满足HAVING 子句中条件的分组将被显示。
从上面截图可以看出GROUP BY和HAVING是经常一起连用的,HAVING后面是组函数。
通常在查询数据时要过滤或者对行进行排序,使用WHERE 子句,将不满足条件的行过滤掉。
在过滤时通常要用到操作符来过滤,常见的操作符有:
- 比较运算:=,>,>=,<,<=,<>(!=);
- 其它运算:BETWEEN…AND…,IN(set),LIKE,IS(NOT)NULL,ESCAPE;
- 逻辑运算:AND,OR,NOT;
- 如上代码,使用 BETWEEN 运算来显示在一个区间内的值。
- 使用 IN运算显示列表中的值;
- 使用 LIKE 运算选择类似的值:选择条件可以包含字符或数字:
(1)% 代表零个或多个字符(任意个字符);
(2)_ 代表一个字符。
(3)‘%’和‘_’可以同时使用。
(4)可以使用 ESCAPE 标识符 选择‘%’和 ‘_’ 符号。
ESCAPE(回避特殊符号的转义符):例如:将[%]转为[\%]、[_]转为[\_],然后再加上[ESCAPE ‘\’] 即可。
逻辑运算符:
AND要求并的关系为真;OR要求或关系为真,NOT逻辑否。
- 排序:使用ORDER BY子句排序。
- ASC(ascend): 升序
- DESC(descend): 降序
- ANNSAL(annsal) : 按别名排序
- ORDER BY 子句在SELECT语句的结尾。
SET操作符:
- 可以个查询用 SET 操作符连接组成一个新的查询
- UNION/UNION ALL
- INTERSECT
- MINUS
- 排序:ORDER BY
- UNION操作符返回两个查询的结果集的并集。
- UNION ALL 操作符返回两个查询的结果集的并集。对于两个结果集的重复部分,不去重。
- INTERSECT 操作符返回两个结果集的交集。
- MINUS操作符:返回两个结果集的差集。
注意事项:
- 在SELECT 列表中的列名和表达式在数量和数据类型上要相对应
- 括号可以改变执行的顺序
- ORDER BY 子句:
- 只能在语句的最后出现
- 可以使用第一个查询中的列名, 别名或相对位置