【MySQL】内置函数

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

思维导图

学习目标

      这一篇博客学习MySQL中一些内置函数

一、日期函数

      一般地,日期是年月日,时间是时分秒。

函数名称 描述
current_date() 当前日期
current_time() 当前时间
current_timestamp() 当前时间戳
date(datetime) 返回datetime参数的日期部分
date_add(date, interval d_value_type) 在date中添加日期或时间
interval 后的数值单位可以是:year,minute,second,day
date_sub(date, interval d_value_type) 在date中减去日期或时间
interval 后的数值单位可以是:year,minute,second,day
datediff(date1, date2) 两个日期的差(左 - 右),单位是天
now() 当前日期时间

1.1 函数举例

current_date()   获取当前日期

                 

current_time()   获取当前时间

                 

current_timestamp()

      获取当前的时间戳,并转化为:年月日 + 时分秒

           

date(datetime)  获取日期时间中的年月日

      可将传入上述的current系列函数,也可以直接传入一个日期时间

date_add(date, interval d_value_type)  进行日期的相加

      进行日期时间加上年/月/日/小时/分钟/秒数

date_sub(date, interval d_value_type)  进行日期的相减

      进行日期时间减去年/月/日/小时/分钟/秒数

datediff(date1, date2)  进行两个日期的差值计算(左 - 右)

now()  显示当前时间(个人觉得和时间戳差不多)

                 

1.2 一些基本案例

1.2.1 案例1:创建一张表,记录生日

create table tmp( id int primary key, birthday date not null ); // 创建一张生日表
insert into tmp values(1, '2010-01-01'), (2, '2024-05-21'), (3, current_date); // 添加时间
select * from tmp; // 查看表中的数据

1.2.2 案例2:创建一个留言表

create table msg( id int primary key auto_increment, content varchar(30) not null, sendtime datetime ); // 创建一张留言表
// 插入数据
insert into msg(content, sendtime) values('hello1', now());
insert into msg(content, sendtime) values('hello2', now());
// 查看留言表
select * from msg;
  • 插入数据

  • 显示所有留言消息,发布日期只显示日期,不用显示时间
select content, date(sendtime) from msg;
  • 请查询在2分钟内发布的帖子
select * from msg where date_add(sendtime, interval 2 minute) > now();

二、字符串函数

函数名称 描述
charset(string) 返回字符串字符集
concat(string, string,[......]) 连接字符串
instr(string, substring) 返回substring在string中出现的位置,没有则返回0
ucase(string) 转换为大写
lcase(string) 转换为小写
left(string, length) 从string中的左边起取length个字符
right(string, length) 从string中的右边起取length个字符
length(string) string的长度
replace(string, search_str, replace_str) 在string中用replace_str替换search_str
strcmp(string1, string2) 逐字符比较两个字符串的大小
substring(string, postion, length) 从string的postion开始,取length个字符
ltrim(string)   rtrim(string)   trim(string) 取出前空格或后空格

2.1 函数举例

charset(string)   返回字符串的字符集

         

concat(string, string, [......])   连接字符串

   

instr(string, substring)  

      返回substring在string中的位置,没有则返回0

ucase(string)  将小写字母转化为大写字母

lcase(string)  将小写字母转换为大写字母

left(string, length)   将string从左边截取length长度的字符串

right(string, length)   将string从右边截取length长度的字符串

length(string)   计算字符串的字节大小

      因为在字符串中,汉字的字节大小为3个字节,而字母的大小为1个字节。

replace(string, search_string, replace_string)  

      将string中的search_string替换为replace_string

strcmp(string1, string2)  逐字符进行比较string1和string2

      左边字符串与右边字符串,如果左边大,则返回1,;如果一样大,则返回0,;如果右边大。则返回-1

substring(string, postion, length)

      截取string的postion位置向后的length长度的字符串

ltrim(string)   rtrim(string)   trim(string)

      取出前空格,或者取出后空格, 或者取出前空格和后空格

2.2 一些案例

  • 要求显示exam_result表中的信息,显示格式为:“XXX的语文是XXX分,数学是XXX分,英语是XXX分”
select concat(name, '的语文:', chinese, ',数学:', math, ',英语:', english) as '分数' from student;
  • 以首字母小写的方式显示所有员工的姓名
select concat(lcase(substring(ename, 1, 1)), substring(ename, 2)) from emp;

三、数学函数

函数名称 描述
abs(number) 绝对值函数
bin(decimal_number) 十进制转换为二进制
hex(decimal_number) 十进制转换为十六进制
conv(number, from_base, to_base) 进制转换
ceiling(number) 向上取整
floor(number) 向下取整
format(number, decimal_places) 格式化,保留小数位数
rand() 返回随机浮点数,范围为[0.0, 1.0)
mod(number, denominator) 取模,求余

3.1 函数举例

abs(number)   绝对值函数

                       

bin(decimal_number)   十进制转换为二进制

                         

hex(decimal_number)   十进制转换为十六进制

                         

conv(number, from_base, to_base)   进制转换

      想转换为几进制就转换为几进制

               

ceiling(number)   向上取整

                     

floor(number)   向下取整

                         

format(number, decimal_places)   格式化,保留小数位数

rand()  返回随机数,范围为[0.0, 1.0)

                         

mod(number, denominator)  求模,取余

                       

3.2 补充一些知识点

3.2.1 向上取整,向下取整,0向取整

3.2.2 负数取模

      取模的定义:如果a和d是两个自然数,可以证明存在两个唯一的整数q和r,满足 a = q * d + r,q 为整数,且0 <= |r| <= |d|。其中,q被称为商,r被称为余数。

      在不同的语言中,同一个计算表达式,负数”取模"的结果是不同的(比如,-10 % 3 在C语言中的结果是-1,在python中的结果为2),我们可以称之为正余数和符余数。

余数取决于商,由于每种语言的取整方式不同,导致不同语言的取模结果是不同的,

四、其他函数

函数名称 描述
user() 查询当前用户
md5(string) 对一个字符串进行md5摘要,摘要后得到一个32位字符串
database() 显示当前正在使用的数据库
password() MySQL数据库使用该函数对用户加密
ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值

4.1 函数举例

user()   查询当前用户

                 

md5(string)   加密使用

      对一个字符串进行md5摘要,摘要后得到一个32位字符串

       

database()  显示当前正在使用的数据库

                   

password()  MySQL使用该函数对用户加密

ifnull(val1, val2)   类似于三目运算符

      如果val1为null,返回val2,否则返回val1的值

     

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