数据库基础——8.单行函数

这篇文章我们来讲一下数据库里面的单行函数

目录

1. 函数的理解

1.1 什么是函数

1.2 不同DBMS函数的差异

1.3 MySQL的内置函数及分类

2. 数值函数

2.1 基本函数

2.2 角度与弧度互换函数

2.3 三角函数 

2.4 指数与对数 

2.5 进制间的转换 

3. 字符串函数 

4. 日期和时间函数 

4.1 获取日期、时间

4.2 日期与时间戳的转换 

4.3 获取月份、星期、星期数、天数等函数 

4.4 日期的操作函数 

4.5 时间和秒钟转换的函数

4.6 计算日期和时间的函数

4.7 日期的格式化与解析 

5. 流程控制函数 

 6. 加密与解密函数

7. MySQL信息函数

8. 其他函数


1. 函数的理解

1.1 什么是函数

函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来, 需要的时候直接调用即可。这样既 提高了代码效率 ,又 提高了可维护性 。在 SQL 中我们也可以使用函数 对检索出来的数据进行函数操作。使用这些函数,可以极大地 提高用户对数据库的管理效率

从函数定义的角度出发,我们可以将函数分成 内置函数自定义函数 。在 SQL 语言中,同样也包括了 内置函数和自定义函数。内置函数是系统内置的通用函数,而自定义函数是我们根据自己的需要编写的,本章及下一章讲解的是 SQL 的内置函数。

1.2 不同DBMS函数的差异

我们在使用 SQL 语言的时候,不是直接和这门语言打交道,而是通过它使用不同的数据库软件,即 DBMS。DBMS 之间的差异性很大,远大于同一个语言不同版本之间的差异。实际上,只有很少的函数是 被 DBMS 同时支持的。比如,大多数 DBMS 使用(||)或者(+)来做拼接符,而在 MySQL 中的字符串拼 接函数为concat()。大部分 DBMS 会有自己特定的函数,这就意味着采用 SQL 函数的代码可移植性是很 差的,因此在使用函数的时候需要特别注意。

1.3 MySQL的内置函数及分类

MySQL提供了丰富的内置函数,这些函数使得数据的维护与管理更加方便,能够更好地提供数据的分析 与统计功能,在一定程度上提高了开发人员进行数据分析与统计的效率。

MySQL提供的内置函数从 实现的功能角度 可以分为数值函数、字符串函数、日期和时间函数、流程控制 函数、加密与解密函数、获取MySQL信息函数、聚合函数等。这里,我将这些丰富的内置函数再分为两 类: 单行函数 、 聚合函数(或分组函数)

两种SQL函数:

单行函数:

  • 操作数据对象
  • 接受参数返回一个结果
  • 只对一行进行变换
  • 每行返回一个结果
  • 可以嵌套
  • 参数可以是一列或一个值 

2. 数值函数

2.1 基本函数

例:SELECT ABS(-123),ABS(32),SIGN(-23),SIGN(43),PI(),CEIL(32.32),CEILING(-43.23),FLOOR(32.32), FLOOR(-43.23),MOD(12,5) FROM DUAL;

例:SELECT RAND(),RAND(),RAND(10),RAND(10),RAND(-1),RAND(-1) FROM DUAL; 

例:SELECT ROUND(12.33),ROUND(12.343,2),ROUND(12.324,-1),TRUNCATE(12.66,1),TRUNCATE(12.66,-1) FROM DUAL; 

2.2 角度与弧度互换函数

例:SELECT RADIANS(30),RADIANS(60),RADIANS(90),DEGREES(2*PI()),DEGREES(RADIANS(90)) FROM DUAL; 

2.3 三角函数 

例: SELECT SIN(RADIANS(30)),DEGREES(ASIN(1)),TAN(RADIANS(45)),DEGREES(ATAN(1)),DEGREES(ATAN2(1,1) ) FROM DUAL;

2.4 指数与对数 

例: SELECT POW(2,5),POWER(2,4),EXP(2),LN(10),LOG10(10),LOG2(4)  FROM DUAL;

2.5 进制间的转换 

例:SELECT BIN(10),HEX(10),OCT(10),CONV(10,2,8)  FROM DUAL; 

3. 字符串函数 

注意:MySQL中,字符串的位置是从1开始的。

例:SELECT FIELD('mm','hello','msm','amma'),FIND_IN_SET('mm','hello,mm,amma')  FROM DUAL;

4. 日期和时间函数 

4.1 获取日期、时间

例:SELECT CURDATE(),CURTIME(),NOW(),SYSDATE()+0,UTC_DATE(),UTC_DATE()+0,UTC_TIME(),UTC_TIME()+0 FROM DUAL;

 

4.2 日期与时间戳的转换 

例: SELECT UNIX_TIMESTAMP(now());

4.3 获取月份、星期、星期数、天数等函数 

例: SELECT YEAR(CURDATE()),MONTH(CURDATE()),DAY(CURDATE()), HOUR(CURTIME()),MINUTE(NOW()),SECOND(SYSDATE()) FROM DUAL;

4.4 日期的操作函数 

EXTRACT(type FROM date)函数中type的取值与含义:

例:SELECT EXTRACT(MINUTE FROM NOW()),EXTRACT( WEEK FROM NOW()), EXTRACT( QUARTER FROM NOW()),EXTRACT( MINUTE_SECOND FROM NOW()) FROM DUAL;

4.5 时间和秒钟转换的函数

例:SELECT TIME_TO_SEC(NOW());

4.6 计算日期和时间的函数

第1组:

上述函数中type的取值:

 例:SELECT DATE_ADD(NOW(), INTERVAL 1 DAY) AS col1,DATE_ADD('2021-10-21 23:32:12',INTERVAL 1 SECOND) AS col2, ADDDATE('2021-10-21 23:32:12',INTERVAL 1 SECOND) AS col3, DATE_ADD('2021-10-21 23:32:12',INTERVAL '1_1' MINUTE_SECOND) AS col4, DATE_ADD(NOW(), INTERVAL -1 YEAR) AS col5, #可以是负数 DATE_ADD(NOW(), INTERVAL '1_1' YEAR_MONTH) AS col6 #需要单引号 FROM DUAL;

 

第2组: 

例: SELECT ADDTIME(NOW(),20),SUBTIME(NOW(),30),SUBTIME(NOW(),'1:1:3'),DATEDIFF(NOW(),'2021-10- 01'), TIMEDIFF(NOW(),'2021-10-25 22:10:10'),FROM_DAYS(366),TO_DAYS('0000-12-25'), LAST_DAY(NOW()),MAKEDATE(YEAR(NOW()),12),MAKETIME(10,21,23),PERIOD_ADD(20200101010101, 10) FROM DUAL;

4.7 日期的格式化与解析 

上述 非GET_FORMAT 函数中fmt参数常用的格式符:

 

GET_FORMAT函数中date_type和format_type参数取值如下:

例:SELECT DATE_FORMAT(NOW(), '%H:%i:%s');

5. 流程控制函数 

流程处理函数可以根据不同的条件,执行不同的处理流程,可以在SQL语句中实现不同的条件选择。 MySQL中的流程处理函数主要包括IF()、IFNULL()和CASE()函数。

例:SELECT IF(1 > 0,'正确','错误')

 

例:SELECT employee_id,salary, CASE WHEN salary>=15000 THEN '高薪'
WHEN salary>=10000 THEN '潜力股'
WHEN salary>=8000 THEN '屌丝'
ELSE '草根' END "描述"
FROM employees;

 6. 加密与解密函数

加密与解密函数主要用于对数据库中的数据进行加密和解密处理,以防止数据被他人窃取。这些函数在 保证数据库安全时非常有用。

可以看到,ENCODE(value,password_seed)函数与DECODE(value,password_seed)函数互为反函数。

例:SELECT PASSWORD('mysql'), PASSWORD(NULL) 

7. MySQL信息函数

MySQL中内置了一些可以查询MySQL信息的函数,这些函数主要用于帮助数据库开发或运维人员更好地 对数据库进行维护工作。

例: SELECT DATABASE();

8. 其他函数

MySQL中有些函数无法对其进行具体的分类,但是这些函数在MySQL的开发和运维过程中也是不容忽视的。

例:SELECT FORMAT(123.123, 2), FORMAT(123.523, 0), FORMAT(123.123, -2); 

说明:关于这个SQL的单行函数,我们掌握基本的数值函数,熟悉流程控制函数和MySQL信息函数,其他的认识就行,没必要记那么多。 

猜你喜欢

转载自blog.csdn.net/m0_52096593/article/details/130930889
今日推荐