当前位置:网站首页>MySQL之函数
MySQL之函数
2022-08-11 05:35:00 【雨沐笙】
目录
一、函数定义
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 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 DATE_ADD(now(),INTERVAL 1 month)=month(sage);
select DATE_ADD(now(),INTERVAL 1 month);
第五条SQL语句运行结果:
2)字符串函数
1) UPPER()/LOWER():大小写互转
select upper(' my name is zhuxingwen ');
select lower(' HAO NAN REN WENWEN ');
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():合并字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个
4和5的运行结果:
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
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;
运行结果:
四、聚合函数(SUM/COUNT/AVG/MAX/MIN)
- SUM():求和。常与GROUP BY一起使用,也可单独使用
- AVG():求平均值。常与GROUP BY一起使用,也可单独使用
- MAX():求最大值。常与GROUP BY一起使用,也可单独使用
- MIN():求最小值。常与GROUP BY一起使用,也可单独使用
- 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',18
union all
select 2,'ls',22
union all
select 2,'ls',22
union的运行结果:
union all运行结果:
边栏推荐
猜你喜欢
FusionCompute8.0.0 实验(2)虚拟机创建
核方法 Kernel method
SECURITY DAY06( iptables防火墙 、 filter表控制 、 扩展匹配、nat表典型应用 )
slurm cluster construction
HCIP实验(pap、chap、HDLC、MGRE、RIP)
内存调试工具Electric Fence
Memory debugging tools Electric Fence
pytorch下tensorboard可视化深坑
SECURITY DAY04( Prometheus服务器 、 Prometheus被监控端 、 Grafana 、 监控数据库)
文本三剑客——grep过滤
随机推荐
ETCD容器化搭建集群
detectron2,手把手教你训练mask_rcnn
HCIP OSPF/MGRE综合实验
Memory debugging tools Electric Fence
Solve the problem that port 8080 is occupied
Es common operations and classical case
ovnif摄像头修改ip
Arcgis小工具_实现重叠分析
vnc remote desktop installation (available for personal testing on 2021-10-20)
华为防火墙-4-安全策略
利用opencv读取图片,重命名。
Threatless Technology-TVD Daily Vulnerability Intelligence-2022-8-1
CLUSTER DAY03( Ceph概述 、 部署Ceph集群 、 Ceph块存储)
SECURITY DAY03 (one-click deployment of zabbix)
MySQl进阶之索引结构
Es常用操作和经典case整理
CLUSTER DAY03 (Ceph overview, the deployment of Ceph CLUSTER, Ceph block storage)
记录一个刚写的Makefile
华为防火墙会话 session table
pytorch下tensorboard可视化深坑