03-MySQL常见函数

小鱼儿 2022-09-08 03:37 251阅读 0赞

文章目录

      1. 单行函数
      • 1.1 字符函数
      • 1.2 数学函数
      • 1.3 日期函数
      • 1.4 流程控制函数
      • 1.5 其他函数
      1. 分组函数

1. 单行函数

1.1 字符函数

length:获取字节个数

concat:字符串拼接

  1. SELECT CONCAT(last_name, '_', first_name) 姓名
  2. FROM employees;

upper、lower:字符转换为大小写

  1. SELECT UPPER('john');
  2. SELECT LOWER('john');
  3. # 将姓变大写,名变小写,然后拼接
  4. SELECT CONCAT(UPPER(last_name), LOWER(first_name)) 姓名
  5. FROM employees;

substr:截取子串(注意:索引从1开始)

  1. # 截取从指定索引处开始的字符
  2. SELECT SUBSTR('ABCDEFGHIGKLMN', 7) out_put 'GHIGKLMN'
  3. # 截取从指定索引处开始指定字符长度的字符
  4. SELECT SUBSTR('ABCDEFGHIGKLMN', 1, 3) out_put 'ABC'
  5. # 姓名中首字母大写,其他字符小写然后用_拼接,显示出来
  6. SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'_' LOWER(SUBSTR(last_name,2)))

instr:返回子串第一次出现的索引,如果找不到则返回0

  1. INSTR('HelloWorld','W') #6

trim:去前后指定的空格和字符

  1. SELECT TRIM('a' FROM 'aaaaa123aaa456aaaaaaa') AS out_put; #123aaa456

ltrim:去左边空格

rtrim:去右边空格

replace:替换字符串中指定字符

  1. REPLACE('abcd', 'b', 'm'); #amcd

lpad:用指定的字符实现左填充指定长度

rpad:用指定的字符实现右填充指定长度

  1. LPAD(salary, 10, '*') #**********2400
  2. RPAD(salary, 10, '*') #2400**********

1.2 数学函数

round:四舍五入

  1. ROUND(45.926, 2) #45.93

rand:随机数

floor:向下取整

ceil:向上取整

mod:取余

  1. MOD(a, b)原理: a-a/b*b
  2. MOD(-10, -3): -10-(-10)/(-3)*(-3)=-1
  3. # 被除数如果为正,结果为正,被除数为负,结果为负
  4. MOD(-10, -3) -1
  5. MOD(10, -3) 1

truncate:截断,小数点后保留几位

  1. TRUNCATE(45.926, 2) # 45.92

1.3 日期函数

now:获取当前系统日期+时间

curdate:获取当前系统日期

curtime:获取当前系统时间

  1. # 可以获取指定的部分,年,月,日,小时,分钟,秒
  2. SELECT YEAR(NOW())
  3. SELECT YEAR('1998-1-1')
  4. SELECT YEAR(hiredate)
  5. FROM employees;
  6. SELECT MONTH(NOW())

str_to_date:将日期格式的字符转换成指定格式的日期

  1. STR_TO_DATE('9-13-1999','%m-%d-%Y') #1999-09-13

date_format:将日期转换成字符

  1. DATE_FORMAT('2018/6/6','%Y年%m月%d日') #2018年06月06日

在这里插入图片描述
在这里插入图片描述

  1. # 查询入职日期为1992-4-3的员工信息
  2. SELECT *
  3. FROM employees
  4. WHERE hiredate='1992-4-3'
  5. SELECT *
  6. FROM employees
  7. WHERE hiredate=STR_TO_DATE('4-3 1992', '%c-%d %Y')

1.4 流程控制函数

if 处理双分支

  1. SELECT IF(10 < 5, '大' '小');
  2. SELECT last_name,commission_pct, IF(commission_pct IS NULL, '没奖金''有奖金') 备注
  3. FROM employees;

case语句 处理多分支

(1)情况1:处理等值判断

  1. java
  2. switch(变量或表达式){
  3. case 常量1
  4. 语句1
  5. break
  6. ...
  7. default:语句;break
  8. }
  9. mysql
  10. case 要判断的字段或表达式
  11. when 常量1 then 语句1
  12. when 常量2 then 语句2
  13. ...
  14. else 语句n
  15. end

在这里插入图片描述

(2)情况2:处理条件判断
在这里插入图片描述

1.5 其他函数

version版本

database当前库

user当前连接用户

2. 分组函数

AVG() 平均值

SUM() 求和

可以对数值型数据使用AVG 和SUM 函数。

  1. SELECT AVG(salary), MAX(salary), MIN(salary), SUM(salary)
  2. FROM employees
  3. WHERE job_idLIKE '%REP%';

在这里插入图片描述

MAX() 最大值

MIN() 最小值

可以对任意数据类型的数据使用 MIN 和MAX 函数。

  1. SELECT MIN(hire_date), MAX(hire_date)
  2. FROM employees;

在这里插入图片描述

COUNT() 计数

(1)COUNT(*) 返回表中记录总数,适用于任意数据类型

  1. SELECT COUNT(*)
  2. FROM employees
  3. WHERE department_id = 50;

(2)COUNT(expr) 返回expr不为空的记录总数。

  1. SELECT COUNT(commission_pct)
  2. FROM employees
  3. WHERE department_id = 50;

特点:

1、以上五个分组函数都忽略null值,除了count(*)

2、count的参数可以支持:字段、常量值,一般放1。建议使用 count(*)

3、都可以搭配distinct使用,用于统计去重后的结果

  1. SELECT SUM(DISTINCT salary), SUM(salary)
  2. FROM employees
  3. SELECT SUM(DISTINCT salary), COUNT(salary)
  4. FROM employees

测验题:

  1. # 查询公司员工工资的最大值,最小值,平均值,总和
  2. SELECT MAX(salary), MIN(salary), ROUND(AVG(salary),2), SUM(salary)
  3. FROM employees;
  4. # 查询员工表中的最大入职时间和最小入职时间的相差天数
  5. SELECT DATEDIFF(MAX(hiredate), MIN(hiredate)) DIFFRENCE
  6. FROM employees;
  7. # 查询部门编号为90的员工个数
  8. SELECT COUNT(*)
  9. FROM employees
  10. WHERE department_id = 90;

发表评论

表情:
评论列表 (有 0 条评论,251人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MySQL----常见函数

    > 序言: 致每一位读者:你们好! 我叫 Changlon \[昌龙\] ; 是和各位一样奔跑在编程道路上,期望用编程改变世界,改善生活的奔跑者。 > > 写文章的初

    相关 MySQL常见函数

            函数:将某些功能封装到一起,对外提供到一个接口(函数名),通过函数调用的方式可以重复的执行函数里的功能代码从而提高我们的代码的复用性。 MySql自带了很多已