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可以处理任何类型

  1. 以上函数都忽略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常见函数-字符函数-数序函数-日期函数-日期函数- 流程控制函数--分组函数的主要内容,如果未能解决你的问题,请参考以下文章

04_MySQL常见函数_单行函数

MySQL中的常见函数

MySQL中的常见函数之单行函数

MySQL中的常见函数之单行函数

MySQL初级篇——字符串日期时间流程控制函数的相关应用

MySQL初级篇——字符串日期时间流程控制函数的相关应用