Aggregate 函数(聚合函数)
聚合:计算从列中取得的值,返回一个单一的值,故称聚合
AVG() — 返回平均值
COUNT() — 返回行数
FIRST() — 返回第一个记录的值 (MS Access)
LAST() — 返回最后一个记录的值
MAX() — 返回最大值
MIN() — 返回最小值
SUM() — 返回总和
Scalar 函数(标准的,基本的 函数)
基本函数: 基于输入值,返回一个单一的值
UCASE() — 将某个字段转换为大写
LCASE() — 将某个字段转换为小写
MID() — 从某个文本字段提取字符,MySql 中使用
SubString(字段名,1,end) — 从某个文本字段提取字符
LEN() — 返回某个文本字段的长度
ROUND() — 对某个数值字段进行指定小数位数的四舍五入
NOW() — 返回当前的系统日期和时间
FORMAT() — 格式化某个字段的显示方式
- AVG()
SELECT AVG(column_name) FROM table_name;
亦可以当作一个结果来用,例如:
SELECT * FROM table1
WHERE column_name > (SELECT AVG(column_name1) FROM table_name);
- COUNT()
返回匹配指定条件的行数 即 返回指定列的值的数目(NULL 不计入)
SELECT COUNT(column_name) FROM table_name;
COUNT(*) — 则返回表中的记录数:
COUNT(DISTINCT column_name) — 则返回指定列的不同值的数目
-
FIRST(),LAST()
分别获取第一条记录和最后一条记录
只有 MS Access 支持 FIRST(),LAST() 函数
Mysql中 limit 1 获取第一条,倒叙排列 然后 limit 1 为最后一条获取。 -
MAX()
返回指定列的最大值
SELECT MAX(column_name) FROM table_name;
- MIN()
返回指定列的最小值
SELECT MIN(column_name) FROM table_name;
- SUM()
返回数值列的总数
对指定字段做累加操作
SELECT SUM(column_name) FROM table_name;
SELECT SUM(num_count) AS total_num FROM table_name;
- GROUP BY & HAVING
GROUP BY 见另一篇文章 点此跳转
Having 是为了聚合函数用作条件查询
where 位于 Group By之前使用,Having 用于 Group By 之后。
聚合函数(avg、sum、max、min、count),不能作为条件放在where之后,可以放在having之后
- UCASE()
把字段的值转换为大写
SELECT UCASE(column_name) FROM table_name;
- LCASE()
把字段的值转换为小写
SELECT LCASE(column_name) FROM table_name;
- MID()
用于从文本字段中提取字符
SELECT MID(column_name,start[,length]) FROM table_name;
start : 开始位置
length:截取长度
Oracle 中没有 MID 函数,有 substr 函数有类似功能
例如:
SELECT MID(name,1,3) AS title
FROM table_name;
结果为取前三个字符。
- LEN()
返回文本字段中值的长度
SELECT LEN(column_name) FROM table_name;
- ROUND()
把数值字段舍入为指定的小数位数
SELECT ROUND(column_name,decimals) FROM table_name;
示例:
decimals 不添加时默认保留到整数位
mysql> SELECT ROUND(-1.11);
-> -1
mysql> SELECT ROUND(-1.56);
-> -2
mysql> SELECT ROUND(1.57);
-> 2
mysql> SELECT ROUND(1.57,1);
-> 1.6
- NOW()
返回当前系统的日期和时间
SELECT NOW() FROM table_name;
或
SELECT name, Now() AS t_name FROM table_name;
- FORMAT()
用于对字段的显示进行格式化
SELECT FORMAT(column_name,format) FROM table_name;
format: 格式
例如:
SELECT name, DATE_FORMAT(Now(),'%Y-%m-%d') AS t_name
FROM table_name;
UNION 以及 UNION ALL区别
union会自动压缩多个结果集合中的重复结果
union all会将将所有的结果全部显示出来,不管是不是重复。如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字
UNION 以及 UNION ALL 会将两个子查询的结果合并到一起
格式例如:
( (select .....)UNION ALL (select......) )
最终的结果可以当作一个集合来看,最终从该集合查询也可以
例如:
select * from ( (select …) UNION ALL (select…) ) where …