MySQL学习总结(四)常用函数之数学函数/字符串函数/日期和时间函数/系统信息函数/聚合函数

MySQL官方参考文档(函数):https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html

一、数学函数

1. 求绝对值

SELECT ABS(-9);#9

2. 向上取整

SELECT CEILING(9.4);#10

3. 向下取整

SELECT FLOOR(8.3);#8

4. 随机数

返回一个0-1之间的随机数

SELECT RAND();

5. 符号函数

负数返回-1,正数返回1,0返回0

SELECT SIGN(0);#0

二、字符串函数

1.返回字符串包含的字符数

SELECT CHAR_LENGTH('Hello,World!');#12

2.合并字符串

SELECT CONCAT('你','好','世界','!');#你好世界!

3.替换字符串

  • 方式一
SELECT INSERT('hello,world',7,11,'friend');

在这里插入图片描述

  • 方式二
SELECT REPLACE('hello,world','hello','goodbye');#将hello替换为goodbye

在这里插入图片描述
方式二应用:
查询将姓张的同学,改成赵

SELECT REPLACE(studentname,'张','赵') AS 新名字
FROM student WHERE studentname LIKE '张%';

在这里插入图片描述

4.大小写转变

SELECT LOWER('Hello,World!'); /*全变为小写*/
#hello,world!
SELECT UPPER('hello,world!'); /*全变为大写*/
#HELLO,WORLD!

5.截取字符串

  • 从左边截取
SELECT LEFT('hello,world',5); 

在这里插入图片描述

  • 从右边截取
SELECT RIGHT('hello,world',5);

在这里插入图片描述

  • 截取指定长度的字符串
SELECT SUBSTR('今天的天气真好',4,2); #截取字符串,开始和长度

在这里插入图片描述

6.反转字符串

SELECT REVERSE('hello,world'); 

在这里插入图片描述

三、日期和时间函数

1.获取当前日期

  • 方式一
SELECT CURRENT_DATE();
  • 方式二
SELECT CURDATE(); 

2.获取当前日期和时间

  • 方式一
SELECT NOW(); 
  • 方式二
SELECT LOCALTIME(); 
  • 方式三
SELECT SYSDATE();

3.获取年月日、时分秒

SELECT YEAR(NOW());
SELECT MONTH(NOW());
SELECT DAY(NOW());
SELECT HOUR(NOW());
SELECT MINUTE(NOW());
SELECT SECOND(NOW());

四、系统信息函数

SELECT VERSION(); #版本
SELECT USER(); #用户

五、聚合函数

函数名称 描述
COUNT() 返回满足SELECT条件的记录总和数,如SELECT COUNT(*)…(不推荐使用*,效率低)
SUM() 通常为数值字段或表达式列作统计,返回一列的总和
AVG() 通常为数值字段或表达式列作统计,返回一列的平均值
MIN() 可以为数值字段、字符字段或表达式列作统计,返回最大的值
MAX() 可以为数值字段、字符字段或表达式列作统计,返回最小的值

1.COUNT()

#COUNT:非空的
SELECT COUNT(studentname) FROM student;
SELECT COUNT(*) FROM student;
SELECT COUNT(1) FROM student;  #推荐

在这里插入图片描述

2.SUM()、AVG()、MIN()、MAX()

SELECT SUM(studentresult) AS 总和 FROM result;
SELECT AVG(studentresult) AS 平均分 FROM result;
SELECT MAX(studentresult) AS 最高分 FROM result;
SELECT MIN(studentresult) AS 最低分 FROM result;

案例
查询不同课程的平均分、最高分、最低分

SELECT subjectname,AVG(studentresult) AS 平均分,MAX(studentresult) AS 最高分,MIN(studentresult) AS 最低分
FROM result AS r
INNER JOIN SUBJECT AS s
ON r.subjectno = s.subjectno
GROUP BY r.subjectno #按照科目分组
HAVING 平均分>80;
/*
WHERE写在GROU BY前面;
要是放在分组后面的筛选,要使用HAVING..
*/

MySQL学习总结(四)常用函数之数学函数/字符串函数/日期和时间函数/系统信息函数/聚合函数_第1张图片

你可能感兴趣的:(#,MySQL)