MySQL 常用函数

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL 常用函数


格式

SELECT  函数(表头名)  FROM  库名.表名;

SELECT  函数(表头名)  FROM  库名.表名 WHERE 条件;

字符函数(处理字符或字符类型)

LENGTH(str)  

返字符串长度,以字节为单位(一个汉字3个字节)

mysql> select name from tarena.user where name = "root" ;
+------+
| name |
+------+
| root |
+------+
1 row in set (0.00 sec)
mysql> select name , length(name) as 字节个数from tarena.user where name = "root" ;
+------+--------------+
| name | 字节个数      |
+------+--------------+
| root |            4 |
+------+--------------+
1 row in set (0.00 sec)

CHAR_LENGTH(str)

返回字符串长度,以字符为单位

mysql> select name , char_length(name) from tarena.employees where employee_id = 3 ;
+-----------+-------------------+
| name      | char_length(name) |
+-----------+-------------------+
| 李玉英     |                 3 |
+-----------+-------------------+
1 row in set (0.00 sec)

UPPER(str)和UCASE(str)  

将字符串中的字母全部转换成大写

mysql> select name from  tarena.user where uid <= 3 ;
+--------+
| name   |
+--------+
| root   |
| bin    |
| daemon |
| adm    |
+--------+
4 rows in set (0.00 sec)
mysql> select upper(name) from  tarena.user where uid <= 3 ;
+-------------+
| upper(name) |
+-------------+
| ROOT        |
| BIN         |
| DAEMON      |
| ADM         |
+-------------+
4 rows in set (0.00 sec)

LOWER(str)和LCASE(str)

将str中的字母全部转换成小写

mysql> select lower("ABCD") ;
+---------------+
| lower("ABCD") |
+---------------+
| abcd          |
+---------------+
1 row in set (0.00 sec)

SUBSTR(s, start,end)

从s的start位置开始取出到end长度的子串

mysql> select name from  tarena.employees where employee_id <= 3 ;
+-----------+
| name      |
+-----------+
| 梁伟      |
| 郭岩      |
| 李玉英    |
+-----------+
3 rows in set (0.00 sec)
//不是输出员工的姓 只输出名字
mysql> select substr(name,2,3) from  tarena.employees where employee_id <= 3 ;
+------------------+
| substr(name,2,3) |
+------------------+
| 伟               |
| 岩               |
| 玉英             |
+------------------+
3 rows in set (0.00 sec)

INSTR(str,str1)

返回str1参数,在str参数内的位置

mysql> select name from  tarena.user where uid <= 3 ;
+--------+
| name   |
+--------+
| root   |
| bin    |
| daemon |
| adm    |
+--------+
4 rows in set (0.00 sec)
mysql> select instr(name,"a") from  tarena.user where uid <= 3 ;
+-----------------+
| instr(name,"a") |
+-----------------+
|               0 |
|               0 |
|               2 |
|               1 |
+-----------------+
4 rows in set (0.00 sec)

TRIM(s)

返回字符串s删除了两边空格之后的字符串

mysql> select trim("  ABC  ");
+-----------------+
| trim("  ABC  ") |
+-----------------+
| ABC             |
+-----------------+
1 row in set (0.00 sec)

日期函数

常用函数

函数 说明 函数 说明
curtime()

获取时间

hour()

获取小时
curdate() 获取日期 minute() 获取分钟
now( ) 获取日期和时间 second() 获取秒
year() 获取年 quarter() 获取一年中第几季度
month() 获取月 monthname() 获取月份名称
day()/week() 获取日/一年中的第几周 dayname() 获取日期对应的星期名
date()/weekday() 获取日期/一周中的周几 dayofyear() 获取一年中第几天
time() 获取时间 dayofmonth() 获取一月中第几天

表orders:

ADDTIME(date,num)

添加时间

mysql> select order_num,addtime(order_date,10) from orders;
+-----------+------------------------+
| order_num | addtime(order_date,10) |
+-----------+------------------------+
|     20005 | 2023-09-01 00:00:10    |
|     20006 | 2023-09-12 00:00:10    |
|     20007 | 2023-09-30 00:00:10    |
|     20008 | 2023-10-03 00:00:10    |
|     20009 | 2023-10-08 00:00:10    |
+-----------+------------------------+
5 rows in set (0.02 sec)

ADDDATE(date,num)

添加日期

mysql> select order_num,adddate(order_date,10) from orders;
+-----------+------------------------+
| order_num | adddate(order_date,10) |
+-----------+------------------------+
|     20005 | 2023-09-11 00:00:00    |
|     20006 | 2023-09-22 00:00:00    |
|     20007 | 2023-10-10 00:00:00    |
|     20008 | 2023-10-13 00:00:00    |
|     20009 | 2023-10-18 00:00:00    |
+-----------+------------------------+
5 rows in set (0.00 sec)

DATEDIFF(date1,date2)

时间差:date1-date2

mysql> select order_num,datediff(order_date,curdate()) as day_difference from orders;
+-----------+----------------+
| order_num | day_difference |
+-----------+----------------+
|     20005 |           -220 |
|     20006 |           -209 |
|     20007 |           -191 |
|     20008 |           -188 |
|     20009 |           -183 |
+-----------+----------------+
5 rows in set (0.01 sec)

数学函数

常用函数

函数 说明 函数 说明
abs() 绝对值 mod(x,y) 求余x%y
cos() 余弦,参数为弧度 pi() 圆周率
floor(x) 不大于x的最大整数 ceiling(x) 不小于x的最小整数
sqrt() 平方根 ceil(x) 不小于x的最小整数
exp() e的次方 rand(x,n) 四舍五入保留n位小数点

聚合函数

常用函数

函数 说明
sum(表头名) 求和
avg(表头名) 计算平均值
min(表头名) 获取最小值
max(表头名) 获取最大值
count(表头名) 统计表头值个数(包括null)

举例:

mysql> select * from orderitems;
+-----------+------------+---------+----------+------------+
| order_num | order_item | prod_id | quantity | item_price |
+-----------+------------+---------+----------+------------+
|     20005 |          1 | ANV01   |       10 |       5.99 |
|     20005 |          2 | ANV02   |        3 |       9.99 |
|     20005 |          3 | TNT2    |        5 |      10.00 |
|     20005 |          4 | FB      |        1 |      10.00 |
|     20006 |          1 | JP2000  |        1 |      55.00 |
|     20007 |          1 | TNT2    |      100 |      10.00 |
|     20008 |          1 | FC      |       50 |       2.50 |
|     20009 |          1 | FB      |        1 |      10.00 |
|     20009 |          2 | OL1     |        1 |       8.99 |
|     20009 |          3 | SLING   |        1 |       4.49 |
|     20009 |          4 | ANV03   |        1 |      14.99 |
+-----------+------------+---------+----------+------------+
11 rows in set (0.00 sec)

确定售出的商品总数(使用Orderltems中的数量列)

mysql> select sum(quantity)  from orderitems;
+---------------+
| sum(quantity) |
+---------------+
|           174 |
+---------------+
1 row in set (0.00 sec)

if函数

if(条件,v1,v2) 如果条件是TRUE则返回v1,否则返回v2

ifnull(v1,v2) 如果v1不为NULL,则返回v1,否则返回v2

if():

mysql> select  if(1 = 2 , "a","b");
+---------------------+
| if(1 = 2 , "a","b") |
+---------------------+
| b                   |
+---------------------+
1 row in set (0.00 sec)

ifnull():

mysql> select  ifnull("abc","xxx");
+---------------------+
| ifnull("abc","xxx") |
+---------------------+
| abc                 |
+---------------------+
1 row in set (0.00 sec)

case函数

格式:

CASE 表头名              

WHEN 值1 THEN 输出结果

WHEN 值2 THEN 输出结果  

WHEN 值3 THEN 输出结果

ELSE 输出结果  

END

CASE              

WHEN  判断条件1 THEN 输出结果

WHEN  判断条件2 THEN 输出结果  

WHEN  判断条件3 THEN 输出结果

ELSE  输出结果  

END

如果表头名等于某个值,则返回对应位置then后面的值并结束判断,

如果与所有值都不相等,则返回else后面的结果并结束判断

举例:

mysql> select  * from tarena.departments;
+---------+-----------+
| dept_id | dept_name |
+---------+-----------+
|       1 | 人事部    |
|       2 | 财务部    |
|       3 | 运维部    |
|       4 | 开发部    |
|       5 | 测试部    |
|       6 | 市场部    |
|       7 | 销售部    |
|       8 | 法务部    |
+---------+-----------+
8 rows in set (0.03 sec)

输出部门类型

mysql> select dept_id,dept_name,
    -> case
    -> when dept_name="运维部"  then "技术部"
    -> when dept_name="开发部"  then "技术部"
    -> when dept_name="测试部"  then "技术部"
    -> else "非技术部"
    -> end as 部门类型  from  tarena.departments;
+---------+-----------+--------------+
| dept_id | dept_name | 部门类型     |
+---------+-----------+--------------+
|       1 | 人事部    | 非技术部     |
|       2 | 财务部    | 非技术部     |
|       3 | 运维部    | 技术部       |
|       4 | 开发部    | 技术部       |
|       5 | 测试部    | 技术部       |
|       6 | 市场部    | 非技术部     |
|       7 | 销售部    | 非技术部     |
|       8 | 法务部    | 非技术部     |
+---------+-----------+--------------+
8 rows in set (0.00 sec)

或者

mysql> select dept_id, dept_name,
    -> case dept_name
    -> when '运维部' then '技术部门'
    -> when '开发部' then '技术部门'
    -> when '测试部' then '技术部门'
    -> else '非技术部门'
    -> end as  部门类型   from  tarena.departments;
+---------+-----------+-----------------+
| dept_id | dept_name | 部门类型        |
+---------+-----------+-----------------+
|       1 | 人事部    | 非技术部门      |
|       2 | 财务部    | 非技术部门      |
|       3 | 运维部    | 技术部门        |
|       4 | 开发部    | 技术部门        |
|       5 | 测试部    | 技术部门        |
|       6 | 市场部    | 非技术部门      |
|       7 | 销售部    | 非技术部门      |
|       8 | 法务部    | 非技术部门      |
+---------+-----------+-----------------+
8 rows in set (0.00 sec)
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
2
2
0
10
分享
相关文章
MySQL 常用函数
我们这次全面梳理 MySQL 中的常用函数,涵盖 聚合函数、字符串函数、日期时间函数、数学函数 和 控制流函数 等五大类。每类函数均配有语法说明与实用示例,帮助读者提升数据处理能力,如统计分析、文本处理、日期计算、条件判断等。文章结尾提供了丰富的实战练习,帮助读者巩固和应用函数技巧,是进阶 SQL 编程与数据分析的实用工具手册。
85 2
Mysql(5)—函数
MySQL提供了许多内置的函数以帮助用户进行数据操作和分析。这些函数可以分为几类,包括聚合函数、字符串函数、数值函数、日期和时间函数、控制流函数等。
203 1
Mysql(5)—函数
【YashanDB知识库】MySQL field 函数的改写方法
本文来自YashanDB官网,介绍将MySQL的FIELD函数改写到YashanDB的方法。MySQL中,FIELD函数用于自定义排序;而在YashanDB中,可使用DECODE或CASE语句实现类似功能。示例展示对表`t1`按指定顺序排序的过程,提供两种改写方式,结果均符合预期。
Mysql-常用函数及其用法总结
以上列举了MySQL中一些常用的函数及其用法。这些函数在日常的数据库操作中非常实用,能够简化数据查询和处理过程,提高开发效率。掌握这些函数的使用方法,可以更高效地处理和分析数据。
185 19
【MySQL基础篇】盘点MySQL常用四大类函数
本文介绍了MySQL中的四大类常用函数:字符串函数、数值函数、日期函数和流程函数。
【MySQL基础篇】盘点MySQL常用四大类函数
MySQL常见函数第二期,你都用过哪些呢 ?
本期介绍了20个常用的MySQL函数,涵盖日期处理(如CURDATE()、DATE_FORMAT())、数学运算(如ABS()、ROUND())、统计分析(如COUNT()、SUM())等,帮助提高SQL查询效率和数据处理能力。希望对大家的学习有所帮助。
153 7
MySQL常用函数:IF、SUM等用法
本文介绍了MySQL中常用的IF、SUM等函数及其用法,通过具体示例展示了如何利用这些函数进行条件判断、数值计算以及复杂查询。同时,文章还提到了CASE WHEN语句和其他常用函数,如COUNT、AVG、MAX/MIN等,强调了它们在数据统计分析、数据清洗和报表生成中的重要性。
MySQL常见函数第一期,你都用过哪些呢 ?
本期介绍10个常用的MySQL函数:字符串连接(CONCAT)、提取子字符串(SUBSTRING)、获取字符串长度(LENGTH)、转换大小写(UPPER、LOWER)、去除空格(TRIM)、替换字符串(REPLACE)、查找子字符串位置(INSTR)、带分隔符的字符串连接(CONCAT_WS)以及获取当前日期时间(NOW)。
138 8
【MySQL】函数
MySQL 提供了丰富的函数集,涵盖字符串处理、数值运算、日期时间操作和聚合计算等多个方面。这些函数在日常数据库操作中极为重要,通过合理使用这些函数,可以大大提高数据处理和查询的效率。用户还可以通过自定义函数,扩展 MySQL 的功能以满足特定需求。
192 3

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问