MySQL函数详细
  TEZNKK3IfmPf 2023年11月14日 20 0

MySQL

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

函数 是指一段可以直接被另一段程序调用的程序或代码。 也就意味着,这一段程序或代码在 MySQL
已经给我们提供了,我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可。 那
么,函数到底在哪儿使用呢?
 
我们先来看两个场景:
MySQL函数详细           MySQL函数详细

    

 

1). 在企业的 OA 或其他的人力系统中,经常会提供的有这样一个功能,每一个员工登录上来之后都能
够看到当前员工入职的天数。 而在数据库中,存储的都是入职日期,如 2000-11-12 ,那如果快速计
算出天数呢?
 
2). 在做报表这类的业务需求中 , 我们要展示出学员的分数等级分布。而在数据库中,存储的是学生的
分数值,如 98/75 ,如何快速判定分数的等级呢?
其实,上述的这一类的需求呢,我们通过 MySQL 中的函数都可以很方便的实现 。
 
MySQL 中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。
 
 

3.1 字符串函数

 
MySQL 中内置了很多字符串函数,常用的几个如下:
 

MySQL函数详细

演示如下:

 
A. concat : 字符串拼接
 
select concat('Hello' , ' MySQL');
B. lower : 全部转小写
 
select lower('Hello');
C. upper : 全部转大写
 
select upper('Hello');
D. lpad : 左填充
 
select lpad('01', 5, '-');
E. rpad : 右填充
 
select rpad('01', 5, '-'); 1
F. trim : 去除空格
 
select trim(' Hello MySQL ');
G. substring : 截取子字符串
 
select substring('Hello MySQL',1,5); 1

案例:

 
MySQL函数详细

 

 由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。比如: 1号员 工的工号应该为00001

update emp set workno = lpad(workno, 5, '0'); 1
处理完毕后 , 具体的数据为 :
 
MySQL函数详细

 

3.2 数值函数

 
常见的数值函数如下:
 
MySQL函数详细

 演示如下:

A. ceil :向上取整
 
select ceil(1.1);
B. floor :向下取整
 
 select floor(1.9);
C. mod :取模
 
 
select mod(7,4);
D. rand :获取随机数
 
select rand();
E. round :四舍五入
 
select round(2.344,2);

案例:

 
通过数据库的函数,生成一个六位数的随机验证码。
思路: 获取随机数可以通过 rand() 函数,但是获取出来的随机数是在 0-1 之间的,所以可以在其基础
上乘以 1000000 ,然后舍弃小数部分,如果长度不足 6 位,补 0
 
 
select lpad(round(rand()*1000000 , 0), 6, '0');

3.3 日期函数

 
常见的日期函数如下:
 

MySQL函数详细

 演示如下:

A. curdate:当前日期

select curdate();
B. curtime :当前时间
 
select curtime();
C. now :当前日期和时间
 
select now();
D. YEAR , MONTH , DAY :当前年、月、日
 
select YEAR(now());
select MONTH(now());
select DAY(now());
E. date_add :增加指定的时间间隔
 
select date_add(now(), INTERVAL 70 YEAR );
F. datediff :获取两个日期相差的天数
 
select datediff('2021-10-01', '2021-12-01'); 

案例:

 
查询所有员工的入职天数,并根据入职天数倒序排序。
思路: 入职天数,就是通过当前日期 - 入职日期,所以需要使用 datediff 函数来完成。
 
select name, datediff(curdate(), entrydate) as 'entrydays' from emp order by
entrydays desc;

3.4 流程函数

 
流程函数也是很常用的一类函数,可以在 SQL 语句中实现条件筛选,从而提高语句的效率。
 
MySQL函数详细

 

演示如下:        

 
A. if
 
select if(false, 'Ok', 'Error');
B. ifnull
 
select ifnull('Ok','Default');
select ifnull('','Default');
select ifnull(null,'Default');
C. case when then else end
需求 : 查询 emp 表的员工姓名和工作地址 ( 北京 / 上海 ----> 一线城市 , 其他 ----> 二线城市 )
 
select
name,
( case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else
'二线城市' end ) as '工作地址'
from emp;

案例:

 
create table score(
id int comment 'ID',
name varchar(20) comment '姓名',
math int comment '数学',
english int comment '英语',
chinese int comment '语文'
) comment '学员成绩表';
insert into score(id, name, math, english, chinese) VALUES (1, 'Tom', 67, 88, 95
), (2, 'Rose' , 23, 66, 90),(3, 'Jack', 56, 98, 76);
具体的 SQL 语句如下 :
 
select
id,
name,
(case when math >= 85 then '优秀' when math >=60 then '及格' else '不及格' end )
'数学',
(case when english >= 85 then '优秀' when english >=60 then '及格' else '不及格'
end ) '英语',
(case when chinese >= 85 then '优秀' when chinese >=60 then '及格' else '不及格'
end ) '语文'
from score;
MySQL 的常见函数我们学习完了,那接下来,我们就来分析一下,在前面讲到的两个函数的案例场景,
思考一下需要用到什么样的函数来实现 ?
1). 数据库中,存储的是入职日期,如 2000-01-01 ,如何快速计算出入职天数呢? -------->
答案 : datediff
2). 数据库中,存储的是学生的分数值,如 98 75 ,如何快速判定分数的等级呢? ---------->
答案 : case ... when ...
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   26   0   0 数据库mysql
  TEZNKK3IfmPf   2024年05月31日   42   0   0 linux服务器
  TEZNKK3IfmPf   2024年05月31日   27   0   0 linux服务器centos
TEZNKK3IfmPf