目录
函数
函数:是指一段可以被直接调用的函数或者代码
字符串函数
常用函数
MySQL内置了很多字符串函数,常用的几个如下
例子
-concat(字符串拼接)
select concat('hello','MySQl');
-lower(字符串转化为小写)
select lower('Hello');
-upper(字符串转化为大写)
select upper('Hello');
-lpad(左填充)
select lpad('01',5,'-');
为什么填充三个,本身字符串的长度就为2了填充3个正好等于5
-rpad(右填充)
select rpad('01',5,'-');
-trim(去除左右空格)
select trim(' Hello MySQL ');
-substring(计算字符串长度)
select substring('Hello MySQL',1,5);
练习
根据业务需求变更,明星员工的id,统一为5位数,目前不足五位数的全部在后面补0。比如:1号明星的工号为10000
初始表
代码
update start_table set id = rpad(id,5,'0');
实现后
数值函数
常见函数
注意:求模就是除于一个数然后取余
代码实现
--数值函数 --ceil select ceil(1.2); --floor select floor(1.9); --mod select mod(3,4); --rand select rand(); --round select round(2.345,2);
案例练习
通过数据库的函数,生成一个六位数的随机验证码
select lpad(round(rand()*1000000,0),6,'0');
日期函数
常见函数
代码实现
--日期函数 --curdate() 显示当前日期几年级月几日 select curdate(); --curtime() 显示当前时间几时几分几秒 select curtime(); --now() 显示当前日期和时间 select now(); --YEAR ,MONTH,DAY --显示当前年份 select year(now()); --显示当前月份 select MONTh(now()); --显示当前天数 select DAY(now()); --date_add --当前时间往后推70天 select date_add(now(),INTERVAL 70 DAY); --当前时间往后推70月 select date_add(now(),INTERVAL 70 MONTH ); --datediff(读取俩个日期之间的差值) select datediff('2022-12-30','2022-10-01');
案例
查询所有员工入职天数,并根据入职天数和倒叙排序
select name, datediff(curdate(),entrydate) as 'entrydate' from emp order by entrydate desc ;
流程函数
常用函数
流程函数是一种常见函数,可以在SQL中实现条件筛选,从而提高语句的效率
--if select if(true,'OK','error'); --ifnull --只有第三种情况返回DEfault select ifnull('OK','DEfault'); select ifnull('','DEfault'); select ifnull(null,'DEfault'); select ifnull('null','DEfault'); --case when then else end --需求: 查询start_table表中明星的姓名和地址(如果地址为上海北京,展示为一线城市,其他展示为二线) select name, ( case address when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '工作地址' from start_table;
案例
统计班级各个学院的成绩,展示的规则如下:
-- >= 85,展示优秀
-- >=60,展示及格
--否则不及格
建一个表格
代码
select id, name, (case when math >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end) as '数学', (case when english >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end) as '英语', (case when chinese >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end) as '语文' from score;