/*三、日期函数 ------------------------------------------------------- now 返回当前系统日期 curdate 返回系统日期 不包含时间 curtime 返回时间 不包含日期 SELECT NOW(); SELECT CURTIME(); SELECT CURDATE(); SELECT YEAR(NOW()); SELECT MONTH(NOW()); SELECT MONTHNAME(NOW()); SELECT YEAR(hiredate) FROM employees; ----------------------------------------------------------- STR_TO_DATE 将日期格式的字符串转换成指定格式的日期 select STR_TO_DATE('4-23-2020','%m-%d-%Y') DATE_FORMAT日期转化成字符 select DATE_FORMAT('2020/4/23','%Y年%m月%d日'); 日期格式说明 %Y 2019 %y 19 %m 04 %c 4 %d 08 %H 24小时制 %h 12小时制 %i 分00 01 .. 59 %s 秒00 01 .. 59 */ /* 4、其他函数 show version 当前数据库服务器的版本 show database 当前打开的数据库 show user当前用户 password('字符'):返回该字符的密码形式 md5('字符'):返回该字符的md5加密形式 */ /* 5、流程控制函数 ①if(条件表达式,表达式1,表达式2):如果条件表达式成立,返回表达式1,否则返回表达式2 ②case情况1 case 变量或表达式或字段 when 常量1 then 值1 when 常量2 then 值2 ... else 值n end ③case情况2 case when 条件1 then 值1 when 条件2 then 值2 ... else 值n end */ /*三、分组函数 1、分类 max 最大值 min 最小值 sum 和 avg 平均值 count 计算个数(统计非空值的个数) SELECT SUM(salary) FROM employees; SELECT COUNT(`salary`),COUNT(`commission_pct`) FROM employees; sum avg 一般处理数值型 max min count 支持数值 字符 日期型 sum avg min max count 忽略NULL值 SELECT SUM(IFNULL(`commission_pct`,0)) FROM employees; 可以和distinct去重一起用 SELECT COUNT(DISTINCT salary) FROM employees; //查询表有几行 SELECT COUNT(*) FROM employees; SELECT COUNT(1) FROM employees; */ #####进阶5、分组查询 gounp by /* SELECT colum,group_function(colum) FROM _table WHERE _condition GROUP BY group_by_expressionl ORDER BY columnl */ #查询每个工种的最大工资 SELECT MAX(salary), job_id FROM employees GROUP BY job_id #查询每个位置上的部门个数 SELECT COUNT(*) ,location_id FROM departments GROUP BY location_id #查询邮箱中包含a字符的,每个部门的平均工资 SELECT AVG(salary) ,department_id,email FROM employees WHERE email LIKE '%a%' GROUP BY department_id #查询有奖金的每个领导手下员工的最高工资 SELECT MAX(salary),`manager_id`,commission_pct FROM employees WHERE `commission_pct` IS NOT NULL GROUP BY `manager_id` #查询哪个部门的员工个数大于2 //1、查询每个部门的员工个数 SELECT COUNT(*) , `department_id` FROM employees GROUP BY department_id //2、根据1的结果查询//先分组 然后再用HAVING筛选 SELECT COUNT(*) , `department_id` FROM employees GROUP BY department_id HAVING COUNT(*)>2 #查询每个工种 有奖金的员工的 最高工资大于12000的 员工 SELECT salary,`first_name`,`job_id` FROM employees WHERE `commission_pct` IS NOT NULL GROUP BY `job_id` HAVING MAX(salary)>12000 #查询 领导编号>102的 每个领导手下的 最低工资>5000的 领导编号是哪个? SELECT `manager_id`,first_name,salary FROM employees WHERE manager_id>102 GROUP BY manager_id HAVING MIN(salary)>5000