MySQL基础(五)——MySQL中常用函数

前言

  上篇文章给大家介绍了多表连接查询以及嵌套查询,包括内连接和外连接,也介绍了子查询,包括in以及any等关键字的用法。最后分别通过案例对这部分知识点进行了讲解。本文给大家介绍MySQL中常用的一些函数,其中主要包括数学函数、字符串函数、日期时间函数、分组合并函数、逻辑函数以及开窗函数。不过开窗函数很重要,我们在下篇文章单独介绍。首先给大家介绍字符串函数。

一、字符串函数

  我们首先通过一张表格来给大家介绍字符串函数的相关功能:

  我们常用的字符串函数大概就这些。我们在本文中只介绍最常见的字符串函数,其他不常用的大家在工作中用到了可以去看看相关用法即可;
1、CONCAT(str1,str2,...)把多个文本字符串合并成一个长字符串;具体用法如下:

select concat('我们','要', '好好学习');

  执行的结果如下:
  这里需要我们注意的是NULL值问题,任何字符串和NULL值连接均为NULL,具体如下:

select concat('我们',NULL, '好好学习');

  执行的结果如下:

2、INSTR(str,substr)返回子字符串substr在文本字符串str中第一次出现的位置(),具体用法如下:

select instr('我们要学好MySQL', '学好');

  执行的结果如下:

3、LEFT(str,len)返回字符串str的左端len个字符,具体用法如下:

select left('我们要学好MySQL', 3);

  执行的结果如下:

4、RIGHT(str,len)返回字符串str的右端len个字符,具体用法如下:

select right('我们要学好MySQL', 3);

  执行的结果如下:

5、MID(str,pos,len)返回字符串str的位置pos起len个字符,具体用法如下:

select mid('我们要学好MySQL', 4,2);

  执行的结果如下:

6、SUBSTRING ( expression, start, length )截取字符串,其中的参数如下:

  • expression:字符串、二进制字符串、文本、图像、列或包含列的表达式。请勿使用包含聚合函数的表达式。
  • start:整数或可以隐式转换为int 的表达式,指定子字符串的开始位置。
  • length:整数或可以隐式转换为 int 的表达式,指定子字符串的长度。

  具体用法如下:

select substring('我们要学好MySQL',1,3);

  执行的结果如下:

7、REPLACE(str,from_str,to_str)用字符串to_str替换字符串str中的子串from_str并返回,具体用法如下:

select replace('我们要学好MySQL', 'MySQL', 'JAVA');

  执行的结果如下:

8、REPEAT(str,count)返回由count个字符串str连成的一个字符串具体用法如下:

select repeat('我们要学好MySQL', 3);

  执行的结果如下:

9、UPPER(str)返回大写的字符串str,具体用法如下:

select upper('mysql');

  执行的结果如下:

10、LOWER(str)返回大写的字符串str,具体用法如下:

select lower('MYSQL');

  执行的结果如下:

  将每位员工的姓名首字母转换为大写

select concat(upper(left(empname,1)), lower(mid(empname,2))) from emp;

  执行的结果如下:

二、数学函数

  我们首先通过一张表格来给大家介绍数学函数的相关功能:

  我们前面都提过,只是介绍最常用的。本部分也是一样的;
1、ABS(n)返回n的绝对值,具体用法如下:

select abs(-32);

  执行的结果如下:

2、 FLOOR(n)返回不大于n的最大整数值,具体用法如下:

select floor(1.23);

  执行的结果如下:

3、CEILING(n)返回不小于n的最小整数值,具体的用法如下:

select ceiling(1.23);

  执行的结果如下:

4、ROUND(n,d)返回n的四舍五入值,保留d位小数(d的默认值为0),具体用法如下:

select round(1.58);

  执行的结果如下:

5、RAND(n)返回在范围0到1.0内的随机浮点值(可以使用数字n作为初始值),具体用法如下:

select rand();

  执行的结果如下:

  不过我们也有里面带参数,具体用法如下:

select rand(2);

  执行的结果如下:

三、日期函数

  我们首先通过一张表格来给大家介绍日期函数的相关功能:

  我们前面都提过,只是介绍最常用的。本部分也是一样的;
1、DATE(date)返回指定日期/时间表达式的日期部分或将文本转为日期格式,具体用法如下:

select date('20200101');

  执行的结果如下:

2、WEEK(date)返回指定日期是一年中的第几周,具体如下:

select week('2021-03-27');

  执行的结果如下:

3、MONTH(date)返回指定日期的月份,具体如下:

select month('2021-03-27');

  执行的结果如下:

4、QUARTER(date)返回指定日期是一年的第几个季度,具体实现如下:

select quarter('2021-03-27');

  执行的结果如下:

5、YEAR(date)返回指定日期的年份(范围在1000到9999),具体实现如下:

select year('2021-03-27');

  执行的结果如下:

  不过我们的日期函数还可以加减运算,具体如下:DATE_ADD(date,interval expr type)ADDDATE(date,interval expr type)DATE_SUB(date,interval expr type)SUBDATE(date,interval expr type),接下来,我们介绍其中的参数含义:

  • date是一个datetime或date值
  • expr对date进行加减法的一个表达式字符串
  • type指明表达式expr应该如何被解释

  我们一般的参数会涉及到时分秒年月日,具体的含义以及格式如下表所示:


  具体用法如下:

select date_add("2021-03-27",interval 1 day);

  具体执行结果如下:

  前面介绍的是加一天,我们也可以减一天操作,具体实现如下:

select date_sub("2021-03-27", interval 1 day);

  具体执行结果如下:

6、DATE_FORMAT(date,format)根据format字符串格式化date值,在format字符串中可用标志符。具体的参数如下:

  • %m 月名字(january……december)
  • %Y 年, 数字, 4 位
  • %y 年, 数字, 2 位
  • %a 缩写的星期名字(sun……sat)
  • %d 月份中的天数, 数字(00……31)
  • %e 月份中的天数, 数字(0……31)
  • %m 月, 数字(01……12)
  • %c 月, 数字(1……12)
  • %b 缩写的月份名字(jan……dec)
  • %j 一年中的天数(001……366)
  • %h 小时(00……23)
  • %k 小时(0……23)
  • %i 分钟, 数字(00……59)
  • %r 时间,12 小时(hh:mm:ss [ap]m)
  • %t 时间,24 小时(hh:mm:ss)
  • %s 秒(00……59)
  • %p am或pm
  • %w 一个星期中的天数(0=sunday ……6=saturday )
  • %u 星期(0……52), 这里星期天是星期的第一天
  • %% 字符%

  具体用法如下:

select date_format('2021-03-27 15:21:00','%Y-%m-%d');

  具体执行结果如下:

7、CURDATE()以’yyyy-mm-dd’或yyyymmdd格式返回当前日期值(根据返回值所处上下文是字符串或数字),具体用法实现如下:

select curdate();

  具体执行结果如下:

8、CURTIME()以’hh:mm:ss’或hhmmss格式返回当前时间值(根据返回值所处上下文是字符串或数字),具体实现如下:

select curtime();

  具体执行结果如下:

9、NOW()以’yyyy-mm-dd hh:mm:ss’或yyyymmddhhmmss格式返回当前日期时间(根据返回值所处上下文是字符串或数字),具体的实现如下:

select now(); 

  具体执行结果如下:

10、DATEDIFF(expr1,expr2)返回结束日expr1和起始日expr2之间的天数,具体实现入下:

-- 练习:查询每位员工的工龄:ename,hiredate,工龄
select empno,empname,job,hiredate,datediff(curdate(),hiredate)/365 工龄 from emp;

  具体执行结果如下:

11、UNIX_TIMESTAMP()返回一个unix时间戳(从’1970-01-01 00:00:00’开始的秒数,date默认值为当前时间),具体实现如下:

select unix_timestamp();

  具体执行结果如下:

  当然我们也可以在unix_timestamp()中加入日期,具体如下:

select unix_timestamp('2021-03-27');

  具体执行结果如下:

12、FROM_UNIXTIME(unix_timestamp)以’yyyy-mm-dd hh:mm:ss’或yyyymmddhhmmss格式返回时间戳的值(根据返回值所处上下文是字符串或数字),具体实现如下:

select from_unixtime(1577808000);

  具体执行结果如下:

  查询每位员工的使用截止日期(试用期为三个月):empname、hiredate,试用截止日期

select empname, hiredate, adddate(hiredate, interval 3 month) 试用截止日期 from emp; 

  具体执行如下:

四、转换函数

1、CAST(expression AS data_type)用于将某种数据类型的表达式显式转换为另一种数据类型,CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型,具体的参数如下:

  • expression:任何有效的SQL表达式。
  • AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。
  • data_type:目标系统所提供的数据类型,包括bigint和sql_variant,不能使用用户定义的数据类型。

  可以转换的类型如下:

  • 二进制,同带binary前缀的效果 : BINARY
  • 字符型,可带参数 : CHAR()
  • 日期 : DATE
  • 时间: TIME
  • 日期时间型 : DATETIME
  • 浮点数 : DECIMAL
  • 整数 : SIGNED
  • 无符号整数 : UNSIGNED

  具体实现如下:

select cast('9.0' AS decimal);

  具体执行结果如下:

五、分组合并函数

GROUP_CANCAT([distinct] str [order by str asc/desc] [separator])将group by产生的同一个分组中的值连接起来,返回一个字符串结果。具体用法如下:

-- 查询各部门的员工姓名
select deptno,group_concat(empname) from emp group by deptno;

  具体执行结果如下:

六、逻辑函数

1、IFNULL(expression, alt_value)判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。具体用法实现如下:

select ifnull(comm,0) from emp;

  具体执行结果如下:

2、IF(expr1,expr2,expr3)如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值。,具体实现如下:

-- 查询每位员工的工资级别:3000及以上为高,1500-3000为中,1500及以下为低
select empname,sal,if(sal>=4000,'高',if(sal>=3500,'中','低')) 工资级别 from emp;
-- 计算每位员工的实发工资(基本工资+提成):empname,sal,实发工资 
select empname, sal, sal+ifnull(comm, 0) 实发工资 from emp; 

  具体执行结果如下:


3、CASE WHEN expr1 THEN expr2 [WHEN expr3 THEN expr4...ELSE expr] END如果expr1的值为true,则返回expr2的值,如果expr3的值为false,则返回expr4的值,具体实现如下:

select empname,sal,case when sal>=3000 then '高' when sal>=1500 then '中' else '低' end 工资级别 from emp;

  具体执行结果如下:

  最后一部分是窗口函数,但是比较关键,我们下一篇文章详细介绍。

总结

  上篇文章给大家介绍了多表连接查询以及嵌套查询,包括内连接和外连接,也介绍了子查询,包括in以及any等关键字的用法。最后分别通过案例对这部分知识点进行了讲解。本文给大家介绍MySQL中常用的一些函数,其中主要包括数学函数、字符串函数、日期时间函数、分组合并函数、逻辑函数以及开窗函数。不过开窗函数很重要,我们在下篇文章单独介绍。另外,还通过案例来给大家介绍该函数的各种用法。因此,mysql是很重要的一个技能,几乎计算机中的每个岗位都需要一个mysq技能,因此,需要我们特别的掌握。生命不息,奋斗不止,我们每天努力,好好学习,不断提高自己的能力,相信自己一定会学有所获。加油!!!

猜你喜欢

转载自blog.csdn.net/Oliverfly1/article/details/115260304