MySQL之函数

目录

一、函数定义

 二、常用函数

1、日期函数

2、字符串函数

3、数字函数

 三、条件判断函数

 四、聚合函数(SUM/COUNT/AVG/MAX/MIN)

五、合并(union)


一、函数定义

   1.类似Java定义方法
   2.可以带参数
   3.必须有返回值(一行一列) ,重点:java方法可以没有返回值,数据库函数必须要有返回值
      select max(score) from sc;
   4.函数可以嵌套到sql语句中
     注:存储过程则不可以
   5.函数可嵌套调用  round(avg)

 二、常用函数

1、日期函数

 1) NOW():获取当前日期和时间
	 select now();
   2) DAY():获取日期中的天
select day(now());
   3) MONTH():获取日期中的月
	 select month(now());
   4) YEAR():获取日期中的年
	 select year(now());
   5) 日期转换函数DATE_FORMAT()/STR_TO_DATE()
   select now(),DATE_FORMAT(now(),'%y年%m月%d日')
   DATE_FORMAT():将日期转换成字符串
   STR_TO_DATE():将字符串转换成日期
select STR_TO_DATE('2022-06-08,','%Y-%m-%d')
   查询各学生的年龄,只按年份来算
	 select s.*,year(now())-YEAR(s.sage)from  t_student s;
	 select *from  t_student 
   按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一
	 select s.*,year(now())-year(s.sage),+if(month(now())<month(s.sage),-1,0)from t_student s;
   查询本月过生日的学生
	 select * from t_student where month(now())=month(sage);
   查询下月过生日的学生
	 	 select * from t_student where month(now())+1=month(sage);

	 select * from t_student where month(date_add(now(),interval 1 month ))=month(sage);

     date_add(NOW(), interval 1 MONTH)

5)日期转换函数DATE_FORMAT()/STR_TO_DATE()的结果

2、字符串函数

   1) UPPER()/LOWER():大小写互转
	 select UPPER('my name is zhuxinwen')
	 select lower('HAO NAN REW WEWEN')
   2) REPLACE():搜索并替换字符串中的子字符串
	 select uuid(),REPLACE(Uuid(),'-','-' )
   3) SUBSTRING():从具有特定长度的位置开始的最一个子字符串
	 select substring ('zahng san is person',1,5)
	 	 select substring ('zahng san is person',5)

   4) TRIM():去除前后空格
	 
   5) LENGTH():获取字符串长度
	 select length('zhang san is a person'),length(trim('zhang san is a person'))
   6) CONCAT():合并字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个

  

4和5运行结果

3、数字函数


   1)FLOOR:向下取整
	 
   2)CEIL: 向上取整
	 
   3)ROUND:四舍五入
     select FLOOR(-3.14),floor(3.14), CEIL(-3.14),ceil(3.14);
-4,3,-3,4

 三、条件判断函数


   1)IF(expr,v1,v2)
   如果expr是TRUE则返回v1,否则返回v2
select 
s.sid,s.sname,
sum(if(sc.cid='01',sc.score,0))语文,
sum(if(sc.cid='02',sc.score,0))数学,
sum(if(sc.cid='03',sc.score,0))英语
from 
t_student s left join t_score sc on s.sid = sc.sid 
GROUP BY s.sid,s.sname;

select 
s.sid,s.sname,
sum(case when sc.cid='01'then sc.score end)语文,
sum(case when sc.cid='02'then sc.score end)数学,
sum(case when sc.cid='03'then sc.score end)英语
from t_student s left join t_score sc on  s.sid =sc.sid
GROUP BY s.sid ,s.snme

   2)IFNULL(v1,v2)
   如果v1不为NULL,则返回v1,否则返回v2

   3)CASE expr WHEN v1 THEN r1 [WHEN v2 THEN v2] [ELSE rn] END
   如果expr等于某个vn,则返回对应位置THEN后面的结果,如果与所有值都不想等,则返回ELSE后面的rn
     SELECT
		s.*,
		sum(if(sc.cid='01',sc.score,0)) 语文,
		sum(if(sc.cid='02',sc.score,0)) 数学,
		sum(if(sc.cid='03',sc.score,0)) 英语
	from
	t_student s left join t_score sc on s.sid=sc.sid
	GROUP BY s.sid,s.sname;
	
	SELECT
		s.sid,s.sname,
		sum(case when sc.cid='01' then sc.score end) 语文,
		sum(case when sc.cid='02' then sc.score end) 数学,
		sum(case when sc.cid='03' then sc.score end) 英语
	from
	t_student s left join t_score sc on s.sid=sc.sid
	GROUP BY s.sid,s.sname;

3的运行结果

 四、聚合函数(SUM/COUNT/AVG/MAX/MIN)

 1) SUM():求和。常与GROUP BY一起使用,也可单独使用
   2) AVG():求平均值。常与GROUP BY一起使用,也可单独使用
   3) MAX():求最大值。常与GROUP BY一起使用,也可单独使用
   4) MIN():求最小值。常与GROUP BY一起使用,也可单独使用
   5) COUNT():统计记录的条数。常与GROUP BY一起使用,也可单独使用

五、合并(union)

 1) UNION:将所有的查询结果合并到一起,然后去除掉相同的记录
   2) UNION ALL:将所有的查询结果合并到一起,不会去除掉相同的记录

       前提条件:结果集列数个数相同,列的类型还要相同或是兼容
       使用场景:在项目统计报表模块,用来合并数据
select 1,'zs',18
union 
select 2,'ls'22
union 
select 2,'ls'22

select 1,'zs',
un ion all
select 2,'ls',22
union all 
select 2,'ls',22

union的运行效果:

 union all的运行效果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值