【MySQL】数据库函数通关教程上篇(聚合、数学、字符串、日期、控制流函数)(上)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 文章目录写在前面1 聚合函数1.1 GROUP_CONCAT()1.2 其他聚合函数2 数学函数3 字符串函数4 日期函数4.1 常见日期函数与使用4.2 日期格式5 控制流函数5.1 if逻辑判断语句5.2 case when语句

1 聚合函数


1.1 GROUP_CONCAT()

🆔 简介:

group_concat() 函数首先根据 group by 指定的列进行分组,并且根据分隔符分隔,默认为 ‘,’,将同一个分组的值连接起来,返回一个字符串结果。


🍑 语法格式:


GROUP_CONCAT([DISTINCT] 字段名 
[ORDER BY 排序字段 ASC/DESC] 
[SEPARATOR '分隔符']);
1
2
3

⭕️ 操作示例:


 首先我们需要通过下面的代码创建一个表,而后录入一些数据(随意就行),示例代码及数据表示例如下:

CREATE TABLE emp (
  eid VARCHAR (20) NOT NULL PRIMARY KEY,
  ename VARCHAR (20) NULL,
  age INT NULL,
  dept_id VARCHAR (20) NULL
);


基于此表,简单举例,一段代码对应一个运行结果,供大家理解此函数的作用。

示例 1️⃣ 将所有名字合并成一行,并以爱心分隔

SELECT GROUP_CONCAT(ename SEPARATOR '♥')
FROM emp;


示例 2️⃣ 将所有名字合并成一行,要求根据部门号进行分组,并以年龄总和降序展示

SELECT SUM(age) age_sum, GROUP_CONCAT(ename)
FROM emp
GROUP BY dept_id
ORDER BY age_sum DESC;


1.2 其他聚合函数


聚合函数 作用
count() 统计指定列不为Null的记录行数
sum() 计算指定列的数值和,如果指定列类型不是数值类型,则计算结果为0
max() 计算指定列的最大值,如果指定列是字符串类型,则使用字符串排序运算
min() 计算指定列的最小值,如果指定列是字符串类型,则使用字符串排序运算
avg() 计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0


2 数学函数


🍎 常用数学函数一览表:

函数名 说明
ABS( x ) 返回 x 的绝对值
CEIL( x ) 返回大于等于 x 的最小整数
FLOOR( x ) 返回小于等于 x 的最大整数
GREATEST(num1,num2,num3…) 返回列表中最大的数
LEAST(num1,num2,num3…) 返回列表中最小的数
MAX(expression) 返回字段 expression 中的最大值
MIN(expression) 返回字段 expression 中的最小值
MOD(x,y) 返回 x 除以 y 后的余数
PI() 返回圆周率 3.141593
POW(x,y) 返回 x 的 y 次方
RAND() 返回 0 - 1 的随机数
ROUND( x ) 返回距离 x 最近的整数,遵循四舍五入
ROUND(x,y) 返回距离 x 最近的包含 y 位小数的小数,同样遵循四舍五入
TRUNCATE(x,y) 返回距离 x 最近的包含 y 位小数的小数,但是不会四舍五入


🖊 示例代码:

Tips: 答案在代码注释里哦~~~

SELECT ABS(-10);  -- 10
SELECT CEIL(8.8);  -- 9
SELECT CEIL(-8.8);  -- -8
SELECT FLOOR(8.8);  -- 8
SELECT FLOOR(-8.8);  -- -9
SELECT GREATEST(-1,1,2,3,4,5,6);  -- 6
SELECT LEAST(-1,1,2,3,4,5,6);  -- -1
SELECT MOD(2.5, 2);  -- 0.5
SELECT MOD(2.5, -2);  -- 0.5
SELECT MOD(-2.5, 2);  -- -0.5
SELECT MOD(-2.5, -2);  -- -0.5
SELECT ROUND(5.532);  -- 6
SELECT ROUND(5.532, 1);  -- 5.5
SELECT TRUNCATE(6.67, 1);  -- 6.6

3 字符串函数

🐱 常用字符串函数一览表:


函数 说明
LENGTH( s ) 按照字节计算 s 的长度,具体由编码格式决定
CHAR_LENGTH( s ) 返回字符串 s 的字符数
CHARCTER_LENGTH( s ) 返回字符串 s 的字符数
CONCAT(s1,s2 … sn) 将字符串 s1 s2 等多个字符串合并成一个字符串
CONCAT_WS(D,s1,s2 … sn) 合并多个字符串,并以 D 为分隔符
FIELD(s,s1,s2…) 返回第一个字符串在字符串列表(s1,s2…)中的位置
LTRIM( s ) 去除字符串左边的空格
RTRIM( s ) 去除字符串右边的空格
TRIM( s ) 去除字符串两边的空格
MID(s,n,len) 从字符串的 s 的 n 位置截取长度为 len 的字符串
POSITION( s1 IN s) 返回 s1 在 字符串 s 中第一次出现的位置
REPLACE(s,s1,s2) 将字符串 s2 替代 s 中的所有字符串 s1
REVERSE( s ) 反转字符串 s
RIGHT(s,n) 返回字符串后 n 个字符
STARCMP(s1,s2) 比较字符串 s1 s2,如果相等返回0,s1>s2返回1,s1<s2返回-1



示例代码:

Tips: 答案在代码注释里哦~~~

-- 1.按照字节求长度,注意 utf-8 英文 1 字节 汉字 3 字节
SELECT LENGTH('hello');  -- 5
SELECT LENGTH('祢豆子');  -- 9
-- 2.求字符串长度
SELECT CHAR_LENGTH('祢豆子');  -- 3
-- 3.合并字符串
SELECT CONCAT('我','是','祢豆子');  -- 我是祢豆子
SELECT CONCAT_WS('!','我','是','祢豆子');  -- 我!是!祢豆子
-- 4.返回字符串在列表的第一个位置,没有则返回0
SELECT FIELD('Nezuko','大头','小牛马','Nezuko','几何心凉','Nezuko');  -- 3
SELECT FIELD('小鹏','大头','小牛马');  -- 0
-- 5.去除空格
SELECT LTRIM('   Nezuko');  -- Nezuko
SELECT RTRIM('Nezuko   ');  -- Nezuko
SELECT TRIM('   Nezuko   ');  -- Nezuko
-- 6.字符串截取
SELECT MID('我是祢豆子',3,3);  -- 祢豆子
-- 7.获取位置
SELECT POSITION('627' IN 'Nezuko627');  -- 7
-- 8.替换字符
SELECT REPLACE('是你的大头大头','大头','小牛马');  -- 是你的小牛马小牛马
-- 9.反转字符串
SELECT REVERSE('我喜欢你'); -- 你欢喜我
-- 10.返回字符串后几个字符
SELECT RIGHT('Nezuko627',3);  -- 627
-- 11.字符串比较
SELECT STRCMP('abc','abc');  -- 0
SELECT STRCMP('azc','abc');  -- 1
SELECT STRCMP('abcd','abcdzzzzzz');  -- -1

4 日期函数

日期函数相关内容大家了解下即可,需要使用的时候回过头来再查找。

4.1 常见日期函数与使用

🐘 常用日期函数一览表:

函数名称 说明
UNIX_TIMESTAMP() 返回从1970-01-01 00:00:00 到当前的毫秒值
UNIX_TIMESTAMP(DATE_STRING) 将指定日期转化成为时间戳
FROM_UNIXTIME(BIGINT UNIXTIME,STRINGFORMAT) 将毫秒值时间戳转为指定格式日期
CURDATE() 返回当前日期
CURRENT_DATE() 返回当前日期
DATEDIFF(X, Y) 获取日期差值,返回 Y 距离 X 有多少天
TIMEDIFF(X,Y) 获取时间差值,返回 Y 距离 X 有多少秒
DATE_FORMAT(DATE,STRINGFORMAT) 日期格式化
DATE_SUB(DATE,INTERVAL X DAY/MOUTH…) 日期减法
DATE_ADD(DATE,INTERVAL X DAY/MONTH…) 日期加法
EXTRACT(MONTH/DAY/YEAR/HOUR FROM DATE) 从日期中获取月、日等


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
13 3
|
3天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
18 3
|
3天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE &#39;log_%&#39;;`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
22 2
|
16天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
117 15
|
10天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
17天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
21天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
29天前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
28天前
|
存储 机器学习/深度学习 监控
南大通用GBase 8s数据库onbar基础使用教程
数据备份与恢复是确保数据安全和业务连续性的关键。onbar作为GBase 8s数据库的备份工具,需配合存储管理器使用,通过配置BAR_BSALIB_PATH等参数,实现数据的备份与恢复。本文详细介绍了onbar的配置、备份、恢复及监控流程,帮助数据库管理员构建高效的数据保护方案。
|
1月前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
184 0