MySQL数据库(六)常见函数

一、基础查询

二、条件查询

三、排序查询

四、常用函数

分为两组:1.单行函数  2.统计函数(分组函数)

1.单行函数:字符函数,数学函数,日期函数,其他函数,流程控制函数

字符函数:length concat upper lower substr substring trim lpad rpad  repalce

 #字符函数
 #length:参数的字节个数
 SELECT LENGTH('张三丰hahaha');
 SHOW VARIABLES LIKE '%char%';
 #concat:拼接字符
 SELECT CONCAT(last_name,first_name) 姓名 FROM employees;
 #upper lower
 SELECT CONCAT(UPPER(last_name),LOWER(first_name)) 姓名 FROM employees;
 #substr substring
 SELECT SUBSTR('李莫愁爱上了陆展元',7) out_put;
 SELECT SUBSTR('李莫愁爱上了陆展元',1,3) out_put;
 #instr:返回子串第一次出现的索引,找不到返回0
 SELECT INSTR('杨不悔爱上了殷六侠','殷六侠') AS out_put;
 #trim
 SELECT LENGTH(TRIM('        zhagncuishan      ')) AS out_put;
 SELECT TRIM('aa' FROM 'aaaaaaaaaafzvaaaaa') AS output;
 #lpad rpad
 SELECT LPAD('xy',2,' ') AS out_put;
 #repalce
 SELECT REPLACE('xyyyyzy','y','a');

数学函数:round ceil floor truncate mod

#数学函数
 #round 四舍五入
 SELECT ROUND(-1.50);
 SELECT ROUND(1.567,2);
 #ceil 向上取整 返回大于等于该数的最小整数
 SELECT CEIL(1.01);
 #floor 向下取整 返回小于等于该数的最大整数
 SELECT FLOOR(-9.9);
 #truncate 截断 保留几位小数
 SELECT TRUNCATE(1.23,1) ;
 #mod 取余
 #mod(a,b) = a-a/b*b
 SELECT MOD(10,3);

日期函数:now curdate curtime year mouth day str_to_date date_format


#now 返回当前系统日期和时间
SELECT NOW();
#curdate 返回系统当前日期不包括时间
SELECT CURDATE();
#curtime 返回系统当前时间不包含日期
SELECT CURTIME();

#可以获取指定的部分,年月日小时分钟秒
SELECT YEAR(NOW());
SELECT YEAR('1998-1-1');
SELECT YEAR(`hiredate`) 年 FROM employees;
SELECT MONTHNAME(NOW());
SELECT HOUR(NOW());

扫描二维码关注公众号,回复: 10443458 查看本文章

#str_to_date 将字符通过指定的格式转换成日期
SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d');
SELECT * FROM employees WHERE hiredate = '1992-4-3';
#date_format 将日期转成字符
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日');
#查询有奖金的员工名和入职日期(xx月/xx日 xx年)
SELECT first_name,DATE_FORMAT( `hiredate`,'%m月/%d日 %Y年') FROM employees WHERE `commission_pct` IS NOT NULL; 
 

其他函数:version() datebase() user()

SELECT VERSION();
SELECT DATABASE();
SELECT USER();

流程控制函数:if        case when then

#1.if函数 : 实现if else效果,类似于三元运算符
SELECT IF(10>5,'da','xiao');
SELECT last_name,`commission_pct`,IF(`commission_pct` IS NULL,'mei','you') 备注 FROM employees;
#2.case函数:使用一:swith case 的效果
/* 
case 要判断的字段或者表达式
when 常量1 then 要显示的值或者语句1
when 常量2 then 要显示的值或者语句2
。。。
else 要显示的值或者语句n
end
*/
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 新工资
FROM employees;
#case 使用二 :类似多重if
/* 
case 
when 条件1then 要显示的值1或者语句1;
else 要显示的n
end
*/
SELECT  CASE
WHEN salary>20000 THEN 'A'
WHEN salary BETWEEN 15000 AND 20000 THEN 'B'
WHEN salary BETWEEN 10000 AND 15000 THEN 'C'
ELSE 'D'
END 工资级别 
FROM employees;

2.分组函数:sum() avg() max() min() count()

#分组函数:用作统计使用,又称为聚合函数或者统计函数或者组函数

#分类:sum求和 avg平均 max最大值 min最小值 count计算个数

#1.简单使用
SELECT SUM(salary) FROM employees;
SELECT AVG(salary) FROM employees;
SELECT MAX(salary) FROM employees;
SELECT MIN(salary) FROM employees;
SELECT COUNT(salary) FROM employees;

SELECT SUM(salary),ROUND( AVG(salary),2),MAX(salary),MIN(salary), COUNT(salary) FROM employees;

#2.参数支持哪些类型
#sum avg 处理数值型
#max min count 可以处理任何类型
#上述该值都是忽略了null值,不参与运算
#注意 null+任何值 都为 null

#3.可以和distinct搭配,去除了重复计算
SELECT SUM(DISTINCT salary),SUM(salary) FROM employees;

#4.count函数的详细介绍

#统计个数
SELECT COUNT(*) FROM employees;
SELECT COUNT(1) FROM employees;
#MYISAM 老版本
#INNODB 新版本
#总的来说,SELECT COUNT(*) FROM employees;来统计行数

#5.和分组函数一同查询的字段有限制:和分组函数一同查询的字段要求是group by后的字段
SELECT AVG(salary),job_id FROM employees;

发布了58 篇原创文章 · 获赞 7 · 访问量 3732

猜你喜欢

转载自blog.csdn.net/xy_learning/article/details/103817906
今日推荐