MySQL之函数

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL之函数

1、简介

MySQL内置了很多函数用于各种场景数据处理。函数往往能够处理文本数据、日期数据、数值数据以及返回系统相关信息;除普通函数之外MySQL还内置了一些聚集函数,用于对表中数据进行汇总、求和等操作。

聚集函数:

指的是运行在行组上,计算和返回单个值的函数。

使用MySQL的函数有很多好处:

  1. SQL编写简易、美观
  2. 计算速度快于客户机
  3. 减少数据返回,节省网络带宽资源

不过MySQL函数不一定在其他数据库系统支持(语法不同),因此SQL的移植性比较差

2、正文

2.1 文本处理函数

文本处理函数能够对文本进行大小写转换、组合、去除空格等操作。

文本函数表:

函数

函数说明

left()

返回左边的字符

right()

返回右边的字符

substring()

字符串截取

trim()

去除两边空格

rtrim()

去除右边空格

ltrim()

去除左边空格

length()

返回字符串长度

lower()

将字符串转换成小写

upper()

将字符串转换成大写

locate()

找出字符串的子串

soundex()

返回字符串的soundex值

举例:

转小写lower()

mysql> select lower('HUAWEI');

+-----------------+

| lower('HUAWEI') |

+-----------------+

| huawei          |

+-----------------+

转大写upper()

mysql> select upper('alibaba');

+------------------+

| upper('alibaba') |

+------------------+

| ALIBABA          |

+------------------+

返回字符串长度length()

mysql> select length('liziba');

+------------------+

| length('liziba') |

+------------------+

|                6 |

+------------------+

字符串截取substring()

mysql> select substring('I am Liziba', 6, 10);

+---------------------------------+

| substring('I am Liziba', 6, 10) |

+---------------------------------+

| Liziba                          |

+---------------------------------+

soundex()可以找到发音相似字符串(这个挺有意思的!)

mysql> select soundex('liziba') = soundex('leezibe');

+----------------------------------------+

| soundex('liziba') = soundex('leezibe') |

+----------------------------------------+

|                                      1 |

+----------------------------------------+


mysql> select soundex('liziba') = soundex('lizijiu');

+----------------------------------------+

| soundex('liziba') = soundex('lizijiu') |

+----------------------------------------+

|                                      0 |

+----------------------------------------+

2.2 日期处理函数

日期函数在MySQL中非常重要,因为我们经常需要对日期进行格式化、提取日期的年月日、计算日期的产值等等。

日期函数表:

函数

函数说明

CurDate()

返回当前日期

CurTime()

返回当前时间

AddDate()

增加一个日期的天、周等

AddTime()

增加一个时间的时、分等

Date()

返回日期的时间的部分

DateDiff()

计算两个日期之差

Date_Add()

日期运算函数

Date_Format()

日期格式化函数

Day()

返回日期天数部分

DayOfWeek()

返回日期属于星期几

Year()

返回一个日期的年份部分

Month()

返回一个日期的月份部分

Time()

返回一个日期的时间部分

Hour()

返回时间的小时部分

Minute()

返回时间的分钟部分

Second()

返回时间的秒钟部分

Now()

返回当前日期和时间

举例:

查询当前日期和时间

mysql> select now() as now;

+---------------------+

| now                 |

+---------------------+

| 2021-11-12 23:39:49 |

+---------------------+

查询当前年份

mysql> select year(now()) as year;

+------+

| year |

+------+

| 2021 |

+------+

查询当前星期几(注意MySQL中计算的星期几,返回的是工作日索引,星期日等于1,星期六等于7)

mysql> select dayOfWeek(now()) as week;

+------+

| week |

+------+

|    6 |

+------+

日期格式化

mysql> select date_format(now(), '%Y-%m-%d') as date;

+------------+

| date       |

+------------+

| 2021-11-12 |

+------------+

计算日期之差

mysql> select DateDiff('2021-11-12 11:00:00', '2000-12-12 11:00:00') as dateDiff;

+----------+

| dateDiff |

+----------+

|     7640 |

+----------+


2.3 数值处理函数

数值处理函数用于数值的处理;一般用于代数运算、三角运算、几何运算等。

数值函数表:

函数

函数说明

abs()

绝对值

cos()

余弦值

sin()

正弦值

tan()

正切

exp()

指数值

sqrt()

平方根

rand()

随机数

pi()

圆周率

mod()

除数的余数

举例:

计算绝对值

mysql> select abs(-1998) as abs;

+------+

| abs  |

+------+

| 1998 |

+------+

返回π的值

mysql> select pi() as pi;

+----------+

| pi       |

+----------+

| 3.141593 |

+----------+

返回一个小于1大于0随机数

mysql> select rand();

+--------------------+

| rand()             |

+--------------------+

| 0.7134191456375822 |

+--------------------+

计算除数的余数

mysql> select mod(8, 2) as remain;

+--------+

| remain |

+--------+

|      0 |

+--------+


mysql> select mod(8, 3) as remain;

+--------+

| remain |

+--------+

|      2 |

+--------+

2.4 聚集函数

有些时候我们不需要返回表数据中所有的列,而只需要对表中的数据进行汇总,或者对表行组数据执行相关计算;此时可以使用MySQL的聚集函数。

聚集函数表:

函数

函数说明

avg()

求平均值

count()

返回列的行数

max()

计算列的最大值

min()

计算列的最小值

sum()

计算列的值之和


准备一张产品表,如下所示:

SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;


-- ----------------------------

-- Table structure for product

-- ----------------------------

DROP TABLE IF EXISTS `product`;

CREATE TABLE `product`  (

 `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',

 `product_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '产品名称',

 `price` decimal(10, 2) UNSIGNED NOT NULL COMMENT '产品价格',

 `number` int(11) NOT NULL COMMENT '产品数量',

 PRIMARY KEY (`id`) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;


-- ----------------------------

-- Records of product

-- ----------------------------

INSERT INTO `product` VALUES (1, 'Apple iPhone 13 (A2634)', 6799.00, 22);

INSERT INTO `product` VALUES (2, 'HUAWEI P50 Pro', 6488.00, 88);

INSERT INTO `product` VALUES (3, 'MIX4', 4999.00, 30);

INSERT INTO `product` VALUES (4, 'OPPO Find X3', 3999.00, 15);

INSERT INTO `product` VALUES (5, 'vivo X70 Pro+', 5999.00, 27);


SET FOREIGN_KEY_CHECKS = 1;

求单价平均数

mysql> select avg(price) as avg_price from product ;

+-------------+

| avg_price   |

+-------------+

| 5656.800000 |

+-------------+

1 row in set (0.00 sec)

求产品表行数(三种办法,大家可以自取,具体性能方面这是个需要深究的问题,这里不讨论)

mysql> select count(*) from product;

+----------+

| count(*) |

+----------+

|        5 |

+----------+


mysql> select count(price) from product;

+--------------+

| count(price) |

+--------------+

|            5 |

+--------------+


mysql> select count(1) from product;

+----------+

| count(1) |

+----------+

|        5 |

+----------+

求价格最大值

mysql> select max(price) max_price from product;

+-----------+

| max_price |

+-----------+

|   6799.00 |

+-----------+

单价求和

mysql> select sum(price) sum_price from product;

+-----------+

| sum_price |

+-----------+

|  28284.00 |

+-----------+

MySQL中的聚集函数可以组合使用,比如上面求平均值、求行数、求最大值、求和可以一起查询。

mysql> select avg(price) as avg_price, count(*) as row_size, max(price) as max_price, sum(price) as sum_price from product;

+-------------+----------+-----------+-----------+

| avg_price   | row_size | max_price | sum_price |

+-------------+----------+-----------+-----------+

| 5656.800000 |        5 |   6799.00 |  28284.00 |

+-------------+----------+-----------+-----------+

注意:上面有说到count()函数可以统计表的行数,但是如果我们希望统计的是针对某一列去重的行数,此时可以使用distinct关键字,但是它只能作用于指定字段,不能作用于*。

正确用法:

mysql> select count(distinct price) from product;

+-----------------------+

| count(distinct price) |

+-----------------------+

|                     5 |

+-----------------------+

错误用法:

mysql> select count(distinct *) from product;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) from product' at line 1

相关实践学习
如何在云端创建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查询效率和数据处理能力。希望对大家的学习有所帮助。
57 7
|
15天前
|
关系型数据库 MySQL
MySQL常见函数第一期,你都用过哪些呢 ?
本期介绍10个常用的MySQL函数:字符串连接(CONCAT)、提取子字符串(SUBSTRING)、获取字符串长度(LENGTH)、转换大小写(UPPER、LOWER)、去除空格(TRIM)、替换字符串(REPLACE)、查找子字符串位置(INSTR)、带分隔符的字符串连接(CONCAT_WS)以及获取当前日期时间(NOW)。
55 8
|
16天前
|
数据采集 关系型数据库 MySQL
MySQL常用函数:IF、SUM等用法
本文介绍了MySQL中常用的IF、SUM等函数及其用法,通过具体示例展示了如何利用这些函数进行条件判断、数值计算以及复杂查询。同时,文章还提到了CASE WHEN语句和其他常用函数,如COUNT、AVG、MAX/MIN等,强调了它们在数据统计分析、数据清洗和报表生成中的重要性。
|
20天前
|
关系型数据库 MySQL 数据处理
【MySQL】函数
MySQL 提供了丰富的函数集,涵盖字符串处理、数值运算、日期时间操作和聚合计算等多个方面。这些函数在日常数据库操作中极为重要,通过合理使用这些函数,可以大大提高数据处理和查询的效率。用户还可以通过自定义函数,扩展 MySQL 的功能以满足特定需求。
26 3
|
22天前
|
关系型数据库 MySQL 数据处理
MySQL函数与约束
MySQL 提供了丰富的函数和强大的约束机制,用于数据处理和完整性维护。通过掌握这些工具,可以有效地管理和分析数据库中的数据,确保数据的一致性和准确性。无论是在日常数据查询中使用内置函数,还是在数据库设计中应用各种约束,都是确保数据库系统稳定、高效运行的关键。希望本文对您理解和应用 MySQL 函数与约束有所帮助。
27 1
|
1月前
|
关系型数据库 MySQL Serverless
MySQL函数
最常用的MySQL函数,包括聚合函数,字符串函数,日期时间函数,控制流函数等
36 1
|
2月前
|
存储 SQL 关系型数据库
MySQL 存储函数及调用
MySQL 存储函数及调用
185 3
|
1月前
|
SQL NoSQL 关系型数据库
|
2月前
|
缓存 关系型数据库 MySQL
MySQL 满足条件函数中使用查询最大值函数
MySQL 满足条件函数中使用查询最大值函数
151 1
下一篇
DataWorks