SQL中包含七种类型的函数:聚合函数、转换函数、日期函数、数字函数、字符串函数、系统函数、文本和图像函数。此处只介绍最常用的四类。
数字函数:执行算术运算(对数字执行代数运算)
--
绝对值函数
ABS() 返回数值表达式的绝对值
--
向上取整函数
CEILING() 返回大于或等于数值表达式的最小值
--
向下取整函数
FLOOR() 返回小于或等于数值表达式的最大整数
--
四舍五入
ROUND() 随机返回的到之间的近似浮点值,可以对seed指定为整数表达式
#求--绝对值函数 ABS()
SELECT ABS(-3);
#向上取整函数CEILING()
SELECT CEILING(2.3),CEILING(2.5),CEILING(2.8);
SELECT CEILING(-2.3),CEILING(-2.5),CEILING(-2.8);
#向下取整函数 FLOOR()
SELECT FLOOR(2.3),FLOOR(2.5),FLOOR(2.8);
SELECT FLOOR(-2.3),FLOOR(-2.5),FLOOR(-2.8);
#四舍五入 ROUND()
SELECT ROUND(2.3),ROUND(2.5),ROUND(2.8);
SELECT ROUND(2.333,2),ROUND(2.555,2),ROUND(2.888,2);
SELECT ROUND(2.333,0),ROUND(2.555,0),ROUND(2.888,0);
SELECT ROUND(222.333,-2),ROUND(2.555,-2),ROUND(2.888,-2);
字符串函数:对字符串、二进制数据或表达式执行操作(可用于binary和varbinary数据类型列,但主要用于char和varchar数据类型)
--拼接字符串 CONCAT()
SELECT CONCAT('I',' LOVE ','SQL');
--转换为大写字母 UPPER()
--转换为小写字母 LOWER()
#大小写转换
SELECT LOWER('I Love SQL');
SELECT UPPER('I Love SQL');
--替换 REPLACE(str,'str_par','new_str')str表示原字符串,str_par表示需要被替换的部 分 new_str 表示替换后的内容
SELECT REPLACE('I Love SQL','SQL','Java');
--截取字符串 SUBSTRING(str,n,m)str表示被截取的字符串 n 表示从第几个开始 m表示截取 的长度
SELECT SUBSTRING('I LOVE SQL',3,4);
--反转 reverse(str) str表示需要反转的字符串
SELECT REVERSE('I Love SQL');
时间和日期函数 :处理日期和时间(由于不能直接执行算术函数,所以日期函数很重要)
#当前日期 CURRENT_DATE()
SELECT CURRENT_DATE();
SELECT CURRENT_TIME()
#获取当前日期时间 NOW()
SELECT NOW();
#获取本地日期 LOCALTIME()
SELECT LOCALTIME();
#获取日期的某一部分 YEAR(NOW())
SELECT YEAR(NOW()) as '年', MONTH(NOW()) as '月' , DAY(NOW()) as '日'; SELECT HOUR(NOW()) as '时', MINUTE(NOW()) as '分' , SECOND(NOW()) as '秒';
聚合函数及分类函数:返回汇总值(对其应用的每行集返回一个值)
--计数函数 COUNT() !!!!!!!!
#查询成绩表中一共有多少数据
SELECT count(*) FROM result;
SELECT count(StudentNo) FROM result;
SELECT count(1) FROM result;
#求和 求平均值
#统计每个学生他的各科成绩之和 --group by
SELECT StudentNo '学号', SUM(StudentResult) '总分' From result GROUP BY
StudentNo;
#统计每个学生的各科平均分
SELECT StudentNo '学号',SUM(StudentResult) '总分', AVG(StudentResult) '平均分' From result GROUP BY StudentNo;
#筛选 HAVING 对已经查询出的结果做出筛选
SELECT StudentNo '学号',SUM(StudentResult) '总分', AVG(StudentResult) '平均分'
From result
GROUP BY StudentNo
HAVING `平均分` > 80
ORDER BY `平均分` DESC;