SQL函数基础知识整理
聚合函数:
-
AVG():返回平均值
语法:
select avg(列名) from 表名
(查询某表某一列数据的平均值) -
COUNT():返回行数
语法:
select count(*) from 表名
select count(列名) from 表名
(查询某表中数据行数)(NULL 不计入) -
FIRST():返回第一个记录的值
语法:
select first(列名) from 表名
(返回某表中某列的第一条数据) -
LAST():返回最后一个记录的值
语法:
select last(列名) from 表名
(返回某表中某列最后一条记录数据) -
MAX():返回最大值
语法:
select max(列名) from 表名
(返回某表中某列数据中的最大值) -
MIN():返回最小值
语法:
select min(列名) from 表名
(返回某表中某列数据的最小值) -
SUM():返回总和
语法:
select sum(列名) from 表名
(返回某表中某列数据的总和)
计数函数:
UCASE():将某个字段转换为大写
LCASE():将某个字段转换为小写
MID():将某个文本字段提取字符,MySql中使用
SubString(字段,1,end):从某个文本字段提取字符
LEN():返回某个文本字段的长度
ROUND():对某个数值字段进行指定的小数位数的四舍五入
NOW():返回当前的系统日期和时间
FORMAT():格式化某个字段的显示方式
-
group by :用于聚合函数根据一个或多个列对结果集进行分组
语法:
select * from 表名 where 列名1 > 10 group by 列名2
(返回某表中列1大于10的数据按照列2正序排列)
(asc正序排列,desc倒序排列,默认为正序) -
having:用与聚合条件查询(having后面可以使用函数条件)
语法:
select 列名1 from 表名 having sum(列名2) < 2000
(查询列名2之和小于2000得列1的值)
例:
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000
(查找OrderPrice金额之和少于 2000 的Customer)
-
UCASE() :把字段的值转换为大写
语法:
select UCASE(列名1) from 表名
(从某表中查询列1的信息并全部转换为大写) -
LCASE():把字段的值转换为小写
语法:
select LCASE(列名1) from 表名
(从某表中查询列1的信息并全部转换为小写) -
MID():从文本中提取字符
语法:
select MID(列名1,start[,length]) from 表名
(从某表中查询列1的信息并截取从第start起(不包含start)至length长得字符) -
LEN():返回文本中字段值的长度
语法:
select LEN(列名1) from 表名
(从某表中查询列1的值得长度) -
ROUND():把数值字段舍入为指定的小数位数
用法:
select ROUND(列名1,decimals) from 表名
(从某表中查询列1并保留decimals位小数) -
NOW():返回当前的日期和时间
用法:
select 列名1,NOEW() from 表名
(从某表中查询列1并添加一列数据为当前时间日期) -
FORMAT():用于对字段的显示进行格式化
用法:
select FORMAT(列名1,format) from 表名
(从某表中查询列1并将其使用format格式进行格式化)
例:
SELECT ProductName, UnitPrice, FORMAT(Now(),‘YYYY-MM-DD’) as PerDate
FROM Products -
NVL(表达式1,表达式2): 如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值
用法1:
select NVL(列名1,值1) from 表名
(从表中查询列1,如果列1的值为空则展示未值1,不为空则展列1的值)
用法2:(nvl函数可以作为where查询条件)
select 列2 from 表名 where NVL(列名1,值1) = 1
(当值1的值为1,从表中查询列1值为null的列2的信息) -
where与having的区别:
where:
where是一个约束声明,使用where来约束来自数据库的数据;
where是在结果返回之前起作用的;
where中不能使用聚合函数。
having:
having是一个过滤声明;
在查询返回结果集以后,对查询结果进行的过滤操作;
在having中可以使用聚合函数。
执行顺序:
where 早于 group by 早于 having
where子句在聚合前先筛选记录,也就是说作用在group by 子句和having子句前,而 having子句在聚合后对组记录进行筛选
(sql执行顺序:From ->Where ->Group By->Order By)