MySQL 数据库 - DQL 语言-2
1.常见函数
1.1常见函数的概念
将一组逻辑语句封装在方法体中,对外暴露的方法名
1.2 常见函数的分类
a. 字符函数
b. 数学函数
c. 日期函数
d. 其他函数
f. 流程控制函数
2. 单行函数 - 字符函数
2.1 length - 获取参数值的字节个数
案例: 如获取输入值的字节个数
SELECT LENGTH('jion');
2.2 concat - 拼接字符串
案例: 将员工表中的名和姓拼接为姓名
SELECT CONCAT(first_name,last_name) FROM employees ;
2.3 upper 和 lower - 将括号内的变成大写或小写
案例: 将括号内的变成大写
SELECT UPPER('student');
案例: 将括号内的变成小写
SELECT LOWER('STUDENT');
2.4 substr - 截取字符
注: MySQL 索引从1开始 而不是从0开始
案例 : 截取从指定索引处后面所有字符
SELECT SUBSTR('我是真的喜欢学习而且非常喜欢学数据库',5) AS 爱学习; //结果 喜欢学习而且非常喜欢学数据库
案例: 截取从指定索引处指定字符长度的字符
SELECT SUBSTR('我是真的喜欢学习而且非常喜欢学数据库',5,10) AS 爱学习;//喜欢学习而且非常喜欢
2.5 instr - 返回子串第一次出现的索引,如果找不到返回 0
SELECT INSTR('我是真的喜欢学习','学习'); 爱学习
2.6 trim 除去子串中前后的指定字符
SELECT TRIM('AA' FROM 'AA张AA三AA');
2.7 lpad - 用指定的字符实现左填充的长度
SELECT LPAD('张三三',2,'*');
2.8 rpad- 用指定的字符实现右填充的长度
SELECT RPAD('张三三',12,'ab');
2.9 replace 替换
SELECT REPLACE('张三','三','五');// 张五
3. 单行函数 - 数学函数
3.1 round - 四舍五入
SELECT ROUND(1.55);//2 ,负数也一样
3.1.1 round - 小数点后保留几位
SELECT ROUND(1.5555,3);//1.556 ,负数也一样
3.2 ceil - 向上取整
> 向上取整,返回>=该参数的最小整数
SELECT CEIL(1.00);//2
3.3 floor 向下取整
SELECT FLOOR(-9.99);
3.4 truncate - 截断
SELECT TRUNCATE(1.69999,1);//1.6
3.5 mod - 取余
SELECT MOD(10,3); // 1
4.单行函数 -日期函数
4.1 now 返回当前系统日期+时间
SELECT NOW();
4.2 curdate 返回当前系统日期,不包含时间
SELECT CURDATE();
4.3 curtime 返回当前系统时间;不包含日期
SELECT CURTIME();
4.4 获取指定部分,年,月,日,小时,分钟,秒
#获取系统当前的年份
SELECT YEAR(NOW());
#获取系统当前的月份
SELECT MONTH(NOW());
#获取系统当前是几号
SELECT DAY(NOW());
#获取系统当前是几小时
SELECT HOUR(NOW());
#获取系统当前是几分钟
SELECT MINUTE(NOW());
#获取系统当前是几秒
WHEN salary >20000 THEN 'A'
4.5 日期函数
STR_TO_DATE: 将日期格式的字符转换成指定格式的日期
如: STR_TO_DATE('9-1-1999','%m-%d-%y')
DATE_FORMAT:将日期转换为字符
如:DATE_FORMAT('2018/6/6','%Y年%m月%d日')
5. 其他函数
SELECT VERSION();//查询版本号
SELECT DATABASE();//查询当前的数据库
SELECT USER();//代表当前用户
6. 流程控制函数
6.1 if 函数 : if else 的效果
如: SELECT IF(10>5,'大','小');
6.2 case 函数:是一种 控制结构
case函数的使用: 类似于 switch case 的效果
在MySQL中
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1;
when 常量2 then 要显示的值2 或语句2;
....
else 要显示的值 n 或语句n;
end
案例 查询员工的工作的情况
如果工资>20000,显示 A 级别
如果工资>15000,显示 B 级别
如果工资>10000,显示 C 级别
否则,显示D级别
SELECT salary
CASE
WHEN salary >20000 THEN 'A'
WHEN salary >15000 THEN 'B'
WHEN salary >10000 THEN 'C'
ELSE 'D'
END AS 工资级别