MySQL基础:函数

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【8月更文挑战第19天】

函数是指一段可以直接被另一段程序调用的程序或代码,在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入门技能树SQL高级技巧CTE和递归查询91755 人正在系统学习中

2的n次方_
关注

21

27

10

专栏目录
MySQL基础 - 表达式和函数
宋同学shl
2540
表达式 学过小学数学的我们应该知道,将数字和运算符连接起来的组合称之为表达式,比方说这样: 1 + 1 5 8 我们可以将其中的数字称之为操作数,运算符可以称之为操作符。特殊的,单个操作数也可以被看作是一个特殊的表达式。 在MySQL中也有表达式的概念,不过操作数和操作符的含义有了扩充。下边详细看一下。 操作数 MySQL中操作数可以是下边这几种类型: 常数 常数很好理解,我们平时用到的数字、字符串、时间值什么的都可以被称为常数,它是一个确定的值,比如数字1,字符串'abc',
MYSQL基础:常用函数.docx
08-08
在MySQL中,函数是处理和操作数据的重要工具,可以帮助用户执行各种复杂的计算和转换。以下是关于MySQL常用函数的详细说明: 一、聚合函数 聚合函数对一组数据进行操作并返回单个结果,常用于统计分析。常见的聚合...
10 条评论
熵减玩家
热评
博主的文章不仅增长了我的知识,更激发了我对这一领域的兴趣。感谢博主的无私分享,期待更多精彩内容!
写评论
MySQL七: 聚合函数
开发者
1104
聚合函数(聚集、分组) 作用于一组数据,并对一组数据返回一个值。 一、常用的聚合函数 AVG和SUM函数 可以对数值型数据使用 MIN和MAX函数 可以对任意数据类型使用 SELECT AVG(salary),SUM(salary),MIN(salary),MAX(salary) FROM employees; COUNT函数 可以对任意数据类型使用,返回表中的记录总数 区别:COUNT(
),COUNT(1),COUNT(列名) ① 搜索引擎为MyISAM,则三者的执行效率相同 ② 搜索引
MySQL数据库基础:各类窗口函数操作一文详解
master_hunter的博客
2803
窗口函数适用场景:对分组统计结果中的每一条记录进行计算的场景下, 使用窗口函数更好。窗口函数(Window Function)可以像聚合函数一样对一组数据进行分析并返回结果,二者的不同之处在于,窗口函数不是将一组数据汇总成单个结果,而是为每一行数据都返回一个结果。聚合函数和窗口函数的区别如下图所示。窗口函数可以分为静态窗口函数和动态窗口函数,其中,静态窗口函数的窗口大小是固定的,不会因为记录的不同而不同;动态窗口函数的窗口大小会随着记录的不同而变化。
MySQL数据库基础:JSON函数各类操作一文详解
master_hunter的博客
2504
很多日常业务场景都会用到json文件作为数据存储起来,而mysql5.7以上就提供了存储json的支撑。往常存储json一般都保留在pg库或者是hive库里面,现在mysql有了支持的话基本业务都可以用mysql来实现。现在mysql8.x版本对json字符出处理已经做的非常完善了。现在就让我们来详细了解一下关于json数据数据类型mysql都有哪些函数能够对其进行操作。
mysql: 常用函数总结以及高级函数用法
yubin1285570923的博客
4264
rand() 随机 select rand();
Mysql基础:数据库数据文件
03-10

  • 函数(FUNCTIONS):MySQL提供了许多内置函数,例如数学函数、字符串函数、日期时间函数等,也可以自定义用户定义的函数来扩展功能。 - 存储过程(PROCEDURE):存储过程是一组预编译的SQL语句,可以接受参数,...
    MySQL数据库:存储函数调用.pptx
    05-29
    数据库编程 存储函数的调用、举例 课程目标 ...调用此存储函数: SELECT author_book(‘计算机应用基础’); 存储函数举例 【例】 创建一个存储函数来删除Sell表中有但Book表中不存在的记录。 DELIMITER
    MySQL 基础 - 流程函数.md
    07-31

    MySQL基础 - 流程函数 #### 概述 MySQL是一种广泛使用的开源关系型数据库管理系统,在数据管理和查询方面提供了强大的支持。为了实现更复杂的逻辑控制和条件判断,MySQL内置了一系列流程控制函数,如IF函数、...

    MySQL 基础 - 日期函数.md
    07-31

    MySQL 基础 - 日期函数 #### 概述 在进行数据库操作时,日期相关的数据处理是非常常见的需求之一。MySQL 提供了一系列强大的日期函数,可以帮助开发者轻松地完成日期和时间的操作。本文档旨在详细介绍 MySQL ...

    MySQL中处理JSON数据:大数据分析的新方向
    Chujun123528的博客
    1117
    灵活性:JSON数据类型允许你在单个列中存储复杂的数据结构,如数组和嵌套对象,这减少了需要创建多个表来存储相关信息的必要性。查询能力:MySQL为JSON数据类型提供了一系列内置的函数,如, , , , , 等,使得查询和修改JSON数据变得非常便捷。索引支持:MySQL支持为JSON文档中的特定路径创建虚拟列(Generated Columns),然后可以在这些虚拟列上创建索引,从而加速基于JSON内容的查询。性能优化:随着MySQL的不断改进,对JSON数据的处理性能也在不断提高。虽然与专门的NoSQL
    mysql创建quartz定时任务相关表sql
    最新发布
    xiexf20230814的博客
    238
    -存储Cron触发器的cron表达式和其他信息。--接下来,创建索引以提高性能;--存储简单触发器的额外属性。--存储复杂触发器的简单属性。--存储触发器的blob数据。--存储已触发的触发器信息。--存储调度器的状态信息。--存储暂停的触发器组。--存储触发器信息。
    MySQL单表条件查询语句
    weixin_72431427的博客
    292
    MySQL中的一些常见的单表条件查询语句。
    SpringBoot MySQL BinLog 监听数据变化(多库多表)
    掐指一算乀缺钱
    414
    SpringBoot MySQL BinLog 监听数据变化(多库多表) 库.表,库1.表1,库1.表2
    51 无显式主键时 mysql 增加的 DB_ROW_ID
    970655147的专栏
    373
    假设有 implicit_id_table_02, 然后增加了 两条记录, 之后再向 implicit_id_table 中增加记录, 得到的 DB_ROW_ID 为 558。创建表的时候, 创建了该 三个系统字段, DB_ROW_ID, DB_TRX_ID, DB_ROLL_PTR。row_id 的处理是通过 dict_sys_get_new_row_id 函数来获取的。为 DB_ROW_ID, DB_TRX_ID, DB_POLLPTR 分配存储空间的地方。
    MySQL——单表查询(二)按条件查询(10)带 OR 关键字的多条件查询
    PAP
    289
    MySQL——单表查询(二)按条件查询(10)带 OR 关键字的多条件查询
    【MySQL】JDBC的基础使用
    Starc
    的博客
    573
    JDBC是Java连接和使用数据库的关键技术,它的重复性很高,仍然需要多加练习。源码JDBC的基础使用。
    Mysql之视图
    2301_77358096的博客
    365
    创建语法:create [or replace] view 视图名称 as select from where [with check option]查询:show create view 视图名称查看视图数据:select from 视图名称修改:1,可以使用创建的语法更新,记得加or replace2.alter view 视图名称 as select 表名删除:drop view [if exists] 视图名称。
    MySQL——单表查询(二)按条件查询(5)带 DISTINCT 关键字的查询
    PAP
    439
    MySQL——单表查询(二)按条件查询(5)带 DISTINCT 关键字的查询
    关于我们
    招贤纳士
    商务合作
    寻求报道

400-660-0108

kefu@csdn.net

在线客服
工作时间 8:30-22:00
公安备案号11010502030143
京ICP备19004658号
京网文〔2020〕1039-165号
经营性网站备案信息
北京互联网违法和不良信息举报中心
家长监护
网络110报警服务
中国互联网举报中心
Chrome商店下载
账号管理规范
版权与免责声明
版权申诉
出版物许可证
营业执照
©1999-2024北京创新乐知网络技术有限公司
目录
字符串函数
数值函数
日期函数
流程函数
聚合函数
💎5.1 COUNT() 统计所有行
💎5.2 SUM() 求和
💎5.3 AVG() 求平均值
💎5.4 MAX()和MIN()

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
存储 SQL 关系型数据库
MySQL基础:函数
本文介绍了MySQL中几种常用的内建函数,包括字符串函数、数值函数、日期函数和流程函数。字符串函数如`CONCAT()`用于拼接字符串,`TRIM()`用于去除字符串两端的空格,`MOD()`求余数,`RAND()`生成随机数,`ROUND()`四舍五入。日期函数如`CURDATE()`返回当前日期,`NOW()`返回当前日期和时间,`DATE_ADD()`添加时间间隔,`DATEDIFF()`计算日期差。流程函数如`IF()`和`CASE WHEN THEN ELSE END`用于条件判断。聚合函数如`COUNT()`统计行数,`SUM()`求和,`AVG()`求平均值
20 8
MySQL基础:函数
|
1月前
|
SQL 关系型数据库 MySQL
在 MySQL 中使用 `RIGHT` 函数
【8月更文挑战第8天】
191 7
在 MySQL 中使用 `RIGHT` 函数
|
1月前
|
SQL 关系型数据库 MySQL
在 MySQL 中使用 `REPLACE` 函数
【8月更文挑战第8天】
543 7
在 MySQL 中使用 `REPLACE` 函数
|
1月前
|
存储 SQL 关系型数据库
在 MySQL 中使用 `RTRIM` 函数
【8月更文挑战第8天】
121 8
在 MySQL 中使用 `RTRIM` 函数
|
1月前
|
缓存 关系型数据库 MySQL
在 MySQL 中使用 SPACE 函数
【8月更文挑战第5天】
78 3
在 MySQL 中使用 SPACE 函数
|
9天前
|
存储 关系型数据库 MySQL
MySQL MATCH 函数如何使用 WITH QUERY EXPANSION?
【9月更文挑战第2天】MySQL MATCH 函数如何使用 WITH QUERY EXPANSION?
23 0
|
11天前
|
存储 关系型数据库 MySQL
|
12天前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
71 0
|
2月前
|
存储 JSON 关系型数据库
mysql中find_in_set()函数用法详解及增强函数
总结而言,`FIND_IN_SET()`是MySQL中处理由逗号分隔的字符串列表的一种便捷方法,尤其适用于列表相对较短且不经常更改的场景。然而,对于更为复杂的需要高性能和可扩展性的数据库设计,它可能不是最优选择,应考虑使用更加正规化的数据库结构。
114 2
mysql中find_in_set()函数用法详解及增强函数
|
2月前
|
关系型数据库 MySQL
mysql使用 CONCAT(字段,字段) 函数拼接
mysql使用 CONCAT(字段,字段) 函数拼接

热门文章

最新文章