MySQL数据库函数
0、准备
show databases;
select database();
use start;
select name '姓名' from tb_employee;
1、字符串函数
拼接函数 CONCAT()
select concat(name,":",sex) "姓名" from tb_employee;
字符串转换大小写函数 转小写 LOWER() 转大写 UPPER();
select concat('hello','mysql') 'str';
alter table tb_employee add username varchar(20) comment '用户';
update tb_employee set username='zhansan' where entry % 2 = 0;
update tb_employee set username='LISI' where entry % 2 != 0;
select lower('USERNAME') ,UPPER('username');
select LOWER(username) "用户" ,UPPER(username) "用户" from tb_employee;
填充函数 左填充 LPAD(str,n,pad) 右填充 RPAD(str,n,pad)
select LPAD(username,10,name) "用户" , RPAD(username,10,name) "用户" from tb_employee;
去除头尾空格函数 TRIM();
select TRIM(' username ');
select TRIM(username) "用户" from tb_employee;
字符串截取函数 SUBSTRING(STR,START,LEN) START从1开始
select SUBSTRING('username',1,5);
select SUBSTRING(username,1,5) "用户" from tb_employee;
案例
由于业务需求员工工号统一为6位编号,原不足6位统一在之前补0
update tb_employee set id = lpad(id,6,0);
2、数值函数
取整函数 向上取整ceil() 向下取整floor()
select ceil(50.25),floor(50.25);
模函数 mod()
select mod(60,50);
随机数rand()
select rand() * 100;
四舍五入round(x,y) x是四舍五入的数值,y是保留几位小数
select round(5.5565,2) ;
案例
由于业务需求在用户登录时需要一个随机的6位数验证码
select lpad(round(rand()*1000000,0),6,"0") ;
3、日期函数
返回当前日期
select curdate();
返回当前时间
select curtime();
返回当前日期和时间
select now();
获取指定年份
select year(now());
获取指定月份
select month(now());
获取指定日期
select day(now());
返回一个日期 时间值上加上一个时间间隔expr后的时间值
select date_add(now(), interval 70 day);
返回结束日期和起始日期的天数
select datediff(date_add(now(), interval 70 day),now()) ;
案例
查询入职员工的工作时间,并且按倒叙排序
select name,datediff(now(),entry) 'entrydays' from tb_employee order by entrydays desc;
4、流程函数
判断值是否为true 三个参数,为真返回啥,为假返回啥
select if(true,'真','假');
案例
公司需要给工龄大于35天的员工发奖励ipad否则奖励小米
select name, if(datediff(now(),entry)>35,'ipad','小米') 'entrydays' from tb_employee ;
如果value1不为空返回value1 否则返回value2 ifnull(value1,value2)
select ifnull(null,18),ifnull(20,18);
case when then else end 相当于联合判断
案例
查询表员工姓名和工作地址 如果是四川就显示九寨沟,如果是重庆就显示火锅,如果是安徽就显示鳜鱼
select
name,
workaddress,
case workaddress
when "四川" then "九寨沟"
when "重庆" then "火锅"
when "安徽" then "鳜鱼"
else "还不清楚" end
"好吃好玩"
from tb_employee;
select
name,
workaddress,
case
when workaddress ="四川" then "九寨沟"
when workaddress ="重庆" then "火锅"
when workaddress ="安徽" then "鳜鱼"
else "还不清楚" end
"好吃好玩"
from tb_employee;