当前位置: 首页 > article >正文

MySQL的一些常用函数

1. 日期和时间函数

  • CURDATE(): 返回当前日期。
  • CURTIME(): 返回当前时间。
  • NOW(): 返回当前日期和时间。
  • DATE(): 提取日期部分。
  • DATEDIFF(date1, date2): 计算两个日期之间的天数差。
  • TIMEDIFF(time1, time2): 计算两个时间之间的差值。
  • DATE_ADD(date, INTERVAL expr unit): 在日期上增加一个时间间隔。
  • DATE_SUB(date, INTERVAL expr unit): 在日期上减少一个时间间隔。

2. 字符串函数

  • CONCAT(str1, str2, ...): 连接多个字符串。
  • LOWER(str): 将字符串转换为小写。
  • UPPER(str): 将字符串转换为大写。
  • SUBSTRING(str, pos, len): 提取子字符串。
  • LENGTH(str): 返回字符串的长度。
  • TRIM(str): 去除字符串两端的空格。
  • REPLACE(str, find_str, replace_str): 替换字符串中的子字符串。
  • LEFT(str, len): 从字符串左侧提取指定长度的子字符串。
  • RIGHT(str, len): 从字符串右侧提取指定长度的子字符串。
  • CONVERT(str, UNSIGNED): 将字符串转换为无符号整数,可以用于排序

3. 数学函数

  • ABS(x): 返回绝对值。
  • ROUND(x, d): 四舍五入到小数点后 d 位。
  • RAND(): 返回一个随机数。
  • MOD(x, y): 返回 x 除以 y 的余数。
  • POW(x, y): 返回 x 的 y 次方。
  • SQRT(x): 返回 x 的平方根。

4. 聚合函数

  • COUNT(column): 计算指定列的行数。
  • SUM(column): 计算指定列的总和。
  • AVG(column): 计算指定列的平均值。
  • MAX(column): 返回指定列的最大值。
  • MIN(column): 返回指定列的最小值。

5. 控制流函数

  • IF(condition, value_if_true, value_if_false): 条件判断。
  • CASE WHEN condition THEN result [WHEN condition THEN result ...] [ELSE result] END: 复杂条件判断。
  • COALESCE(expr1, expr2, ...): 返回第一个非 NULL 的表达式值。

6. 其他常用函数

  • IFNULL(expr1, expr2): 如果 expr1 是 NULL,则返回 expr2,否则返回 expr1。
  • NULLIF(expr1, expr2): 如果 expr1 等于 expr2,则返回 NULL,否则返回 expr1。

7.子查询

7.1 子查询作为列

示例
假设我们想在查询结果中显示每个员工的工资以及其所在部门的平均工资。

SELECT 
	e.first_name, 
	e.last_name, 
	e.salary, 
	(SELECT AVG(salary) 
		FROM employees 
		WHERE department_id = e.department_id
	) AS avg_dept_salary
FROM employees e;
7.2 子查询作为表

示例
假设我们想找出每个部门的最高工资和最低工资。

SELECT d.department_name, max_salary, min_salary
FROM departments d
JOIN (
  SELECT department_id, MAX(salary) AS max_salary, MIN(salary) AS min_salary
  FROM employees
  GROUP BY department_id
) subq
ON d.department_id = subq.department_id;

示例

以下是一些示例,展示如何在 SQL 查询中使用这些函数:

-- 获取当前日期
SELECT CURDATE();

-- 计算两个日期之间的天数差
SELECT DATEDIFF('2025-12-01', CURDATE()) AS days_difference;

-- 连接字符串
SELECT CONCAT('Hello, ', 'World!');

-- 计算指定列的总和
SELECT SUM(salary) AS total_salary FROM employees;

-- 条件判断
SELECT IF(salary > 50000, 'High', 'Low') AS salary_level FROM employees;

-- 复杂条件判断
SELECT 
  CASE 
    WHEN age < 18 THEN 'Minor'
    WHEN age BETWEEN 18 AND 60 THEN 'Adult'
    ELSE 'Senior'
  END AS age_group
FROM users;

这些函数和方法在日常的数据库操作中非常有用,可以帮助你更高效地处理和分析数据。


http://www.kler.cn/a/418645.html

相关文章:

  • Git命令大全(超详细)
  • HTMLHTML5革命:构建现代网页的终极指南 - 4. 使用元素
  • 11.26 深度学习-激活函数
  • 电子应用设计方案-31:智能AI音响系统方案设计
  • 泷羽Sec-星河飞雪-BurpSuite之解码、日志、对比模块基础使用
  • #Java-JDK7、8的时间相关类,包装类
  • ARM实现URAT通信,看门狗中断,裸机开发
  • 开发一套ERP 第八弹 RUst 插入数据
  • docker服务容器化
  • VR眼镜可视化编程:开启医疗信息系统新纪元
  • [保姆式教程]使用labelimg2软件标注定向目标检测数据和格式转换
  • MATLAB中inputdlg函数用法
  • 【开源免费】基于SpringBoot+Vue.JS服装生产管理系统(JAVA毕业设计)
  • Java中的请求重发机制:详细解读与实现
  • nginx 代理 web service 提供 soap + xml 服务
  • 【H2O2|全栈】Node.js(2)
  • Solon (Spring 的替代方案)永久商用免费
  • Android 图形系统之五:Gralloc
  • 第十三章 使用 DHCP 动态管理主机地址
  • Spring集成Mybatis的实现
  • 基于rpcapd与wireshark的远程实时抓包的方法
  • 【CSS in Depth 2 精译_900】附录B:CSS 预处理器简介
  • IAR Embedded Workbench for Arm 使用技巧
  • 【深度学习】【RKNN】【C++】应用程序编程接口化处理详细教程
  • 计算机网络——数据链路层Mac帧详解
  • 良好的并发编程习惯之封闭(Confinement)