深入了解MySQL中的SQL函数

devtools/2024/9/23 4:16:55/

深入了解MySQL中的SQL函数可以极大地提升数据处理的能力和灵活性。这些函数涵盖了从数学计算、字符串操作、日期时间处理到复杂的聚合和窗口函数。在这篇文章中,我们将详细讨论MySQL中的各种SQL函数,包括它们的用途、使用场景和一些高级技巧。

数学函数

MySQL提供了多种数学函数来处理数值数据,常用的包括:

  • ABS(x): 返回x的绝对值。
  • CEIL(x)CEILING(x): 返回大于或等于x的最小整数。
  • FLOOR(x): 返回小于或等于x的最大整数。
  • POW(x, y)POWER(x, y): 返回xy次幂。
  • SQRT(x): 返回x的平方根。
  • RAND(): 生成一个0到1之间的随机浮点数。
sql">SELECT ABS(-42);       -- 输出: 42
SELECT CEILING(9.2);   -- 输出: 10
SELECT FLOOR(9.8);     -- 输出: 9
SELECT POW(2, 3);      -- 输出: 8
SELECT SQRT(16);       -- 输出: 4
SELECT RAND();         -- 输出: 随机数

字符串函数

字符串函数在数据清洗、格式化和提取信息中扮演关键角色:

  • LENGTH(str): 返回字符串str的长度。
  • CONCAT(str1, str2, ...): 将两个或多个字符串连接成一个字符串。
  • SUBSTRING(str, pos, len): 提取字符串str从位置pos开始长度为len的子字符串。
  • REPLACE(str, from_str, to_str): 替换字符串str中的所有from_strto_str
  • LTRIM(str)RTRIM(str): 去除字符串str的左边或右边的空格。
  • UPPER(str)LOWER(str): 将字符串str转换为大写或小写。
sql">SELECT LENGTH('Hello World');        -- 输出: 11
SELECT CONCAT('Hello', ' ', 'World');-- 输出: 'Hello World'
SELECT SUBSTRING('Hello World', 2, 4);-- 输出: 'ello'
SELECT REPLACE('Hello World', 'World', 'MySQL');  -- 输出: 'Hello MySQL'
SELECT LTRIM('   Hello');            -- 输出: 'Hello'
SELECT RTRIM('World   ');            -- 输出: 'World'
SELECT UPPER('sql>mysql');               -- 输出: 'MYSQL'

日期和时间函数

处理日期和时间是数据库操作中的常见需求:

  • NOW(): 返回当前的日期和时间。
  • CURDATE(): 返回当前的日期。
  • CURTIME(): 返回当前的时间。
  • DATE_ADD(date, INTERVAL expr type): 向日期date添加时间间隔。
  • DATEDIFF(expr1, expr2): 返回两个日期之间的天数。
  • DAYOFWEEK(date): 返回日期date是星期几。
sql">SELECT NOW();                      -- 输出: 当前日期和时间
SELECT CURDATE();                  -- 输出: 当前日期
SELECT CURTIME();                  -- 输出: 当前时间
SELECT DATE_ADD('2023-01-01', INTERVAL 1 MONTH);  -- 输出: '2023-02-01'
SELECT DATEDIFF('2023-01-10', '2023-01-01');      -- 输出: 9
SELECT DAYOFWEEK('2023-01-01');    -- 输出: 根据星期几的编号

聚合函数

聚合函数对一组值执行计算,常用于GROUP BY语句中:

  • SUM(expr): 计算表达式expr的总和。
  • AVG(expr): 计算表达式expr的平均值。
  • MIN(expr)MAX(expr): 计算表达式expr的最小值和最大值。
  • COUNT(expr): 计算表

达式expr的值的数量。

sql">SELECT SUM(salary) FROM employees;
SELECT AVG(salary) FROM employees;
SELECT MIN(salary), MAX(salary) FROM employees;
SELECT COUNT(*) FROM employees;

窗口函数

窗口函数对结果集的子集执行计算,这些子集称为窗口。它们在SQL标准中的支持不断增强:

  • ROW_NUMBER() OVER (ORDER BY column): 对结果集中的行进行编号。
  • RANK() OVER (ORDER BY column): 对结果集中的行进行排名。
  • LEAD(value, n, default) OVER (PARTITION BY column ORDER BY column): 返回当前行之后第n行的值。
sql">SELECT username, salary, RANK() OVER (ORDER BY salary DESC) AS salary_rank
FROM employees;

深入理解和合理应用这些SQL函数可以极大地提高数据处理效率和精度,是每一个数据库专业人士必备的技能。掌握这些高级函数将帮助你在数据分析和数据库管理中更加得心应手。


http://www.ppmy.cn/devtools/8835.html

相关文章

MLP-Mixer理解

重新回顾mlp范式,又不想读论文,于是: 佬文: https://www.zhihu.com/tardis/sogou/art/372642234

使用 Docker 部署 Draw.io 在线流程图系统

1)介绍 Draw.io GitHub:https://github.com/jgraph/drawio Draw.io 是一款开源的绘制流程图的工具,拥有大量免费素材和模板。程序本身支持中文在内的多国语言,创建的文档可以导出到多种网盘或本地。无论是创建流程图、组织结构图…

【通信原理笔记】【四】数字基带传输——4.1 数字基带信号

文章目录 前言一、数字信号二、数字基带信号波形2.1 码元波形2.2 相对码2.3 多电平码 总结 前言 从这一节开始介绍数字通信系统中的数字基带传输部分。与模拟通信系统相比,数字通信系统传输的对象是数字的离散信号而非连续的模拟信号,本节先学习什么是数…

ChatGPT及GIS、生物、地球、农业、气象、生态、环境科学领域案例

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

c#创建安装windows服务

在C#中创建并安装Windows服务,通常需要以下几个步骤: 创建Windows服务项目编写服务逻辑编译服务项目安装服务启动和停止服务 下面是一个简单的步骤指南: 步骤 1: 创建Windows服务项目 在Visual Studio中,创建一个新的Windows服…

@CrossOrigin的使用

CrossOrigin的使用 1.使用场景2.用法3.示例3.1 标注在方法上3.2 标注在类上 3.属性配置 1.使用场景 前后端分离应用:当前端应用和后端服务部署在不同的域或端口上时,前端应用尝试向后端服务发起请求时,可能会遇到同源策略的限制。这时&#…

射频识别技术助力产品分拣:提升效率与准确性

射频识别技术助力产品分拣:提升效率与准确性 RFID技术在产品分拣中具有重要的应用,它利用射频信号进行非接触式的自动识别,能够高效、准确地完成产品分拣工作。 在产品分拣中,RFID技术的主要应用方式是在产品上粘贴RFID电子标签&…

MyBatisCodeHelperPro插件免激活安装

1、下载 MyBatisCodeHelperPro 插件包(内部已经激活) 链接: https://pan.baidu.com/s/1i2Nvlnaea92U1Jx5E8xJUA 提取码: jmms 2、安装,点开插件,选择本地安装,选择下载的MyBatisCodeHelper-Pro.zip即可完成安装。