在当代技术世界中,掌握数据库设计和操作的知识和技能,尤其是对SQL的理解,早已成了计算机科学、数据科学和一系列其他技术领域中的必备技能。
本文旨在深入浅出地介绍MySQL中使用的各类函数,让读者一方面可以对这些函数有一个全面的认识,同时通过实例代码和练习,手把手教你如何运用它们进行数据操作。我们将会介绍到的函数会覆盖字符处理,数字计算,日期和时间,以及流程控制等方方面面,为你提供最实用的工具和函数方法。
无论你是数据操作的初学者还是有着一定基础的开发者,只要你希望对MySQL有更深入的了解并更有效地使用它,那么这篇文章都将能给你所需要的帮助。
一、函数介绍
二、字符串函数
代码如下(示例):
-- --------------------------------------函数演示----------------------------------------- -- concat select concat('Hello','MySQL'); #HelloMySQL -- lower select lower('Hello'); #hello -- upper select upper('Hello'); #HELLO -- lpad select lpad('01',5,'-'); #---01 -- rpad select rpad('01',5,'-'); #01--- -- trim select trim(' Hello MySQL '); #Hello MySQL -- substring select substring(' Hello MySQL ',1,5); # Hell
1.练习代码
代码如下(示例):
update emp set workno = lpad(workno,5,'0')
2.读出结果
注:本文所用于演示的数据表为 emp ,构建代码于文章:MySQL数据库基础第一篇(SQL通用语法与分类)可见
三、数值函数
代码如下(示例):
-- ------------------------------------------------------------------------------------------ -- 数值函数 -- ceil select ceil(1.1); #2 -- floor select floor(1.9); #1 -- mod select mod(7,4); #3 -- rand select rand(); #0.9526048888942272 -- round select round(2.3445,2); #2.34
1.练习代码
代码如下(示例):
select lpad(round(rand()*1000000,0),6,0);
2.读出结果
四、日期函数
代码如下(示例):
-- ------------------------------------------------------------------------------------------ -- 日期函数 -- curdate select curdate(); #2024-02-01 -- curtime select curtime(); #11:26:00 -- now select now(); #2024-02-01 11:26:09 -- year month monthname select year(now()); #2024 select month(now()); #2 select day(now()); #1 -- date_add select date_add(now(),interval 70 month ); #2029-12-01 11:30:31 -- datediff select datediff('2024-02-01 ','2029-07-11 '); #-1987
1.练习代码
代码如下(示例):
select name,datediff(curdate(),entrydate) as '入职天数' from emp order by entrydate desc ;
2.读出结果
五、流程控制函数
代码如下(示例):
-- ------------------------------------------------------------------------------------------ -- 流程控制函数 -- if select if(false,'ok','Error'); #Error -- ifnull select ifnull('ok','Default'); #ok select ifnull(null,'Default'); #Default -- -- 需求:查询emp表的员工姓名与工作地址(北京|上海 ---->一线城市 ,其他 ---->二线城市) select name, (case workaddress when '北京' then '一线城市'when '上海' then '一线城市'else '二线城市' end ) as'工作地址' from emp;
1.练习代码
代码如下(示例):
select ID, name, age, (case when 编程成绩 >=85 then '优秀' when 编程成绩 >= 60 then '及格' else '不及格' end )'编程成绩', (case when 高数成绩 >=85 then '优秀' when 高数成绩 >= 60 then '及格' else '不及格' end )'高数成绩', (case when 外语成绩 >=85 then '优秀' when 外语成绩 >= 60 then '及格' else '不及格' end )'外语成绩' from 表_name
2.读出结果