MySQL函数运用

目录

一,函数的定义 

二,常用函数

  

三,字符串函数

四, 数学函数

五,判断函数

六、合并(union)


一,函数的定义 

 1.类似Java定义方法


   2.可以带参数


   3.必须有返回值(一行一列) ,重点:java方法可以没有返回值,数据库函数必须要有返回值
      select max(score) from sc


   4.函数可以嵌套到sql语句中
     注:存储过程则不可以


   5.函数可嵌套调用  round(avg)
 

二,常用函数

 (1)日期函数

案例一:

1.日期函数

   1) NOW():获取当前日期和时间
	
		select now()
	 
   2) DAY():获取日期中的天
	 
		select date(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-09-08','%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

  查询下月过生日的学生(当前月加1)

     (1)date_add(NOW(), interval 1 MONTH)
		select *from t_student where month(now())+1 = month(sage)


      (2)select DATE_ADD(NOW(),interval 1 month)
		select *from t_student where DATE_ADD(NOW(),interval 1 month) = month(sage)

				

效果图参考

 

  

三,字符串函数

案例1:


   1) UPPER()/LOWER():大小写互转
	 
	 select UPPER('afsgafsas')
	 select LOWER('HJHKHKHKHK')
	 
   2) REPLACE():搜索并替换字符串中的子字符串
	 
 
	 SELECT uuid(),REPLACE((uuid()),'-','');
	 
   3) SUBSTRING():从具有特定长度的位置开始的最一个子字符串
	 
	 select SUBSTRING('xiong er is a xiong',1,5)
	 select SUBSTRING('xiong er is a xiong',5)

效果图参考

 

 

案例2:

 4) TRIM():去除前后空格
   5) LENGTH():获取字符串长度
	 
	 select LENGTH('xiong er is a xiong'),LENGTH(TRIM( ' xiong er is a xiong '))

 

效果图

 

 

 

四, 数学函数

3.数字函数
   1)FLOOR:向下取整
   2)CEIL: 向上取整
   3)ROUND:四舍五入
     select FLOOR(-3.14), CEIL(-3.14),CEIL(-3.14),CEIL(0.98);

效果图 

 

五,判断函数

(1).IF(expr,v1,v2)


   如果expr是TRUE则返回v1,否则返回v2 -----(行列转换)
     需求:每一个学生的语数外分数

     
     判断:如果是当前分数就去当前分数,不是则用0代替

     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
	 
	 
  

 

 

 (2)IFNULL(v1,v2)


   如果v1不为NULL,则返回v1,否则返回v2

语法: 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 = '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

 

 

六、合并(union)

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


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

       前提条件:结果集列数个数相同,列的类型还要相同或是兼容
     

 

只取两条数据
select 1,'sa',18
union
select 2,'sa',18
union
select 2,'sa',18

取所有数据
select 1,'sa',18
union all
select 2,'sa',18
union all
select 2,'sa',18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值