MySQL基础:函数

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文介绍了MySQL中几种常用的内建函数,包括字符串函数、数值函数、日期函数和流程函数。字符串函数如`CONCAT()`用于拼接字符串,`TRIM()`用于去除字符串两端的空格,`MOD()`求余数,`RAND()`生成随机数,`ROUND()`四舍五入。日期函数如`CURDATE()`返回当前日期,`NOW()`返回当前日期和时间,`DATE_ADD()`添加时间间隔,`DATEDIFF()`计算日期差。流程函数如`IF()`和`CASE WHEN THEN ELSE END`用于条件判断。聚合函数如`COUNT()`统计行数,`SUM()`求和,`AVG()`求平均值

函数是指一段可以直接被另一段程序调用的程序或代码,在MySQL中也内置了许多函数供开发者去调用,例如之前提到的聚合函数,本节再去介绍一些其他常用的函数

字符串函数

函数

功能

CONCAT(S1,S2...Sn)

字符串拼接,将S1,S2...Sn拼接成一个字符串

LOWER(str)

将字符串str全部转换为小写

UPPER(str)

将字符串str全部转换为大写

LPAD(str,n,pad)

左填充,用字符串pad对str的左边进行填充,达到n个字符长度

RPAD(str,n,pad)

右填充,用字符串pad对str的右边进行填充,达到n个字符长度

TRIM(str)

去掉字符串头部和尾部的空格

SUBSTRING(str,start,len)

返回从字符串str从start起的len个长度的字符串

接下来分别对这些函数进行演示

-- concat(S1,S2...Sn)字符串拼接,将S1,S2...Sn拼接成一个字符串
select concat('hello','mysql');
-- LOWER(str) 将字符串str全部转换为小写
select lower('Hello');
-- UPPER(str) 将字符串str全部转换为大写
select upper('Hello');
-- LPAD(str,n,pad)左填充,用字符串pad对str的左边进行填充,达到n个字符长度
select lpad('01',5,'-');
-- RPAD(str,n,pad)右填充,用字符串pad对str的右边进行填充,达到n个字符长度
select rpad('01',5,'-');
-- TRIM(str) 去掉字符串头部和尾部的空格
select trim(  'hell o' );
-- SUBSTRING(str,start,len) 返回从字符串str从start起的len个长度的字符串
select substring('hello',3,2);

trim()只会去除开头和结尾的空格,字符串中间的空格并不会被去除

这些函数还可以和 update 操作搭配使用:

update student
set sn = lpad(sn, 6, '0');

数值函数

函数

功能

CEIL(x)

向上取整

FLOOR(x)

向下取整

MOD(x,y)

返回x/y的模

RAND()

返回0~1的随机数

ROUND(x,y)

求参数x的四舍五入的值,保留y位小数

向上取整时,只要小数部分不是 0 ,就会向上取整

保留小数位数时,采用的是四舍五入的方法

-- CEIL(x) 向上取整
select ceil(1.1);
-- floor(x) 向下取整
select floor(1.1);
-- MOD(x,y) 返回x/y的模
select mod(3, 5);
-- RAND() 返回0~1的随机数
select rand();
-- ROUND(x,y) 求参数x的四舍五入的值,保留y位小数
select round(2.345,2);

函数与函数之间可以进行嵌套,例如生成一个四位数的随机数就可以这样写

-- 生成一个四位数随机数
select round(rand()*10000,0);

但此时还有一个小问题,如果说生成出来的0~1的数是 0.002这样的数,那么最终结果就不是4位数了,就需要在前面补上0,所以还需要调用lpad()函数

select lpad(round(rand()*10000,0),4,'0');

日期函数

函数

功能

CURDATE()

返回当前日期

CURTIME()

返回当前时间

NOW()

返回当前日期和时间

YEAR(date)

获取指定date的年份

MONTH(date)

获取指定date的月份

DAY(date)

获取指定date的日期

DATE_ADD(date,INTERVAL expr type)

返回一个日期/时间值加上一个时间间隔expr后的时间值

DATEDIFF(date1,date 2)

返回起始时间date1和结束时间date2之间的天数

-- 当前日期
select curdate();
-- 当前时间
select curtime();
-- 当前日期和时间
select now();

-- 分别获取year,month,day
select year(now());
select month(now());
select day(now());

接下来看时间间隔相关的函数

-- 添加时间间隔
select date_add(now(), interval 10 day);
-- 求出时间间隔
select datediff('2024-07-01', '2024-08-01');

上面的10 day也可以换成其他的时间单位,例如year,minute等

datediff() 函数只能计算相差的天数

流程函数

流程函数可以在SQL语句中实现条件筛选,从而提高语句的效率

函数

功能

IF(value,t,f)

如果value为true,就返回 t ,否则返回 f

IFNULL(value1,value2)

如果value1不为空,返回value1,否则返回value2

CASE WHEN[val 1] THEN[res1]...ELSE[default] END

如果val1为true,返回res1,否则返回default默认值

CASE[expr] WHEN[val 1] THEN[res1]...ELSE[default] END

如果expr的值等于val1,返回res1,否则返回default默认值

这里判断null是依然和之前一样,"" 这样一个空的字符串并不是null

-- if和ifnull
select if(true, 'ok', 'no');
select ifnull('hello', 'ok');

-- case when then end
select (case name when '许仙' then '民间传说人物' when '白素贞' then '民间传说人物' else '其他' end)
from student;
-- null的判断
SELECT (CASE WHEN mail IS NULL THEN '无邮箱' ELSE '有邮箱' END) AS mail_status
FROM student;

这个是加入了expr的值

select (case '许仙' when '许仙' then '民间传说人物' else '不存在' end);

聚合函数

函数

说明

COUNT([DISTINCT] expr)

返回查询到的数据的数量

SUM([DISTINCT] expr)

返回查询到的数据的总和

AVG([DISTINCT] expr)

返回查询到的数据的平均值

MAX([DISTINCT] expr)

返回查询到的数据的最大值

MIN([DISTINCT] expr)

返回查询到的数据的最小值

💎5.1 COUNT() 统计所有行

-- 统计表中的行数
select count(*)
from student;
-- 也可以传入常量 1
select count(1)
from student;

星号(*)并不直接表示表中的任意一列,而是作为一个特殊的指示符,告诉数据库管理系统(DBMS)计算表中的行数,而不关心表中的列内容或是否有NULL值。

还可以指定某一列进行统计:

-- 指定列统计
select count(id)
from student;
select count(name)
from student;

💎5.2 SUM() 求和

创建一张成绩表,计算语文的总成绩

create table exam
(
    id      bigint primary key auto_increment,
    name    varchar(20),
    chinese decimal(5, 2),
    math    decimal(5, 2)
);
insert into exam(id, name, chinese, math)
values (1, '张三', 98, 95),
       (2, '李四', 97, 99),
       (3, '王五', 96, 98),
       (4, '赵六', 97, 94);
-- 计算语文总成绩
select *
from exam;
select sum(chinese)
from exam;

查询到的结果存储在了临时表中,不受字段中长度的约束(decimal(5, 2)

如果说求和的那一列存在null的话,会是像之前表达式相加时,null加上任何值都是null的情况吗?

insert into exam values (5,'钱七',96,null);
select sum(math)
from exam;

可以看出,最终的值并没有加上null ,并且,如果是非数值类型求和是没有意义的

💎5.3 AVG() 求平均值

-- 求平均值
select avg(math)
from exam;
-- 参数里边可以包含表达式,结果可以使用别名
select avg(math + chinese) as 总分平均值
from exam;

💎5.4 MAX()和MIN()

求指定列中的最大值和最小值

-- 求最大值和最小值
select max(chinese) as 语文最大值,
       min(math) as 数学最小值
from exam;

可以多个聚合函数使用,同时也可以使用别名


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
JSON 关系型数据库 MySQL
Mysql(5)—函数
MySQL提供了许多内置的函数以帮助用户进行数据操作和分析。这些函数可以分为几类,包括聚合函数、字符串函数、数值函数、日期和时间函数、控制流函数等。
89 1
Mysql(5)—函数
|
12天前
|
SQL 关系型数据库 MySQL
MySQL常见函数第二期,你都用过哪些呢 ?
本期介绍了20个常用的MySQL函数,涵盖日期处理(如CURDATE()、DATE_FORMAT())、数学运算(如ABS()、ROUND())、统计分析(如COUNT()、SUM())等,帮助提高SQL查询效率和数据处理能力。希望对大家的学习有所帮助。
56 7
|
14天前
|
关系型数据库 MySQL
MySQL常见函数第一期,你都用过哪些呢 ?
本期介绍10个常用的MySQL函数:字符串连接(CONCAT)、提取子字符串(SUBSTRING)、获取字符串长度(LENGTH)、转换大小写(UPPER、LOWER)、去除空格(TRIM)、替换字符串(REPLACE)、查找子字符串位置(INSTR)、带分隔符的字符串连接(CONCAT_WS)以及获取当前日期时间(NOW)。
55 8
|
15天前
|
数据采集 关系型数据库 MySQL
MySQL常用函数:IF、SUM等用法
本文介绍了MySQL中常用的IF、SUM等函数及其用法,通过具体示例展示了如何利用这些函数进行条件判断、数值计算以及复杂查询。同时,文章还提到了CASE WHEN语句和其他常用函数,如COUNT、AVG、MAX/MIN等,强调了它们在数据统计分析、数据清洗和报表生成中的重要性。
|
19天前
|
关系型数据库 MySQL 数据处理
【MySQL】函数
MySQL 提供了丰富的函数集,涵盖字符串处理、数值运算、日期时间操作和聚合计算等多个方面。这些函数在日常数据库操作中极为重要,通过合理使用这些函数,可以大大提高数据处理和查询的效率。用户还可以通过自定义函数,扩展 MySQL 的功能以满足特定需求。
26 3
|
21天前
|
关系型数据库 MySQL 数据处理
MySQL函数与约束
MySQL 提供了丰富的函数和强大的约束机制,用于数据处理和完整性维护。通过掌握这些工具,可以有效地管理和分析数据库中的数据,确保数据的一致性和准确性。无论是在日常数据查询中使用内置函数,还是在数据库设计中应用各种约束,都是确保数据库系统稳定、高效运行的关键。希望本文对您理解和应用 MySQL 函数与约束有所帮助。
27 1
|
1月前
|
关系型数据库 MySQL Serverless
MySQL函数
最常用的MySQL函数,包括聚合函数,字符串函数,日期时间函数,控制流函数等
36 1
|
2月前
|
存储 SQL 关系型数据库
MySQL 存储函数及调用
MySQL 存储函数及调用
183 3
|
1月前
|
SQL NoSQL 关系型数据库
|
2月前
|
缓存 关系型数据库 MySQL
MySQL 满足条件函数中使用查询最大值函数
MySQL 满足条件函数中使用查询最大值函数
151 1