Mysql常见函数-字符函数-数序函数-日期函数-日期函数- 流程控制函数--分组函数
Posted 陕西五花肉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql常见函数-字符函数-数序函数-日期函数-日期函数- 流程控制函数--分组函数相关的知识,希望对你有一定的参考价值。
常见函数
/*
概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
好处: 1.隐藏了实现细节 2.提高了代码的重用性
调用:select 函数名(实参列表) [from 表]
特点:
1 叫什么(函数名)
2 干什么(函数功能)
分类:
1 单行函数
如 concat length ifnull等
2.分组函数
一. 字符函数
#一. 字符函数
#1.length 获取参数值的字节个数
SELECT LENGTH('wst');
SELECT LENGTH('qyd');
#2. concat 拼接函数
SELECT CONCAT(last_name,'_',first_name) 姓名 FROM employees;
#3.upper lower
SELECT UPPER('wst');
SELECT LOWER('Qyd');
# 实例:将姓变大写 名变小写 然后拼接
SELECT CONCAT(UPPER(last_name),LOWER(first_name))姓名 FROM employees;
#4.substr substring 字符串截取
#注意: 索引从1开始
#截取从指定索引处后面的所有字符
SELECT SUBSTR('小鱼爱上鱼鱼',2) love;
#截取从指定索引处指定字符长度的字符
SELECT SUBSTR('小鱼爱上鱼鱼',2,3) love;
#案例 :姓名中首字符大写 其他字符小写然后用_拼接,显示出来
SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) 名字
FROM employees;
SELECT CONCAT(UPPER(last_name),LOWER(first_name))姓名 FROM employees;
#4.substr substring
#注意: 索引从1开始
#截取从指定索引处后面的所有字符
SELECT SUBSTR('鱼鱼爱上小鱼',2) love;
#截取从指定索引处指定字符长度的字符
SELECT SUBSTR('鱼鱼爱上小鱼',2,3) love;
#案例 :姓名中首字符大写 其他字符小写然后用_拼接,显示出来
SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) 名字
FROM employees;
#5.instr 返回子串第一次出现的索引 ,如果找不到返回0
SELECT INSTR('全栈工程师','工程师') AS out_put;
#6.trinm 取出内容中的 空格
SELECT LENGTH(TRIM(' 工程师 ')) AS out_put;
# 去除 内容中的 a
SELECT TRIM( 'a' FROM 'aaaaaaaaaaa鱼aaaa') AS out_put;
#7.lpad 用指定的字符实现左填充指定长度
SELECT LPAD('工程师',10,'*') AS out_put;
#8.rpad 用指定的字符实现左填充指定长度
SELECT RPAD('工程师',10,'*') AS out_put;
#9. replace 替换
#7.lpad 用指定的字符实现左填充指定长度
SELECT REPLACE('全栈工程师','It','秀') AS out_put;
二.数序函数
#二.数序函数
#round 四舍五入
SELECT ROUND(1.45);
# 小数点保留2位
SELECT ROUND(1.45678,2);
#ceil 向上取整 返回>=该参数的最小整数
SELECT CEIL(1.45);
#floor 向下取整 返回<=该参数的最大整数
SELECT FLOOR(-9.99);
#truncate 截断
SELECT TRUNCATE(1.78,1);
#mod 取余
SELECT MOD(-10,-3);
三 日期函数
#三 日期函数
#now 返回当前系统日期+时间
SELECT NOW();
#curdate 返回当前系统日期 不包含时间
SELECT CURDATE();
#curtime 返回当前时间 不包含日期
SELECT CURTIME();
#可以获取指定的部分 年 月 日 小时 分组 秒
SELECT YEAR (NOW(0)) 年
#str_to_date将字符通过指定的格式转换成日期
SELECT STR_TO_DATE('2000-3-2','%y-%c-%d') AS out_put
SELECT *FROM employees WHERE hiredate =STR_TO_DATE('4-3 1992', '%c-%d %y');
#date_format 将日期转换成 字符
SELECT DATE_FORMAT(NOW(),'%y年%m月%d日')AS out_put;
#查询有奖金的员工名和入职日期(xx年xx月xx日)
SELECT last_name ,DATE_FORMAT(hiredate,'%y年%m月%d日') FROM employees;
四.其他函数
SELECT VERSION();#版本
SELECT DATABASE(); #当前数据库
SELECT USER(); #当前用户
流程控制函数
#五. 流程控制函数
#1.if函数 :if else的效果
SELECT IF(10>5,'大','小');
#2.case 函数 使用一:swith case的效果
/*
java中
swith(变量or表达式){
case 变量1:语句; break;
...
default: 语句n;break;
}
mysql中
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;
...
else 要显示的值n或语句n;
end
*/
/*
案例:查询员工的工资 要求
部门号=30,显示的工资为1.1倍
部门号=40,显示的工资为1.2倍
部门号=50,显示的工资为1.3倍
其他部门,显示的工资为原工资
*/
SELECT salary 原始工资,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;
#3.case函数的使用二 :类似于 多重if
/*mysql:
case
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值1或语句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 工资级别
FROM employees;
二. 分组函数
功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类:
sum求和 avg平均值 max最大值 min最小值 count计算个数
特点:
1.sum avg 一般用于处理数值型
max min count可以处理任何类型
- 以上函数都忽略null值
3.可以和disinct
4.count 函数的单独介绍
一般用count(*) 来统计行数
5.和分组函数一同查询的字段要去是group by后的字段
二. 分组函数
/*
功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类:
sum求和 avg平均值 max最大值 min最小值 count计算个数
特点:
1.sum avg 一般用于处理数值型
max min count可以处理任何类型
2. 以上函数都忽略null值
3.可以和disinct
4.count 函数的单独介绍
一般用count(*) 来统计行数
5.和分组函数一同查询的字段要去是group by后的字段
*/
#1.简单 的使用
SELECT SUM(salary) FROM employees;
SELECT AVG(salary)FROM employees;
SELECT MIN(salary)FROM employees;
SELECT MAX(salary)FROM employees;
SELECT COUNT(salary)FROM employees;
SELECT AVG(salary) 平均, MAX(salary) 最大 FROM employees;
#参数支持哪些类型
SELECT MAX(last_name),AVG(last_name) FROM employees;
SELECT MAX(hiredate),MIN(hiredate) FROM employees;
#2忽略null
#3 和distinct搭配
SELECT SUM(DISTINCT salary),SUM(salary) FROM employees;
SELECT COUNT (DISTINCT salary) FROM employees;
#4 count 函数的详细介绍
SELECT COUNT (salary) FROM employees;
#统计个数
SELECT COUNT (*)FROM employees;
SELECT COUNT (1)FROM employees;
效率:
MYISAM 存储引擎下 COUNT(*)的效率高
INNODB 存储引擎下 COUNT(1)和COUNT(*)的效率差不多,比count(字段)要高一些
#5 和分组函数一同查询的字段有限制
SELECT AVG(salary),employee_id FROM employees;
#案例 查询员工表中最大入职时间和最小入职时间的相差天数 别名DIFFRENCE
select DATEDIFF(MAX(hiredate),MIN(hiredate)) DIFFRENCE FROM emplotees;
以上是关于Mysql常见函数-字符函数-数序函数-日期函数-日期函数- 流程控制函数--分组函数的主要内容,如果未能解决你的问题,请参考以下文章