04--MySQL函数的使用

1、SQL函数的使用

当我们学习编程语言的时候,经常会遇到函数。函数的好处是,它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了编写代码的效率,又提高了可维护性。在SQL中函数主要要对数据进行处理!

常用的SQL函数

数学函数、字符串函数、日期函数、转换函数、聚合函数/聚集函数/分组函数

1.1 数学函数

-- 向上取整
select ceil(12.1);
select ceil(-12.2);

-- 向下取整
select floor(12.9);
select floor(-12.9);

-- 四舍五入
-- 一个参数
select round(12.4);
select round(12.5);
select round(-12.4);
-- 两个参数
select round(12.341,2);
select round(12.256,2);
select round(25.1,-1);

-- 随机数
select rand();

-- 次幂power(x,y) x的y次幂
select power(4,2);

1.2 字符串函数

-- 拼接字符串
select concat('aaa','bbb');
select concat(first_name,last_name) '姓名' from stu;

-- 查看字符串字节长度  中文在utf8占3个字节,在gbk占2个字节
select length('王强');
select length('abcde');

-- 查看字符串字符长度
select char_length('王强');
select char_length('abcde');

-- 截取字符串 substring(str,startIndex,length)
select substring('abcdefg',1,3);

-- 替换字符串 replace(str,要替换的字符串,替换成的字符串)
select replace('mamaabcdefg','a','*');

-- 去前后留白
select trim('  scsecs  ');

1.3 日期函数

-- 获取当前系统时间
select sysdate();
select now();

-- 给日期加上或者减去几天、几月、几年
select adddate(sysdate(),interval 5 day);
select date_add(sysdate(),interval 5 day);
select date_add(sysdate(),interval 5 month);
select date_add(sysdate(),interval 5 year);

select date_sub(sysdate(),interval 5 day);
select date_add(sysdate(),interval -5 day);

-- 日期之间的减法
select datediff(sysdate(),date_sub(sysdate(),interval 5 day));		-- 相差的是天数

select timestampdiff(year,'2023-01-01','2024-01-01');		-- 1
select timestampdiff(month,'2023-01-01','2024-01-01');		-- 12
select timestampdiff(day,'2023-01-01','2024-01-01');		-- 365

-- 获取对应的年月日时分秒
select year('2024-01-01');
select year(now());
select month(now());
select day(now());
select hour(now());
select minute(now());
select second(now());

1.4 转换函数

--  解析 		日期字符串解析为日期
select str_to_date('2024-01-04','%Y-%m-%d');
select str_to_date('2024-01-04 14:33:33','%Y-%m-%d %H:%i:%s');

--  格式化	日期格式化为日期字符串
select date_format(now(),'%Y-%m-%d');
select date_format(now(),'%Y-%m-%d %H:%i:%s');

1.5 聚合函数/分组函数

聚合函数

说明

count(*)| count(主键)

计算表中的总记录数

max

计算最大值

min

计算最小值

sum

计算和

avg

计算平均值

聚合函数的计算,排除null值。

分组函数还有另一个名字:多行处理函数。

多行处理函数的特点:输入多行,最终输出的结果是1行。

分组函数自动忽略NULL。

分组函数不可直接使用在where子句当中

group by是在where执行之后才会执行的。

-- count()函数的使用
select count(*) from stu;		-- 102		查询所有记录
select count(id) from stu;	-- 102		查询主键记录
select count(chinese) from stu;		-- 101 		查询非主键字段,含有null,

-- max()函数的使用
-- 查询语文成绩最高的学生
select name,max(chinese) from stu;

-- min()函数的使用
-- 查询数学成绩最低的学生
select name,min(math) from stu;

-- sum()函数的使用
-- 查询英语成绩的总分
select sum(english) from stu;

-- avg()函数的使用
-- 查询班级学生的各科平均分
select round(avg(ifnull(chinese,0)),2) '语文',round(avg(math),2) '数学',round(avg(english),2) '英语' from stu;

注意:分组函数一般都会和group by联合使用,这也是为什么它被称为分组函数的原因。并且任何一个分组函数(count sum avg max min)都是在group by语句执行结束之后才会执行的。

当一条sql语句没有group by的话,整张表的数据会自成一组。

当一条语句中有group by的话,select后面只能跟分组函数和参与分组的字段。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

憨憨浩浩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值