MySQL常见函数

一、单行函数

1.1 字符函数

  1. length(str):统计字符串的字节数(取决于编码方式,utf8汉字3字节,gbk汉字2字节)
  2. concat(str1, str2):拼接字符
  3. substr/substring(str, n1 [,n2]):切割字符,n1起始位置(mysql下标从1开始),n2可选,表示切割长度
  4. instr(str1, str2):返回str2在str1中首次出现的位置;如果没有找到,则返回0。不区分大小写
  5. trim(str [, substr]):取出字符串前后的substr字符串,默认为空格
  6. upper(str):字母变大写
  7. lower(str):字母变小写
  8. lpad(str1,length,str2)。其中str1是第一个字符串,length是结果字符串的长度,str2是一个填充字符串。如果str1的长度没有length那么长,则使用str2填充;如果str1的长度大于length,则截断。
  9. rpad(str1, length, str2):参考lpad
  10. replace(object,search,replace):把object对象中出现的的search全部替换成replace。

1.2 数学函数

  1. round(num, 2):四舍五入,保留两位小数
  2. ceil(num):向上取整
  3. floor(num):向下取整
  4. truncate(num, 2):从小数点后两位直接截断,比如truncate(3.1415926, 3) = 3.141
  5. mod(num, 2):求余数 num % 2

1.3 日期函数

  1. now():当前系统时间,1997-06-03 19:23:12
  2. curdate():当前系统时间的日期,1997-06-03
  3. curtime():当前系统时间的时间,19:23:12
  4. year():年份,1997
  5. month():月,6
  6. monthname():英文形式,June
  7. day():日, 3
  8. hour():小时, 19
  9. minute():分钟, 23
  10. second():秒, 12
  11. str_to_date(“1997-06-03 19:23:12”, "%Y-%m-%d %H:%i:%s):通过后面的模式将前面的字符串进行转换成date格式
  12. date_format(“1997/6/3”, “%Y年%m月%d日”):将日期转为字符,1997年6月3日
  13. datediff(date1, date2):

MySQL常见函数_第1张图片

1.4 控制函数

  1. if:类似于三元运算符
    在这里插入图片描述

  2. case:
    第一种情况:类似于switch…case…
    MySQL常见函数_第2张图片
    MySQL常见函数_第3张图片
    MySQL常见函数_第4张图片
    第二种情况:类似于多重if
    MySQL常见函数_第5张图片
    MySQL常见函数_第6张图片

1.5 其他函数

  1. version:版本
  2. database:当前数据库
  3. user:当前用户

二、分组函数

功能:用作统计使用,又称为聚合函数或统计函数或组函数。
分类:sum,avg,max,min,count

2.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;
# 对平均值四舍五入保留两位小数
select sum(salary), round(avg(salary), 2) 平均值, max(salary) 最大值, min(salary) 最小值, count(salary) 个数 
from employees;

2.2 参数支持哪些类型

  1. sum、avg一般用于处理数值型(不报错,但没意义)
  2. max,min,count可以处理任何类型

2.3 是否忽略null值

sum,avg,max,min,count都忽略null值

2.4 和distinct搭配

select sum(distinct salary), sum(salary) from employees;
select count(distinct salary), count(salary) from employees;

2.5 count函数的详细介绍

select count(salary) from employees;
# 统计行数
select count(*) from employees;  # 只要有一列不为null,行数便+1,不可能一行所有列同时为null(因为也不算数)
select count(1) from employees;  # 原理是添加一列,该列所有行填充1,统计1的个数,也可以使用其他常量代替

效率:

  • MyISAM:count(*)效率高
  • InnoDB:count(*)和count(1)差不多,比count(字段名)要高一些

2.6 和分组函数一同查询的字段有限制

和分组函数一同查询的字段要求是group by后的字段

你可能感兴趣的:(MySQL,mysql)