MySQL函数
MySQL函数是数据库管理系统中非常重要的一部分,它们用于在SQL查询中执行特定的操作和计算。MySQL提供了多种类型的函数,包括数学函数、字符串函数、日期和时间函数、聚合函数等。理解和掌握这些函数对于编写高效和功能强大的SQL查询至关重要。
1. 数学函数
数学函数用于执行各种数学运算。以下是一些常用的数学函数:
-
ABS(X):返回X的绝对值。
SELECT ABS(-15); -- 结果:15
-
CEIL(X):返回大于或等于X的最小整数。
SELECT CEIL(4.3); -- 结果:5
-
FLOOR(X):返回小于或等于X的最大整数。
SELECT FLOOR(4.7); -- 结果:4
-
ROUND(X, D):将X四舍五入到D位小数。
SELECT ROUND(4.567, 2); -- 结果:4.57
-
POW(X, Y):返回X的Y次幂。
SELECT POW(2, 3); -- 结果:8
-
SQRT(X):返回X的平方根。
SELECT SQRT(16); -- 结果:4
-
RAND():返回一个0到1之间的随机数。
SELECT RAND(); -- 结果:0.123456789(随机数)
2. 字符串函数
字符串函数用于处理和操作字符串数据。以下是一些常用的字符串函数:
-
CONCAT(str1, str2, …):将多个字符串连接成一个字符串。
SELECT CONCAT('Hello', ' ', 'World'); -- 结果:Hello World
-
LENGTH(str):返回字符串的长度(字节数)。
SELECT LENGTH('Hello'); -- 结果:5
-
CHAR_LENGTH(str):返回字符串的字符数。
SELECT CHAR_LENGTH('你好'); -- 结果:2
-
UPPER(str):将字符串转换为大写。
SELECT UPPER('hello'); -- 结果:HELLO
-
LOWER(str):将字符串转换为小写。
SELECT LOWER('HELLO'); -- 结果:hello
-
SUBSTRING(str, pos, len):从字符串str的pos位置开始提取长度为len的子字符串。
SELECT SUBSTRING('Hello World', 7, 5); -- 结果:World
-
TRIM(str):去除字符串两端的空格。
SELECT TRIM(' Hello '); -- 结果:Hello
-
REPLACE(str, from_str, to_str):将字符串str中的from_str替换为to_str。
SELECT REPLACE('Hello World', 'World', 'MySQL'); -- 结果:Hello MySQL
3. 日期和时间函数
日期和时间函数用于处理和操作日期和时间数据。以下是一些常用的日期和时间函数:
-
NOW():返回当前日期和时间。
SELECT NOW(); -- 结果:2023-10-01 12:34:56
-
CURDATE():返回当前日期。
SELECT CURDATE(); -- 结果:2023-10-01
-
CURTIME():返回当前时间。
SELECT CURTIME(); -- 结果:12:34:56
-
DATE(date):提取日期部分。
SELECT DATE('2023-10-01 12:34:56'); -- 结果:2023-10-01
-
TIME(date):提取时间部分。
SELECT TIME('2023-10-01 12:34:56'); -- 结果:12:34:56
-
YEAR(date):提取年份。
SELECT YEAR('2023-10-01'); -- 结果:2023
-
MONTH(date):提取月份。
SELECT MONTH('2023-10-01'); -- 结果:10
-
DAY(date):提取天数。
SELECT DAY('2023-10-01'); -- 结果:1
-
DATE_ADD(date, INTERVAL expr unit):向日期添加指定的时间间隔。
SELECT DATE_ADD('2023-10-01', INTERVAL 1 DAY); -- 结果:2023-10-02
-
DATE_SUB(date, INTERVAL expr unit):从日期减去指定的时间间隔。
SELECT DATE_SUB('2023-10-01', INTERVAL 1 DAY); -- 结果:2023-09-30
-
DATEDIFF(date1, date2):返回两个日期之间的天数差。
SELECT DATEDIFF('2023-10-01', '2023-09-30'); -- 结果:1
4. 聚合函数
聚合函数用于对一组值进行计算并返回单个值。以下是一些常用的聚合函数:
-
COUNT(expr):返回指定列或表达式的非NULL值的数量。
SELECT COUNT(*) FROM employees; -- 结果:总记录数
-
SUM(expr):返回指定列或表达式的总和。
SELECT SUM(salary) FROM employees; -- 结果:工资总和
-
AVG(expr):返回指定列或表达式的平均值。
SELECT AVG(salary) FROM employees; -- 结果:平均工资
-
MAX(expr):返回指定列或表达式的最大值。
SELECT MAX(salary) FROM employees; -- 结果:最高工资
-
MIN(expr):返回指定列或表达式的最小值。
SELECT MIN(salary) FROM employees; -- 结果:最低工资
5. 控制流函数
控制流函数用于在SQL查询中实现条件逻辑。以下是一些常用的控制流函数:
-
IF(expr1, expr2, expr3):如果expr1为真,返回expr2,否则返回expr3。
SELECT IF(1 > 0, 'True', 'False'); -- 结果:True
-
IFNULL(expr1, expr2):如果expr1不为NULL,返回expr1,否则返回expr2。
SELECT IFNULL(NULL, 'Default'); -- 结果:Default
-
NULLIF(expr1, expr2):如果expr1等于expr2,返回NULL,否则返回expr1。
SELECT NULLIF(1, 1); -- 结果:NULL
-
CASE:用于实现复杂的条件逻辑。
SELECT name, salary, CASE WHEN salary > 10000 THEN 'High' WHEN salary > 5000 THEN 'Medium' ELSE 'Low' END AS salary_level FROM employees;
6. 加密和压缩函数
加密和压缩函数用于对数据进行加密和压缩。以下是一些常用的加密和压缩函数:
-
MD5(str):返回字符串的MD5哈希值。
SELECT MD5('password'); -- 结果:5f4dcc3b5aa765d61d8327deb882cf99
-
SHA1(str):返回字符串的SHA-1哈希值。
SELECT SHA1('password'); -- 结果:5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
-
COMPRESS(str):返回压缩后的字符串。
SELECT COMPRESS('Hello World'); -- 结果:压缩后的二进制数据
-
UNCOMPRESS(compressed_str):返回解压缩后的字符串。
SELECT UNCOMPRESS(COMPRESS('Hello World')); -- 结果:Hello World
7. 类型转换函数
类型转换函数用于在不同数据类型之间进行转换。以下是一些常用的类型转换函数:
-
CAST(expr AS type):将表达式转换为指定的类型。
SELECT CAST('123' AS UNSIGNED); -- 结果:123
-
CONVERT(expr, type):将表达式转换为指定的类型。
SELECT CONVERT('123', UNSIGNED); -- 结果:123
8. 其他函数
除了上述函数之外,MySQL还提供了许多其他有用的函数,例如:
-
FORMAT(X, D):将数字X格式化为带有D位小数的字符串。
SELECT FORMAT(12345.6789, 2); -- 结果:12,345.68
-
INET_ATON(ip):将IP地址转换为数字。
SELECT INET_ATON('192.168.0.1'); -- 结果:3232235521
-
INET_NTOA(num):将数字转换为IP地址。
SELECT INET_NTOA(3232235521); -- 结果:192.168.0.1
-
UUID():生成一个通用唯一标识符(UUID)。
SELECT UUID(); -- 结果:550e8400-e29b-41d4-a716-446655440000
总结
MySQL函数提供了丰富的功能,用于处理和操作各种类型的数据。通过掌握这些函数,可以编写更高效和功能强大的SQL查询。无论是数学运算、字符串处理、日期和时间操作,还是聚合计算和条件逻辑,MySQL函数都能满足各种需求。希望本文能帮助你更好地理解和使用MySQL函数。