MySQL学习笔记(三)-MySQL常见函数
作者:就叫易易好了
日期:2020/11/1
往期:
1、mysql学习笔记(一)–基本操作
2、MySQL学习笔记(二)—条件查询,模糊查询,排序查询
函数的作用:
1、隐藏了实现细节
2、提高代码的重用性
调用方法:
SELECT
函数名(实参列表)
FROM
表
分类:
1、单行函数
字符函数,数学函数,日期函数,流程控制函数,其他函数
如:concat,length,ifnull等等
2、分组函数
功能:做统计使用,又称统计函数,聚合函数,组函数
一、字符函数
1、length函数
作用:用于获取值的字节个数
SELECT LENGTH('bill');
返回值为4
SELECT LENGTH('易小勇')
返回值为9,因为一个汉字占三个字节
注释:utf-8字符集下
默认一个字母占1个字节,一个汉字占3个字节
2、concat函数
作用:用于拼接字符串
SELECT
CONCAT(last_name,'_',first_name)
FROM
employees;
此时姓名连接起来了,并且中间有一个下划线
3、upper,lower函数
upper函数作用:将小写字母变成大写
SELECT
UPPER('bill');
返回值为BILL
lower函数的作用:将大写字母变成小写
SELECT
LOWER('CANdY')
返回值为candy
#案例:将姓变大写,名变小写,然后拼接
SELECT
CONCAT(UPPER(last_name),LOWER(first_name))
FROM
employees;
4、substr/substring函数
作用:截取字符串
#截取从指定索引处后面的所有字符
SELECT
SUBSTR('我是社会主义接班人',7) AS 截取部分;
此时返回值是“接班人”
#截取从指定索引处指定字符长度的字符
SELECT
SUBSTR('我是社会主义接班人',3,2) AS 截取部分;
此时返回值是“社会”,这条语句中,3代表起始位置,2代表截取长度
注意:MySQL中索引是从1开始的,比如“接”是第七个字,所以是7而不是6
#案例:将姓名首字符大写,其他字符小写然后用_拼接
SELECT
CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2)))
FROM
employees;
这波娃套的还可以撒(手动狗头)
5、instr函数
作用:返回子串第一次出现的索引,如果找不到,返回0
SELECT INSTR('天上掉下个猪八戒','猪八戒') AS 起始位置;
返回值为6
6、trim函数
SELECT TRIM(' ycy ') AS out_put;
返回值为'ycy',去掉了前后的空格
SELECT TIRM('a' FROM 'aaaa哈哈哈aaa哈哈哈aaaa') AS out_put;
返回值为‘哈哈哈aaa哈哈哈’,因为去掉的是前后的a
7、lpad函数
是lpad不是ipad!
作用:用指定的字符实现左填充的指定长度
SELECT LPAD('橙留香',9,'^') AS out_put;
(此时9为总字符个数,^制定的字符。
返回值为‘^^^^^^橙留香’
RPAD函数也是相同的用法
8、replace函数
作用:将指定的字符替换为另外一组指定的字符
SELECT REPLACE('美羊羊爱上了喜羊羊','喜羊羊','沸羊羊') AS out_put;
返回值为'美羊羊爱上了沸羊羊'
二、数字函数
1、round函数
作用:四舍五入
SELECT ROUND(1.45);
返回值为1;
SELECT ROUND(1.565,2);
返回值为1.57;
括号里的意思就是保留小数点后面5位;
2、ceil函数
作用:向上取整,返回>=该参数的最小整数
SELECT CEIL(1.03);
返回值为2;
SELECT CEIL(-1.03);
返回值为-1
3、floor函数
作用:向下取整,返回<=该参数的最大整数
SELECT FLOOR(-9.99);
返回值为-10;
4、truncate函数
作用:截断小数点后面的数字
SELECT TRUNCATE(1.77,1);
返回值为1.7;
5、mod函数
作用:取余
SELECT MOD(14,3);
返回值为2;
等同于SELECT 14%3;
三、日期函数
1、now函数
作用:返回当前系统的日期和时间
SELECT NOW();
返回值为2020-11-01 17:28:24
(11月第一天呢!)
2、curdata函数
这里就不演示了(手动狗头)
3、获取指定的日期部分
SELECT YEAR(NOW()); 获取年份
SELECT MONTH(NOW());获取月份
......
四、流程控制函数
1、if函数
SELECT IF(15<6,'是的','放p');
返回值为放p
2、case函数
2.1 第一种使用方法:
我们基于myemployees数据库,来假设一个案例:
#案例:查询员工的工资,要求
部门号=30,显示工资为1.1倍
部门号=40,显示工资为1.2倍
部门号=50,显示工资为1.3倍
其他部门的工资全部为原工资
SELECT salary AS 原始工资,department_id,
CASE department_id
WHEN 30 THEN salary*1.1
WHEN 40 THEN salary*1.2
WHEN 50 THEN salary*1.3
ELSE salary
END AS 新工资
FROM employees;
2.2 第二种使用方法
#案例:查询员工的工资情况
SELECT salary,
CASE
WHEN salary>20000 THEN 'A'
WHEN salary>15000 THEN 'B'
WHEN salary>10000 THEN 'C'
ELSE 'D'
END AS 工资级别
FROM employees;