博客
关于我
mysql之常见函数
阅读量:790 次
发布时间:2023-02-11

本文共 3042 字,大约阅读时间需要 10 分钟。

SQL 函数入门:聚合函数与单行函数

作为数据库开发人员或数据分析师,熟悉SQL中的函数是必不可少的。SQL函数分为聚合函数和单行函数两大类,分别用于数据统计和数据处理。以下将详细介绍两种函数的用法、注意事项以及实际应用场景。


一、聚合函数(统计函数)

聚合函数用于对数据进行统计和汇总,常见的包括SUM、AVG、MAX、MIN、COUNT等函数。

1. 基本聚合函数

  • SUM():用于求和,适用于数值型数据,忽略null值。

    select SUM(salary) from employees;  # 求总工资
  • AVG():计算平均值,同样适用于数值型数据。

    select AVG(salary) from employees;  # 计算平均工资
  • MAX() 和 MIN():求最大值和最小值,适用于任何数据类型,忽略null值。

    select MAX(salary) from employees;  # 求最大工资select MIN(salary) from employees;  # 求最小工资
  • COUNT():统计非空值的数量,适用于任何数据类型。

    select COUNT(salary) from employees;  # 统计非空工资记录数量

2. 与DISTINCT配合使用

为了去除重复值后再进行统计,可以使用DISTINCT关键字与聚合函数配合使用。

select SUM(DISTINCT salary) from employees;  # 去重后求工资总和select COUNT(DISTINCT salary) from employees;  # 去重后统计工资种类数量

3. COUNT函数的详细用法

COUNT函数的用法较为灵活,常见场景包括:

  • 统计非空值数量:
    select count(salary) from employees;  # 统计非空工资记录
  • 统计所有记录数量(默认行为):
    select count(*) from employees;  # 统计表中总记录数
  • 通过添加列来统计行数(少见):
    select count(1) from employees;  # 通过添加虚拟列统计行数

4. 聚合函数的注意事项

  • 字段限制:聚合函数通常只能用于GROUP BY后的字段,否则会报错。

    select AVG(salary), employee_id from employees;  # 错误,employee_id不是GROUP BY字段
  • 性能考虑:在处理大数据量时,尽量避免多次使用聚合函数,否则可能影响性能。


二、单行函数(数据处理)

单行函数主要用于字符串操作、日期处理和数学计算等场景。

1. 字符函数

  • LENGTH():获取字符串的字节长度。

    select LENGTH("mary");  # 返回4
  • CONCAT():拼接字符串。

    select CONCAT("jack", " loves", " rose");  # 返回"jack loves rose"
  • UPPER() 和 LOWER():转换字符串大小写。

    select UPPER("JACKrose");  # 返回"JACKROSE"select LOWER("JACKrose");  # 返回"jackrose"
  • SUBSTR():截取字符串子串(MySQL中索引从1开始)。

    select SUBSTR("helloworld", 4);  # 返回"world"select SUBSTR("helloworld", 2, 4);  # 返回"ello"
  • INSTR():查找字符串中子串的位置。

    select INSTR("老鼠爱大米哈哈", "大米");  # 返回4
  • TRIM():去掉字符串两端的空格。

    select TRIM("  你今天学习了吗  ");  # 返回"You今天学习了吗"
  • LPAD 和 RPAD:左填充或右填充字符串。

    select LPAD("也有梦想", 8, "咸鱼");  # 返回"咸鱼咸鱼也有梦想"
  • REPLACE():替换字符串中的子串。

    select REPLACE("如果我是程序员你愿意嫁给我吗?", "程序员", "DJ");  # 返回"If I是DJ你愿意嫁给我吗?"

2. 数学函数

  • ROUND():四舍五入数值。

    select ROUND(1.65);  # 返回2select ROUND(1.12);  # 返回1
  • CEIL 和 FLOOR:向上取整或向下取整。

    select CEIL(1.93);  # 返回2select FLOOR(-2.76);  # 返回-2
  • TRUNCATE():截断小数。

    select TRUNCATE(1.9342, 2);  # 返回1.93
  • MOD():取余运算。

    select MOD(10, 3);  # 返回1select MOD(-10, 3);  # 返回-1

3. 日期函数

  • NOW()、CURDATE 和 CURTIME:获取当前日期和时间。

    select NOW();  # 返回当前日期和时间select CURDATE();  # 返回当前日期select CURTIME();  # 返回当前时间
  • DATE和TIME分解函数

    select YEAR(NOW()), MONTH(NOW()), DAY(NOW());  # 返回年、月、日
  • DATEDIFF():计算两个日期之间的天数。

    select DATEDIFF(MAX(hiredate), MIN(hiredate)) from employees;  # 求员工入职日期间隔
  • STR_TO_DATE 和 DATE_FORMAT:日期格式转换。

    select STR_TO_DATE('09-13-2020', '%m-%d-%Y');  # 返回2020-09-13select DATE_FORMAT(NOW(), '%d日--%m月--%Y年');  # 返回格式化日期

4. 流程控制函数

  • IF语句:条件判断。

    select IF(10 > 5, '大', '小');  # 返回"大"
  • CASE表达式:分支处理。

    select last_name, salary,  CASE    WHEN salary > 20000 THEN 'A级别'    WHEN salary > 15000 THEN 'B级别'    WHEN salary > 10000 THEN 'C级别'    ELSE 'D级别'  END as 工资级别from employeesorder by salary DESC;

5. 其他函数

  • VERSION():获取数据库版本。

    select VERSION();  # 返回数据库版本信息
  • DATABASE():获取当前数据库名称。

    select DATABASE();  # 返回当前数据库名称
  • USER():获取当前登录用户信息。

    select USER();  # 返回用户信息

结语

通过上述介绍,可以看到SQL函数的强大功能,涵盖了从数据统计到数据处理的各个方面。熟练掌握这些函数,能够显著提升数据库开发和数据分析的效率。在实际工作中,合理使用这些函数可以帮助你快速解决问题,提升工作效率。

转载地址:http://xxbfk.baihongyu.com/

你可能感兴趣的文章
MySQL事务详解结合MVCC机制的理解
查看>>
MySQL事务隔离级别:读未提交、读已提交、可重复读和串行
查看>>
MySQL事务隔离级别:读未提交、读已提交、可重复读和串行
查看>>
webpack css文件处理
查看>>
mysql二进制包安装和遇到的问题
查看>>
MySql二进制日志的应用及恢復
查看>>
mysql互换表中两列数据方法
查看>>
mysql五补充部分:SQL逻辑查询语句执行顺序
查看>>
mysql交互式连接&非交互式连接
查看>>
MySQL什么情况下会导致索引失效
查看>>
Mysql什么时候建索引
查看>>
MySql从入门到精通
查看>>
MYSQL从入门到精通(一)
查看>>
MYSQL从入门到精通(二)
查看>>
mysql以下日期函数正确的_mysql 日期函数
查看>>
mysql以服务方式运行
查看>>
mysql优化--索引原理
查看>>
MySQL优化之BTree索引使用规则
查看>>
MySQL优化之推荐使用规范
查看>>
Webpack Critical CSS 提取与内联教程
查看>>