常见函数介绍
1.单行函数
一,字符函数
1.length() 获取参数值的字节数
SELECT LENGTH('jonh'); //4
SELECT LENGTH('张三丰hahaha'); //15
//utf-8,每个英文一个字节(8Byte),每个汉字三个字节
2.concat 拼接字符串
3.upper,lower 大小写
4.substr,substring
mysql中索引从1开始
4个重载:(String srt,int index) //截取指定索引处后面的所有字符
(String str,int index,int length) //截取指定索引处指定字符长度的字符
5.instr (String str1,String str2) //返回子串str2在str1第一次出现的索引,如果找不到,返回0
6.trim(String str) //去前后空格
trim('a' FROM 'aaaa张aaaa翠山aaaaa'); //去掉前后的a
7.lpad('殷素素',2,'*') //殷素 左填充
lpad('殷素素',10,'*') //*******殷素素
8.rpad()
9.replace(String str,String str1,String str2) //替换
二,数学函数
1.round //四舍五入
2.ceil //向上取整
3.floor //向下取整
4.truncate //截断
5.mod //取余
三,日期函数
1.now //返回当前系统+日期
2.curdate //返回当前日期,不包含时间
3.curtime //
4.获取指定部分,年,月,日,小时,分钟,秒
YEAR()
MONTH()......
5.str_to_date //将日期格式的字符转换成指定格式的日期
6.date_format //将日期转换成字符
四,其他函数
1.VERSION()
2.DATEBASE()
3.USER()
五,流程控制函数
1.if(expr1,expr2,expr3) //expr1为正确,返回expr2
2.case
①switch case
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1
when 常量2 then 要显示的值2或语句2
...
else 要显示的值n或语句n
end
//eg
查询员工的工资
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;
②case函数:相当与多重if
case
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2
....
else 要显示的值n或语句n
end
//eg
查询员工的工资情况
如果工资>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;
2.分组函数
①分类:
sum 求和,avg 平均值,max最大值,min 最小值,count 计算个数(非空的值有多少)
②参数支持哪些类型
1.sum,avg一般用于处理数值型
max,min,count可以处理任何类型
2.所有分组函数忽略null值
3.可以和distinct搭配实现去重运算
4.count函数详细介绍
SELECT COUNT(*) FROM employees;
SELECT COUNT(1) FROM employees;
效率:
MYISAM存储引擎下,count(*)的效率高
INNODB存储引擎下,count(*)和count(1)效率差不多,比count(字段)要高一些。
5.和分组函数一同查询的字段有限制
要求:group by后的字段