#三、日期函数
#1.now 返回当前系统日期和时间
SELECT NOW();
#2.curdate 返回当前系统日期,不包含时间
SELECT CURDATE();
#3.curtime 返回当前系统时间,不包含日期
SELECT CURTIME();
#4.直接获取 年月日小时分钟秒
SELECT YEAR(NOW());
#5.str_to_date:将日期格式的字符转换成指定格式的日期
SELECT STR_TO_DATE('1997-11-4','%Y-%c-%d');
#查询入职日期为1992-4-3的员工信息
SELECT * FROM employees WHERE hiredate = STR_TO_DATE('4-3 1992','%c-%d %Y');
#6.date_format 将日期转换成字符
SELECT DATE_FORMAT(NOW(),'%y年%m月%d日');
#查询有奖金的员工名和入职日期(xx月/xx日 xx年)
SELECT
last_name,
DATE_FORMAT(hiredate,'%m月/%d日 %y年') 入职日期
FROM
employees
WHERE commission_pct IS NOT NULL ;
#四、其他函数
SELECT VERSION();
SELECT DATABASE();
SELECT USER();
流程控制函数
#五、流程控制函数
#1.if函数 if else的效果
SELECT IF(10>5,'大','小');
#2.case函数的使用一:switch case
/*
java
switch(变量或表达式){
case 常量1:语句1;break;
······
}
mysql
case 要判断的字段或表达式
when 常量1 then 要显示的值或语句1;
……
else 要显示的值或语句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
/*
java
if(条件1){
语句1;
}else if(条件2){
语句2;
}
else{
语句n;
}
mysql
case
when 条件1 then 要显示的值1或语句1;
······
else 条件n then 要显示的值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可以处理任何类型
2.分组函数都忽略null值
3.可以和distinct搭配实现去重
4.count函数
一般使用count(*)统计行数
5.和分组函数一同查询的字段要求是group by后的字段
*/
#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) 和,AVG(salary) 平均,MAX(salary) 最高,MIN(salary) 最低,COUNT(salary) 个数
FROM employees;
#2.参数支持哪些类型
SELECT SUM(last_name),AVG()last_name) FROM employees;
SELECT MAX(last_name),MIN(last_name) FROM employees;
SELECT COUNT(last_name) FROM employees;
SELECT COUNT(commission_pct) FROM employees;
#3.忽略null值
SELECT SUM(commission_pct),AVG(commission_pct) FROM employees;
SELECT MAX(commission_pct),MIN(commission_pct) FROM employees;
#4.和distinct搭配
SELECT SUM(DISTINCT salary),SUM(salary) FROM employees;
SELECT COUNT(DISTINCT salary),COUNT(salary) FROM employees;
#5.count函数
SELECT COUNT(*) FROM employees;
SELECT COUNT(1) FROM employees;
#6.和分组函数一同查询的字段有限制
SELECT AVG(salary),employee_id FROM employees;