字符串函数(重点)
1.concat(s1,s2,s3) --拼接
SELECT CONCAT('hello','world','hh');
--1.拼接employees表中的名字
SELECT employee_id,CONCAT(first_name,' ',last_name) FROM employees;
2.lower(str)或lcase(str) ---将str转成小写
3.upper(str)或者ucase(str) --将str转成大写
--1.把employees 表中的last_name转为大小,first_name转小写
SELECT UPPER(last_name),LOWER(first_name) FROM employees;
4.Lpad(str,n ,pad),RPAD(str,n,pad)---用pad 对str进行填充,达到n字符串的长度
SELECT * FROM employees;
--实例:将员工编号填充为6位,不满6位的在左边补0
SELECT LPAD(employee_id,6,0) ,first_name FROM employees;
5.trim(str) ----去掉字符串的前面和后面的空格
SELECT TRIM(' j im ') ,' uuuu ' ;
6.substring(str,START,len) ----获子字符串
SELECT SUBSTRING('hello world ',1,5) ,SUBSTRING('hello world',7,5);
巩固练习:
由于业务发展,企业中员工编号升级为6位数,目前不足6位的,在前面补0.
要求SELECT * FROM employees;看到的员工编号都是6位。
update employees set employee_id=Lpad(employee_id,6,0);
7.length(str)--字符串长度
8.reserver(str)
数值函数(重要)
1.ceil(X)----向上取整
2.floor(X)----向下取整
3.mod(x,Y) ---返回是x/y余数
4.rand() ---返回是0---1之间的随机数
5.round(x,Y)----将x四舍五入,保留y位小数
SELECT CEIL(12.6785),FLOOR(12.678),MOD(3,7),ROUND(12.678,2);
SELECT RAND();
--1.通过MYSQL的函数,生成一个六位数的随机验证码
SELECT rpad(floor(RAND()*100000),6,0);
7.least(num1,num2,num3)求最小
8.greatest(num1,num2,num3)求最大
日期函数(重要)
1.CURDATE() ---返回当前日期
2.curtime() ----返回前时间
3.NOW()----返回是当前的日期和时间
4.YEAR(DATE),MONTH(DATE),DAY(DATE)
SELECT CURDATE(),CURTIME(),NOW(),YEAR(CURDATE()),month(CURDATE()),day(CURDATE());
5.DATE_ADD(DATE,INTErvAL EXPR TYPE) ---返回一个日期、时间加上一个时间间隔expr的时间值
SELECT DATE_ADD(CURDATE(),interval 2 YEAR),DATE_ADD(CURDATE(),interval 2 MONTH),DATE_ADD(CURDATE(),interval 2 DAY);
6.datediff(DATE1,DATE2)-----返回的是date1和date2之间相隔的天数。
eg:
--1.查询每个员工入职了多少天?
SELECT employee_id,DATEDIFF(CURDATE(),hire_date) FROM employees;
流程控制函数
1.if(VALUE,t,f) ----如果value为真,取t的值,如果为假取f
--实例
SELECT if(false,1,0);
--实例:计算出所有员工的年薪
salay*12+salary*12*commission_pct
DESC employees;
SELECT employee_id,first_name,salary,salary*12+salary*12*if(commission_pct IS NULL,0,commission_pct) sumsalary
FROM employees;
2.ifnull(v1,v2) ---判断v1是否为null ,为空的时候返回的是v2,不为空的时候返回是v1.
SELECT employee_id,first_name,salary,salary*12+salary*12*ifnull(commission_pct,0) sumsalary
FROM employees;
3.第一种case 语句:
case when [val] then [res]
when [val] then [res]
。。。
else
[res]
end
第二种case 语句:
case 表达式 when [val] then [res]
when [val] then [res]
。。。
else
[res]
end
--- 实例1: salary>=20000 高级工程师
salary>=15000 salary<20000 中级工程师
salary <15000 初级工程
SELECT employee_id,first_name,salary,case when salary>=20000 then '高级工程师'
when salary>=15000 then '中级工程师'
ELSE '初级工程师'
END grade
FROM employees;
SELECT * FROM employees;
-- 实例2: job_id flag
AD_PRES A
AD_VP B
IT_PROG C
D
常用的函数:
1.字符串函数:concat(),lower(),upper(),lpad(),rpad(),trim(),substring()
2.数值函数:ceil(),floor(),mod(),rand(),round()
3.日期函数:curdate(),curtime(),now(),year(date),month(),day(),date_add(),datediff()
4.流程空号:if() ,ifnull(), 两种case