目录
一,函数的定义
二,常用函数
三,字符串函数
四, 数学函数
五,判断函数
六、合并(union)
一,函数的定义
1.类似Java定义方法
2.可以带参数
3.必须有返回值(一行一列) ,重点:java方法可以没有返回值,数据库函数必须要有返回值
select max(score) from sc
4.函数可以嵌套到sql语句中
注:存储过程则不可以
5.函数可嵌套调用 round(avg)
二,常用函数
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())效果图参考
三,字符串函数
案例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后面的rnselect 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



