MySQL 函数
在MySQL中,为了提高代码重用性和隐藏实现细节,MySQL提高了很多函数。函数可以理解为别人封装好的模块代码。
在MySQL中,函数非常多,主要可以分为以下大类:
- 聚合函数:这类函数就是用来做简单的数据统计的,聚合函数也被称为 “汇总函数”,(总和,平均数,最大最小值等)并不总是存储在表中。 但是,可以通过执行存储数据的计算来获取它。
- 数学函数: 这类函数只要用于处理数字。这类函数包括绝对值函数、正弦函数、余弦函数、获取随机数函数等。
- 字符串函数:这类函数主要用于处理字符串。其中包括字符串连接函数、字符串比较函数、将字符串的字母变成小写或大写字母的函数、获取子串的函数等。
- 日期和时间函数:这类函数主要用于处理日期和时间。其中包括取当前时间的函数、获取当前日期的函数、返回年份的函数、返回日期的函数等。
- 流程函数:这类函数主要用于在SQL语句中控制条件选择。其中包括IF语句、CASE语句、WHEN语句等。
- 系统信息函数:这类函数主要用于获取mysql数据库的系统信息。其中包括获取数据库名的函数、获取当前用户的函数、获取数据库版本的函数等。
- 加密函数:这类函数主要用于对字符串进行加密解密。其中包括字符串加密函数、字符串解密函数等。
- 其他函数:包括格式化函数、锁函数等。
聚合函数
函数名称 | 作用 |
---|---|
MAX | 查询指定列的最大值 |
MIA | 查询指定列的最小值 |
COUNT | 统计查询结果的行数 |
SUM | 求和,返回指定列的总和 |
AVG | 求平均值,返回指定列数据的平均值 |
数字函数
数学函数主要用来处理数值数据,主要的数学函数有:绝对值函数、三角函数(包括正弦函数、余弦函数、正切函数、余切函数等)、对数函数、随机数函数等。在有错误产生时,数学函数将会返回空值NULL。
函数名 | 描述 |
---|---|
ABS(x) | 返回 x 的绝对值 |
ACOS(x) | 求 x 的反余弦值(参数是弧度) |
ASIN(x) | 求反正弦值(参数是弧度) |
ATAN(x) | 求反正切值(参数是弧度) |
ATAN2(n, m) | 求反正切值(参数是弧度) |
AVG(expression) | 返回一个表达式的平均值,expression 是一个字段 |
CEIL(x) | 返回大于或等于 x 的最小整数 |
CEILING(x) | 返回大于或等于 x 的最小整数 |
COS(x) | 求余弦值(参数是弧度) |
COT(x) | 求余切值(参数是弧度) |
COUNT(expression) | 返回查询的记录总数,expression 参数是一个字段或者 * 号 |
DEGREES(x) | 将弧度转换为角度 |
n DIV m | 整除,n 为被除数,m 为除数 |
EXP(x) | 返回 e 的 x 次方 |
FLOOR(x) | 返回小于或等于 x 的最大整数 |
GREATEST(expr1, expr2, expr3, ...) | 返回列表中的最大值 |
LEAST(expr1, expr2, expr3, ...) | 返回列表中的最小值 |
LN | 返回数字的自然对数,以 e 为底。 |
LOG(x) 或 LOG(base, x) | 返回自然对数(以 e 为底的对数),如果带有 base 参数,则 base 为指定带底数。 |
LOG10(x) | 返回以 10 为底的对数 |
LOG2(x) | 返回以 2 为底的对数 |
MAX(expression) | 返回字段 expression 中的最大值 |
MIN(expression) | 返回字段 expression 中的最小值 |
MOD(x,y) | 返回 x 除以 y 以后的余数 |
PI() | 返回圆周率(3.141593) |
POW(x,y) | 返回 x 的 y 次方 |
POWER(x,y) | 返回 x 的 y 次方 |
RADIANS(x) | 将角度转换为弧度 |
RAND() | 返回 0 到 1 的随机数 |
ROUND(x) | 返回离 x 最近的整数 |
SIGN(x) | 返回 x 的符号,x 是负数、0、正数分别返回 -1、0 和 1 |
SIN(x) | 求正弦值(参数是弧度) |
SQRT(x) | 返回x的平方根 |
SUM(expression) | 返回指定字段的总和 |
TAN(x) | 求正切值(参数是弧度) |
TRUNCATE(x,y) | 返回数值 x 保留到小数点后 y 位的值(与 ROUND 最大的区别是不会进行四舍五入 |
字符串函数
函数名称 作 用 LENGTH 计算字符串长度函数,返回字符串的字节长度 CONCAT 合并字符串函数,返回结果为连接参数产生的字符串,参数可以使一个或多个 INSERT 替换字符串函数 LOWER 将字符串中的字母转换为小写 UPPER 将字符串中的字母转换为大写 LEFT 从左侧字截取符串,返回字符串左边的若干个字符 RIGHT 从右侧字截取符串,返回字符串右边的若干个字符 TRIM 删除字符串左右两侧的空格 REPLACE 字符串替换函数,返回替换后的新字符串 SUBSTRING 截取字符串,返回从指定位置开始的指定长度的字符换 REVERSE 字符串反转(逆序)函数,返回与原始字符串顺序相反的字符串日期和时间函数
函数名称 作 用 CURDATE和CURRENT_DATE 两个函数作用相同,返回当前系统的日期值 CURTIME和CURRENT_TIME 两个函数作用相同,返回当前系统的时间值 NOW和SYSDATE 两个函数作用相同,返回当前系统的日期和时间值 UNIX_TIMESTAMP 获取UNIX时间戳函数,返回一个以 UNIX 时间戳为基础的无符号整数 FROM_UNIXTIME 将 UNIX 时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数 MONTH 获取指定日期中的月份 MONTHNAME 获取指定日期中的月份英文名称 DAYNAME 获取指定曰期对应的星期几的英文名称 DAYOFWEEK 获取指定日期对应的一周的索引位置值 WEEK 获取指定日期是一年中的第几周,返回值的范围是否为 0〜52 或 1〜53 DAYOFYEAR 获取指定曰期是一年中的第几天,返回值范围是1~366 DAYOFMONTH 获取指定日期是一个月中是第几天,返回值范围是1~31 YEAR 获取年份,返回值范围是 1970〜2069 TIME_TO_SEC 将时间参数转换为秒数 SEC_TO_TIME 将秒数转换为时间,与TIME_TO_SEC 互为反函数 DATE_ADD和ADDDATE 两个函数功能相同,都是向日期添加指定的时间间隔 DATE_SUB和SUBDATE 两个函数功能相同,都是向日期减去指定的时间间隔 ADDTIME 时间加法运算,在原始时间上添加指定的时间 SUBTIME 时间减法运算,在原始时间上减去指定的时间 DATEDIFF 获取两个日期之间间隔,返回参数 1 减去参数 2 的值 DATE_FORMAT 格式化指定的日期,根据参数返回指定格式的值 WEEKDAY 获取指定日期在一周内的对应的工作日索引流程函数
函数名称 作用 IF 判断,流程控制 IFNULL 判断是否为空 CASE 搜索语句系统信息函数
函数名 | 作用 |
VERSION | 返回数据库版本号 |
CONNECTION_ID | 返回服务器的连接数 |
DATABASE | 返回当前数据库名 |
SHOW PROCESSLIST | 返回当前用户 |
USER | 返回字符串的字符集 |
CHARSET | 返回字符串排列方式 |
COLLATION | 显示当前用户的链接信息 |
加密函数
函数名 | 作用 |
MD5 | MD5函数是MySQL中最常用的加密函数之一。它可以将任何长度的字符串转换为一个128位的散列值。使用MD5函数进行加密时,可以将加密后的值存储在数据库中,以便进行比较和验证。 |
SHA1 | SHA1函数是MySQL中另一个常用的加密函数。它可以将任何长度的字符串转换为一个160位的散列值。与MD5函数相比,SHA1函数提供更高的安全性,但同时也需要更长的计算时间。 |
ENCODE | ENCODE函数可以使用指定的编码算法对字符串进行加密。它需要一个密钥来进行加密操作。使用ENCODE函数进行加密时,可以使用DECODE函数来进行解密。 |
AES_ENCRYPT | cedcryptiondard (AES)算法对字符串进行加密。它需要一个密钥和一个初始化向量来进行加密操作。使用AES_ENCRYPT函数进行加密时,可以使用AES_DECRYPT函数来进行解密。 |
DES_ENCRYPT | cryptiondard (DES)算法对字符串进行加密。它需要一个密钥来进行加密操作。使用DES_ENCRYPT函数进行加密时,可以使用DES_DECRYPT函数来进行解密。 |
MySQL提供了多种加密函数,可以根据需要选择合适的加密算法进行数据保护。在使用加密函数时,需要注意密钥的安全性,以免被破解。同时,也需要进行适当的加密强度测试,以确保加密后的数据能够有效地保护数据库的安全性。