【建议收藏】数据库 SQL 入门——函数(内附演示)

请添加图片描述

文章目录

  • 引言
  • 字符串函数
    • CONCAT
    • LOWER&UPPER
    • LPAD&RPAD
    • TRIM
    • SUBSTRING
    • 实际用例
  • 数值函数
    • CEIL&FLOOR
    • MOD
    • RAND
    • ROUND
  • 日期函数
    • CURTIME&CURDATE&NOW
    • YEAR&MONTH&DAY
    • DATE_ADD
    • DATEDIFF
  • 流程函数
    • IF&IFNULL
    • CASE
      • 条件表达式流程控制
      • 相等表达式流程控制
  • 总结

引言

‍♂️作者简介:生鱼同学,大数据科学与技术专业硕士在读‍,曾获得华为杯数学建模国家二等奖,MathorCup 数学建模竞赛国家二等奖,亚太数学建模国家二等奖。

✍️研究方向:复杂网络科学

兴趣方向:利用python进行数据分析与机器学习,数学建模竞赛经验交流,网络爬虫等。

在本节中,我们将介绍MySQL中的内置函数,在介绍内置函数之前,首先我们来看一下函数的定义:
函数:指一段可以直接被另一端程序调用的程序或代码。
在本文中我们将介绍几种主流的常用的函数,话不多说,我们开始吧。

字符串函数

常见的字符串函数如下所示:

函数 功能
CONCAT(S1,S1…Sn) 字符串拼接,将S1,S1…Sn拼接
LOWER(str) 将str全部转换为小写
UPPER(str) 将str全部转换为大写
LPAD(str,n,pad) 左填充,用pad对str左边进行填充,达到n个字符长度
RPAD(str,n,pad) 右填充,用pad对str右边进行填充,达到n个字符长度
TRIM(str) 去掉字符串头部和尾部的空格
SUBSTRING(str,start,len) 返回从字符串str从start位置起的len长度的字符串

CONCAT

当我们希望使用CONCAT进行拼接的时候,我们需要在函数的参数内输入我们需要拼接的字符,例如我们想要拼接字符’HELLO’,‘SQL!’'的时候,我们可以使用下面的语句:

SELECT CONCAT('HELLO''SQL!');

结果如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第1张图片

LOWER&UPPER

当我们希望对字符串进行大小写转换的操作时,可以使用LOWER&UPPER这两个字符串函数,例如当我们想要对Hello进行大小写的操作时,可以使用下面这两条语句:

SELECT LOWER('Hello');
SELECT UPPER('Hello');

结果如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第2张图片
【建议收藏】数据库 SQL 入门——函数(内附演示)_第3张图片

LPAD&RPAD

在我们希望对某个字符串进行填充的时候,可以使用上面两个函数,例如当我们想对字符串填充某个字符的时候,可以使用下面的操作:

# 在01的左侧添加-直到其长度为5
SELECT LPAD('01',5,'-');
# 在01的右侧添加-直到其长度为5
SELECT RPAD('01',5,'-');

结果如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第4张图片
【建议收藏】数据库 SQL 入门——函数(内附演示)_第5张图片

TRIM

当我们需要去掉字符串头部和尾部的空格的时候,我们可以使用TRIM函数进行操作,例如我们需要对’ hello world! '进行操作的时候可以使用下面的语句:

SELECT TRIM('   hello    world!    ');

结果如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第6张图片
注意:这里的前后的空格已经被去除,但是中间的空格并不会受到影响。

SUBSTRING

当我们想要对字符串进行类似切片的操作的时候,可以使用SUBSTRING进行,例如当我们需要对’HELLO TOM AND JERRT’截取只要中间的部分的时候,我们可以利用下面的代码:

SELECT SUBSTRING('HELLO TOM AND JERRT',7,3);

结果如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第7张图片
注意:这里的起始位置是从1开始并且左闭的区间

实际用例

在实际应用中,假设我们有一张员工表格需要我们对id进行处理对其填充,这时我们就可以利用上述的函数进行操作。代码如下所示:

UPDATE TABLENAME SET ID = LPAD(ID,5,'-');

在使用上述代码前,表的内容状态为:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第8张图片
使用上述操作后,表格状态如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第9张图片

数值函数

常见的数值函数如下所示:

函数 功能
CEIL(X) 向上取整
FLOOR(X) 向下取整
MOD(X,Y) 返回X,Y的模
RAND() 返回0-1内的随机数
ROUND(X,Y) 求参数的四舍五入,保留Y位小数

CEIL&FLOOR

当我们希望对数值进行取整操作时可以使用上述的两个函数,分别为向上取整和向下取整,代码如下:

# 向上取整
SELECT CEIL(1.7);
# 向下取整
SELECT FLOOR(1.7);

结果如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第10张图片
【建议收藏】数据库 SQL 入门——函数(内附演示)_第11张图片

MOD

当我们想对数值取模的时候,可以使用MOD函数,例如我们可以使用下面的代码:

SELECT MOD(7,5);

结果如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第12张图片

RAND

RAND可以为我们取0-1之间的随机数,可以使用下面代码操作:

SELECT RAND();

结果如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第13张图片

ROUND

ROUND的作用与python中的作用相同,可以使用其来进行数值的小数位置的操作,其会对指定位数的小数进行四舍五入,代码如下:

SELECT ROUND(1.738,2);

结果如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第14张图片

日期函数

日期函数中常用的如下:

函数 功能
CURTIME() 获取当前的时间
CURDATE() 获取当前的日期
NOW() 获取当前的日期和时间
YEAR(date) 获取指定日期的年份
MONTH(date) 获取指定日期的月份
DAY(date) 获取指定日期的日期
DATE_ADD(date, INTERVAL expr type) 指定一个时间date返回加上一个expr之后的时间
DATEDIFF(date1,date2) 获取两个时间的差值

CURTIME&CURDATE&NOW

使用上述三个函数,可以分别获取当天的日期,时间和现在的日期和时间,代码如下所示:

# 获取当前时间
SELECT CURTIME();
# 获取当前日期
SELECT CURDATE();
# 获取当前日期和时间
SELECT NOW();

结果如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第15张图片
【建议收藏】数据库 SQL 入门——函数(内附演示)_第16张图片
【建议收藏】数据库 SQL 入门——函数(内附演示)_第17张图片

YEAR&MONTH&DAY

使用上述三个函数可以获取某个时间的年,月,日,代码如下:

# 获取当前时间的年
SELECT YEAR(NOW());
# 获取当前时间的月
SELECT MONTH(NOW());
# 获取当前时间的日
SELECT DAY(NOW());

结果如下:

【建议收藏】数据库 SQL 入门——函数(内附演示)_第18张图片

DATE_ADD

当我们需要对时间进行加减的时候可以使用上面的函数,例如我们希望对现在的时间加上30天之后的日期,可以使用下面的操作:

SELECT DATE_ADD(NOW(), INTERVAL 30 DAY);

结果如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第19张图片

DATEDIFF

当我们关心两个日期之间的差值的时候,可以使用上面的代码,例如我们希望获取到当前时间和2027-5-1相差的时间可以使用下面的操作:

SELECT DATEDIFF(NOW(),'2027-5-1');

结果如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第20张图片
注意:这里所求的的差异是第一个时间减去第二个时间,所以是负的

流程函数

主要使用的流程控制函数如下所示:

函数 作用
IF(value , t , f) 如果value为true,则返回t,否则返回f
IFNULL(value1, value2) 如果value1不为空,返回value1,否则返回value2
CASE WHEN [ val1 ] THEN [res1] … ELSE [ default ] END 如果val1为true,返回res1,… 否则返回default默认值
CASE[ expr] WHEN [val1 ] THEN [res1] … ELSE[ default ] END 如果expr的值等于val1,返回res1,… 否则返回default默认值

IF&IFNULL

如果你学过其它语言,那么你对IF的作用肯定是不陌生的,我们来看下面这两个代码:

# 此时的value为False应该会返回'False'
SELECT IF(False, 'TURE' , 'False');
# 此时第一个位置是一个空字符串,但是不是空,所以应该返回‘ ’ 
SELECT IFNULL('' , 'False');
# 此时第一个位置为null,所以应该返回False 
SELECT IFNULL(null , 'False');

结果如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第21张图片

CASE

条件表达式流程控制

为了更好的演示两种CASE的用法,我们这里使用一个例子,假设我们需要查看员工表的员工年龄是否已经超过了18岁成年,我们可以使用下面的语句:

SELECT 
	NAME,
	(CASE WHEN AGE >= 18 THEN '成年' ELSE '未成年' END) '成年与否'
FROM tb_user;

结果如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第22张图片

相等表达式流程控制

接下来我们看另一种CASE的用法,假设我们希望查询表中的性别,当性别为男的时候展示帅哥,性别为女展示美女,我们可以使用下面的操作:

SELECT 
	NAME,
	(CASE gender WHEN '男' THEN '帅哥' ELSE '美女' END) '帅哥还是美女'
FROM tb_user;

结果如下:
【建议收藏】数据库 SQL 入门——函数(内附演示)_第23张图片

总结

本次列举了SQL中常用的函数的相关语句,在实际学习的过程中还需要多学习以及使用才能熟练掌握。

余下的SQL内容我也将持续更新,如果感兴趣的话不妨订阅本专栏或者点个关注,我们下次再见。

你可能感兴趣的:(SQL入门,数据库,sql,python)