MySQL之函数

目录

一、常用函数

            1.日期函数

   2.字符串函数

   3.数字函数

二、条件判断函数

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

四、合并(union)


一、常用函数

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-07-09','%Y-%m-%d')

   查询各学生的年龄,只按年份来算
	 SELECT s.*,YEAR(NOW())-YEAR(s.sage) FROM t_student s;
	 
   按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一
	 	 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);
	 
     date_add(NOW(), interval 1 MONTH)

	 select * from t_student where MONTH(DATE_ADD(NOW(),interval 1 MONTH)) = month(sage);
	 
	 SELECT  date_add(NOW(), interval 1 MONTH)

   2.字符串函数
 

1) UPPER()/LOWER():大小写互转
	 SELECT UPPER("my name is dage")
	 SELECT LOWER("MY NAME IS AGE")
	 
   2) REPLACE():搜索并替换字符串中的子字符串
	 SELECT UUID(),REPLACE(UUID(),'-','');
	 
   3) SUBSTRING():从具有特定长度的位置开始的最一个子字符串
	 SELECT SUBSTRING('zhang san is a person',1,5)
	 SELECT SUBSTRING('zhang san is a person',5)	 
	 
   4) TRIM():去除前后空格
   5) LENGTH():获取字符串长度
	  SELECT LENGTH(' zhang san is a person '),LENGTH(TRIM('zhang san is a person'))
	 
   6) CONCAT():合并字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个

 3.数字函数

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

二、条件判断函数
 

1)IF(expr,v1,v2)
   如果expr是TRUE则返回v1,否则返回v2
	 行列转换
	 需求:每一个学生的语数外分数
	 SELECT
	 s.sid,s.sname,
	 SUM(if(sc.cid = '1',sc.score,0)) 语文,
	 SUM(IF(sc.cid = '2',sc.score,0)) 数学,
	 SUM(IF(sc.cid = '3',sc.score,0)) 英语
	 FROM
	 t_student s LEFT JOIN t_score sc on s.sid = sc.sid 
	 GROUP BY s.sid,s.sname




   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.sid,s.sname,
	 SUM(case when sc.cid= '1' then sc.score end) 语文,
	 SUM(case when sc.cid= '2' then sc.score end) 数学,
	 SUM(case when sc.cid= '3' then sc.score end) 英语
	 FROM
	 t_student s LEFT JOIN t_score sc on s.sid = sc.sid 
	 GROUP BY s.sid,s.sname     
	 
	 
	 SELECT
		s.*,case t1.cid
	  when '1' then '语文'
		when '2' then '数学'
		else '未知课程' end
		FROM
		(SELECT * FROM t_score WHERE cid = '1') t1,
		(SELECT * FROM t_score WHERE cid = '2') t2,
		t_student s
		WHERE
		t1.sid = t2.sid
		and t1.sid = s.sid
		AND t1.score > t2.score

三、聚合函数(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,'s',18
UNION
SELECT 2,'s',18

SELECT 1,'zs',18
UNION ALL
SELECT 2,'s',18
UNION ALL
SELECT 2,'s',18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值