常见函数
SELECT CONCAT('Hello,', first_name, last_name) AS str FROM employees;
SELECT LENGTH('中国Hello');
SELECT CHAR_LENGTH('Hello中国');
SELECT SUBSTRING('Hello,MySQL', 7);
SELECT SUBSTRING('Hello,MySQL', 1, 5);
SELECT INSTR('Hello,Hello', 'llo');
SELECT TRIM(' JavaScript ');
SELECT TRIM('x' FROM 'xxxxxJavaxxxxx');
SELECT LPAD('Script', 3, 'x');
SELECT RPAD('Java', 5, 'b');
SELECT CONCAT(UPPER(SUBSTRING(first_name, 1, 1)), LOWER(SUBSTRING(first_name, 2)), '_', UPPER(last_name)) AS finalname
FROM employees;
SELECT STRCMP('ABC', 'AAA');
SELECT LEFT('ShawnYue', 5);
SELECT RIGHT('ShawnYue', 3);
SELECT ABS(-2);
SELECT CEIL(1.2);
SELECT CEIL(1.12);
SELECT FLOOR(1.78);
SELECT ROUND(1.12);
SELECT ROUND(1.50);
SELECT ROUND(1.87232, 2);
SELECT TRUNCATE(1.87121, 2);
SELECT MOD(10, 3);
SELECT NOW();
SELECT CURDATE();
SELECT CURTIME();
SELECT DATEDIFF(CURDATE(), '1998-11-08');
SELECT DATE_FORMAT(CURDATE(), '%Y年%m月%d日');
SELECT DATE_FORMAT(hiredate, '%Y年%m月%d日 %H时%i分%s秒') FROM employees;
SELECT STR_TO_DATE('2019年7月1日', '%Y年%m月%d日');
SELECT IF(100 > 90, '大于', '小于');
SELECT IF(commission_pct IS NOT NULL, salary * 12 * (1 + commission_pct) ,'没奖金')
FROM employees;
SELECT department_id, salary,
(CASE department_id
WHEN 30 THEN salary * 2
WHEN 50 THEN salary * 3
WHEN 60 THEN salary * 4
ELSE salary
END) newSalary
FROM employees;
SELECT salary,
(CASE
WHEN salary > 20000 THEN 'A'
WHEN salary > 15000 THEN 'B'
WHEN salary > 10000 THEN 'C'
ELSE 'D'
END) grade
FROM employees;
SELECT last_name, CHAR_LENGTH(last_name) len
FROM employees
ORDER BY SUBSTRING(last_name, 1, 1) ASC, len ASC;
分组函数
SELECT SUM(salary) 工资和, AVG(salary) 平均工资, MAX(salary) 最大工资, MIN(salary) 最低工资, COUNT(salary) 个数
FROM employees;
SELECT MAX(last_name) FROM employees;
SELECT MIN(last_name) FROM employees;
SELECT COUNT(commission_pct) FROM employees;
SELECT COUNT(salary) FROM employees WHERE salary > 5000;
SELECT COUNT(manager_id) FROM employees;
SELECT COUNT(*) FROM employees;
SELECT COUNT(1) FROM employees;
SELECT COUNT(DISTINCT department_id)
FROM employees;
分组查询
SELECT AVG(salary) 平均工资, job_id
FROM employees
GROUP BY job_id;
SELECT manager_id, COUNT(*) 个 FROM employees GROUP BY manager_id;
SELECT department_id 部门编号, MAX(salary) 最高工资
FROM employees
WHERE email LIKE '%a%' AND department_id IS NOT NULL
GROUP BY department_id;
SELECT manager_id 领导编号, TRUNCATE(AVG(salary), 2) 员工平均工资
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY manager_id;
SELECT department_id 部门, COUNT(*) 员工个数
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 5;
SELECT job_id 工种编号, MAX(salary) 最高工资
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY job_id
HAVING MAX(salary) > 12000;
SELECT manager_id 领导编号, MIN(salary) 最低工资
FROM employees
WHERE manager_id > 102
GROUP BY manager_id
HAVING MIN(salary) > 5000;
SELECT job_id 工种编号, MAX(salary) 最高工资
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY job_id
HAVING MAX(salary) > 6000
ORDER BY 最高工资 DESC;
SELECT MIN(salary) 最低工资, job_id 工种编号, department_id 部门编号
FROM employees
GROUP BY job_id, department_id
ORDER BY 最低工资 DESC;