查询
# 查询员工的姓名和部分号和年薪,按照年薪降序和姓名升序
SELECT last_name, department_id, salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY 年薪 DESC, last_name ASC;
# 选择工资不在8000到17000的员工的姓名和工资,按照工资降序
SELECT last_name, salary
FROM employees
WHERE salary NOT BETWEEN 8000 AND 17000
ORDER BY salary DESC;
# 查询邮箱中包含e的员工信息,并先按照邮箱的字节数降序,再按照部门号升序
SELECT *
FROM employees
WHERE email LIKE '%e%'
ORDER BY LENGTH(email) DESC, department_id ASC;
函数
常见函数
好处:1、隐藏了实现细节;2、提高代码的重用性
分类:
1、单行函数
如:concat,length,ifnull等
字符函数、数学函数、日期函数、其他函数、流程控制函数
2、分组函数
功能:做统计使用的,又称为统计函数、聚合函数
字符函数
# 一、字符函数
# 1.length 获取参数值的字节个数
SHOW VARIABLES LIKE '%char%'
# 2.concat 拼接字符串
# 3.upper和lower
# 将姓变大写,名变小写,然后拼接
SELECT CONCAT(UPPER(last_name),'_',LOWER(first_name)) 姓名
FROM employees;
# 4.substr, substring 索引从1开始
# 截取从指定索引处后面所有字符
SELECT SUBSTR('李莫愁爱上了陆展元',7) out_put;
# 截取从指定索引处,指定字符长度的字符
SELECT SUBSTR('李莫愁爱上了陆展元',1,3) out_put; #3是李莫愁的长度
# 5.instr 返回指定字符串第一次出现的索引,如果找不到返回0
SELECT INSTR('杨不悔爱上了殷六侠','殷六侠') AS out_put
# 6.trim 去前后空格
SELECT TRIM(' 张翠山 ') AS out_put;
SELECT TRIM('a' FROM 'aaaaaaa张翠山aaaaaaa') AS out_put;
# 结果:张翠山
SELECT TRIM('a' FROM 'aaaaaaa张翠aaaaa山aaaaaaa') AS out_put;
# 结果:张翠aaaaa山
# 7.lpad 用指定的字符实现左填充指定长度
SELECT LPAD('殷素素',10,'*') AS out_put;
# rpad 用指定的字符实现右填充指定长度
# 8.replace 替换
SELECT REPLACE('张无忌爱上了周芷若','周芷若','赵敏') AS out_put;
数学函数
# 1.round四舍五入
SELECT ROUND(-1.62) # 结果:-2
SELECT ROUND(-1.567,2) # 结果:-1.57 小数点后保留
# 2.ceil向上取整,返回>=该参数的最小整数
SELECT CEIL(-1.02); #结果:-1
# 3.floor向下取整,返回<=该参数的最小整数
SELECT FLOOR(-9.99); #结果:-10
# 4. truncate截断
SELECT TRUNCATE(1.6999,1); #结果1.6;
# 5.mod取余
#mod(a,b) : a-a/b*b
SELECT MOD(-10,-3); #结果-1;
日期函数
# 1.now 返回当前系统日期+时间
SELECT NOW();
# 2.curdate 返回当前系统日期,不包含时间
SELECT CURDATE();
# 3.curtime 返回当前系统时间,不包含日期
SELECT CURTIME();
# 4.获取指定的部分,年、月、日、小时、分钟、秒
SELECT YEAR('1998-1-1') 年;
SELECT MONTH('1998-1-1');
SELECT MONTHNAME('1998-1-1');
# 5.str_to_date:将日期格式的字符转换成指定格式的日期
SELECT STR_TO_DATE('1992-3-8','%Y-%c-%d') AS out_put;
# 实例:查询入职日期为1992-4-3的员工信息;
SELECT * FROM employees
WHERE hiredate = '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日')
其中涉及的符号:
其它函数
一般指一些系统函数
# 查看SQL版本
SELECT VERSION();
# 查看当前数据库
SELECT DATABASE();
# 查看当前用户
SELECT USER();