MySQL 8.0 高阶函数详解

MySQL 8.0 高阶函数详解

MySQL 8.0 引入了丰富的高阶函数,这些函数极大地增强了数据库处理和操作的灵活性与效率。本篇文档将系统地介绍这些高阶函数,涵盖了以下几大类:

  • 字符串函数:用于字符串操作和处理。
  • 数学函数:用于执行各种数学计算。
  • 聚合函数:用于对数据集进行统计和汇总。
  • 日期和时间函数:用于处理日期和时间数据。
  • 条件函数:用于实现逻辑判断和条件处理。
  • JSON 函数:用于处理 JSON 数据。
  • 窗口函数:用于在结果集的窗口中进行计算。
  • 地理空间函数:用于地理空间数据的操作和分析。
  • 安全函数:用于数据加密和安全操作。
  • 信息函数:用于获取数据库和系统的相关信息。

每个函数都配有详细的解释和实际应用的示例,帮助您全面掌握 MySQL 8.0 高阶函数的使用方法,从而在实际工作中高效地处理和查询数据库数据。

1. 字符串函数

1.1 CHAR_LENGTH() 函数

CHAR_LENGTH() 函数返回字符串的字符数。与 LENGTH() 函数不同,CHAR_LENGTH() 计算的是字符数,而不是字节数。

示例
sql 复制代码
-- 获取员工姓名的字符数
SELECT CHAR_LENGTH(name) AS name_length FROM employees;

解释:该查询返回员工姓名的字符数。

1.2 CONCAT() 函数

CONCAT() 函数将多个字符串连接成一个字符串。如果任何一个参数为 NULL,则其被视为空字符串。

示例
sql 复制代码
-- 将员工的名字和姓氏连接成全名
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;

解释:该查询将员工的名字和姓氏连接成全名。

1.3 SUBSTRING() 函数

SUBSTRING() 函数从字符串中提取子字符串。

示例
sql 复制代码
-- 提取员工姓名的前 5 个字符
SELECT SUBSTRING(name, 1, 5) AS name_part FROM employees;

解释:该查询提取员工姓名的前 5 个字符。

1.4 REPLACE() 函数

REPLACE() 函数在字符串中替换指定的子字符串。

示例
sql 复制代码
-- 将员工姓名中的 "John" 替换为 "Jane"
SELECT REPLACE(name, 'John', 'Jane') AS updated_name FROM employees;

解释:该查询将员工姓名中的 "John" 替换为 "Jane"。

1.5 TRIM() 函数

TRIM() 函数去除字符串两端的空格或指定字符。

示例
sql 复制代码
-- 去除员工姓名两端的空格
SELECT TRIM(name) AS trimmed_name FROM employees;

解释:该查询去除员工姓名两端的空格。

1.6 UPPER() 函数

UPPER() 函数将字符串中的所有字符转换为大写。

示例
sql 复制代码
-- 将员工姓名转换为大写
SELECT UPPER(name) AS upper_name FROM employees;

解释:该查询将员工姓名转换为大写。

1.7 LOWER() 函数

LOWER() 函数将字符串中的所有字符转换为小写。

示例
sql 复制代码
-- 将员工姓名转换为小写
SELECT LOWER(name) AS lower_name FROM employees;

解释:该查询将员工姓名转换为小写。

1.8 LEFT() 函数

LEFT() 函数从字符串的左侧提取指定数量的字符。

示例
sql 复制代码
-- 提取员工姓名的前 3 个字符
SELECT LEFT(name, 3) AS left_name FROM employees;

解释:该查询提取员工姓名的前 3 个字符。

1.9 RIGHT() 函数

RIGHT() 函数从字符串的右侧提取指定数量的字符。

示例
sql 复制代码
-- 提取员工姓名的最后 3 个字符
SELECT RIGHT(name, 3) AS right_name FROM employees;

解释:该查询提取员工姓名的最后 3 个字符。

1.10 FIND_IN_SET() 函数

FIND_IN_SET() 函数返回字符串在逗号分隔的字符串列表中的位置。

示例
sql 复制代码
-- 查找 "John" 在逗号分隔列表中的位置
SELECT FIND_IN_SET('John', 'John,Jane,Steve') AS position;

解释:该查询查找 "John" 在逗号分隔列表中的位置。

2. 数学函数

2.1 ABS() 函数

ABS() 函数返回数字的绝对值。

示例
sql 复制代码
-- 计算员工工资的绝对值(一般用于确保结果为正数)
SELECT ABS(salary) AS absolute_salary FROM employees;

解释:该查询返回员工工资的绝对值。

2.2 CEIL() 函数

CEIL() 函数返回大于或等于指定数字的最小整数。

示例
sql 复制代码
-- 将工资向上取整
SELECT CEIL(salary) AS rounded_salary FROM employees;

解释:该查询将员工工资向上取整。

2.3 FLOOR() 函数

FLOOR() 函数返回小于或等于指定数字的最大整数。

示例
sql 复制代码
-- 将工资向下取整
SELECT FLOOR(salary) AS rounded_salary FROM employees;

解释:该查询将员工工资向下取整。

2.4 ROUND() 函数

ROUND() 函数将数字四舍五入到指定的精度。

示例
sql 复制代码
-- 将工资四舍五入到小数点后两位
SELECT ROUND(salary, 2) AS rounded_salary FROM employees;

解释:该查询将员工工资四舍五入到小数点后两位。

2.5 EXP() 函数

EXP() 函数返回 e 的 x 次幂,其中 e 是自然对数的底数。

示例
sql 复制代码
-- 计算 e 的 2 次幂
SELECT EXP(2) AS result;

解释:该查询计算 e 的 2 次幂。

2.6 LOG() 函数

LOG() 函数返回数字的自然对数。

示例
sql 复制代码
-- 计算 10 的自然对数
SELECT LOG(10) AS log_value;

解释:该查询计算 10 的自然对数。

2.7 POWER() 函数

POWER() 函数返回指定数字的幂。

示例
sql 复制代码
-- 计算 2 的 3 次幂
SELECT POWER(2, 3) AS result;

解释:该查询计算 2 的 3 次幂。

2.8 SQRT() 函数

SQRT() 函数返回数字的平方根。

示例
sql 复制代码
-- 计算 16 的平方根
SELECT SQRT(16) AS result;

解释:该查询计算 16 的平方根。

2.9 RAND() 函数

RAND() 函数生成一个 0 到 1 之间的随机浮点数。

示例
sql 复制代码
-- 生成一个随机数
SELECT RAND() AS random_value;

解释:该查询生成一个随机浮点数。

2.10 MOD() 函数

MOD() 函数返回除法运算的余数。

示例
sql 复制代码
-- 计算 10 除以 3 的余数
SELECT MOD(10, 3) AS remainder;

解释:该查询计算 10 除以 3 的余数。

3. 聚合函数

3.1 COUNT() 函数

COUNT() 函数计算满足条件的行数或非 NULL 值的数量。

示例
sql 复制代码
-- 计算员工的总数
SELECT COUNT(*) AS employee_count FROM employees;

解释:该查询计算员工的总数。

3.2 SUM() 函数

SUM() 函数计算数值列的总和。

示例
sql 复制代码
-- 计算所有员工工资的总和
SELECT SUM(salary) AS total_salary FROM employees;

解释:该查询计算所有员工工资的总和。

3.3 AVG() 函数

AVG() 函数计算数值列的平均值。

示例
sql 复制代码
-- 计算员工工资的平均值
SELECT AVG(salary) AS average_salary FROM employees;

解释:该查询计算员工工资的平均值。

3.4 MAX() 函数

MAX() 函数返回数值列的最大值。

示例
sql 复制代码
-- 计算员工工资的最大值
SELECT MAX(salary) AS max_salary FROM employees;

解释:该查询返回员工工资的最大值。

3.5 MIN() 函数

MIN() 函数返回数值列的最小值。

示例
sql 复制代码
-- 计算员工工资的最小值
SELECT MIN(salary) AS min_salary FROM employees;

解释:该查询返回员工工资的最小值。

3.6 GROUP_CONCAT() 函数

GROUP_CONCAT() 函数将组内的所有值连接成一个字符串。

示例
sql 复制代码
-- 连接所有员工的姓名
SELECT GROUP_CONCAT(name) AS all_names FROM employees;

解释:该查询将所有员工的姓名连接成一个字符串。

3.7 BIT_AND() 函数

BIT_AND() 函数对所有值进行按位与操作,并返回结果。

示例
sql 复制代码
-- 计算所有标志的按位与结果
SELECT BIT_AND(flag) AS result FROM settings;

解释:该查询对

所有标志的按位与操作并返回结果。

3.8 BIT_OR() 函数

BIT_OR() 函数对所有值进行按位或操作,并返回结果。

示例
sql 复制代码
-- 计算所有标志的按位或结果
SELECT BIT_OR(flag) AS result FROM settings;

解释:该查询对所有标志的按位或操作并返回结果。

3.9 BIT_XOR() 函数

BIT_XOR() 函数对所有值进行按位异或操作,并返回结果。

示例
sql 复制代码
-- 计算所有标志的按位异或结果
SELECT BIT_XOR(flag) AS result FROM settings;

解释:该查询对所有标志的按位异或操作并返回结果。

4. 日期和时间函数

4.1 NOW() 函数

NOW() 函数返回当前的日期和时间。

示例
sql 复制代码
-- 获取当前的日期和时间
SELECT NOW() AS current_datetime;

解释:该查询返回当前的日期和时间。

4.2 CURDATE() 函数

CURDATE() 函数返回当前的日期。

示例
sql 复制代码
-- 获取当前的日期
SELECT CURDATE() AS current_date;

解释:该查询返回当前的日期。

4.3 CURTIME() 函数

CURTIME() 函数返回当前的时间。

示例
sql 复制代码
-- 获取当前的时间
SELECT CURTIME() AS current_time;

解释:该查询返回当前的时间。

4.4 DATE_FORMAT() 函数

DATE_FORMAT() 函数根据指定的格式返回日期或时间。

示例
sql 复制代码
-- 将当前日期格式化为 "YYYY-MM-DD" 格式
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS formatted_date;

解释:该查询将当前日期格式化为 "YYYY-MM-DD" 格式。

4.5 DATE_ADD() 函数

DATE_ADD() 函数向日期或时间值添加指定的时间间隔。

示例
sql 复制代码
-- 将当前日期加上 10 天
SELECT DATE_ADD(NOW(), INTERVAL 10 DAY) AS future_date;

解释:该查询将当前日期加上 10 天。

4.6 DATE_SUB() 函数

DATE_SUB() 函数从日期或时间值中减去指定的时间间隔。

示例
sql 复制代码
-- 从当前日期中减去 10 天
SELECT DATE_SUB(NOW(), INTERVAL 10 DAY) AS past_date;

解释:该查询从当前日期中减去 10 天。

4.7 TIMESTAMPDIFF() 函数

TIMESTAMPDIFF() 函数计算两个日期之间的差异。

示例
sql 复制代码
-- 计算当前日期和员工入职日期之间的天数
SELECT TIMESTAMPDIFF(DAY, hire_date, NOW()) AS days_since_hire FROM employees;

解释:该查询计算当前日期和员工入职日期之间的天数。

4.8 TIMESTAMPADD() 函数

TIMESTAMPADD() 函数向日期或时间值添加指定的时间间隔。

示例
sql 复制代码
-- 将员工入职日期加上 1 年
SELECT TIMESTAMPADD(YEAR, 1, hire_date) AS one_year_later FROM employees;

解释:该查询将员工入职日期加上 1 年。

4.9 UNIX_TIMESTAMP() 函数

UNIX_TIMESTAMP() 函数返回当前时间的 UNIX 时间戳,或将指定时间转换为 UNIX 时间戳。

示例
sql 复制代码
-- 获取当前时间的 UNIX 时间戳
SELECT UNIX_TIMESTAMP() AS unix_timestamp;

解释:该查询返回当前时间的 UNIX 时间戳。

4.10 FROM_UNIXTIME() 函数

FROM_UNIXTIME() 函数将 UNIX 时间戳转换为日期和时间格式。

示例
sql 复制代码
-- 将 UNIX 时间戳转换为日期和时间
SELECT FROM_UNIXTIME(1691000000) AS datetime;

解释:该查询将指定的 UNIX 时间戳转换为日期和时间格式。

5. 条件函数

5.1 IF() 函数

IF() 函数根据条件返回不同的值。

示例
sql 复制代码
-- 根据工资是否高于 50000 返回 "High" 或 "Low"
SELECT name, IF(salary > 50000, 'High', 'Low') AS salary_level FROM employees;

解释:该查询根据工资是否高于 50000 返回 "High" 或 "Low"。

5.2 CASE WHEN() 函数

CASE WHEN() 函数根据多个条件返回不同的值。

示例
sql 复制代码
-- 根据工资范围返回不同的薪资等级
SELECT name,
       CASE
           WHEN salary < 30000 THEN 'Low'
           WHEN salary BETWEEN 30000 AND 50000 THEN 'Medium'
           ELSE 'High'
       END AS salary_level
FROM employees;

解释:该查询根据工资范围返回不同的薪资等级。

5.3 COALESCE() 函数

COALESCE() 函数返回其参数中第一个非 NULL 值。

示例
sql 复制代码
-- 如果部门名称为空,则返回 "Unknown"
SELECT name, COALESCE(department, 'Unknown') AS department_name FROM employees;

解释:该查询返回部门名称,如果部门名称为空,则返回 "Unknown"。

5.4 NULLIF() 函数

NULLIF() 函数当两个参数相等时返回 NULL,否则返回第一个参数。

示例
sql 复制代码
-- 如果工资为 0,则返回 NULL
SELECT name, NULLIF(salary, 0) AS adjusted_salary FROM employees;

解释:该查询如果工资为 0,则返回 NULL。

6. JSON 函数

6.1 JSON_EXTRACT() 函数

JSON_EXTRACT() 函数从 JSON 文档中提取数据。

示例
sql 复制代码
-- 从 JSON 列中提取员工姓名
SELECT JSON_EXTRACT(json_column, '$.name') AS name FROM employees_json;

解释:该查询从 JSON 列中提取员工姓名。

6.2 JSON_SET() 函数

JSON_SET() 函数在 JSON 文档中设置指定的数据。

示例
sql 复制代码
-- 在 JSON 列中设置员工姓名为 "John Doe"
UPDATE employees_json
SET json_column = JSON_SET(json_column, '$.name', 'John Doe')
WHERE employee_id = 1;

解释:该查询将 JSON 列中的员工姓名设置为 "John Doe"。

6.3 JSON_MERGE() 函数

JSON_MERGE() 函数合并多个 JSON 文档。

示例
sql 复制代码
-- 合并两个 JSON 文档
SELECT JSON_MERGE('{"name": "John"}', '{"age": 30}') AS merged_json;

解释:该查询合并两个 JSON 文档。

6.4 JSON_REPLACE() 函数

JSON_REPLACE() 函数在 JSON 文档中替换指定的数据。

示例
sql 复制代码
-- 在 JSON 列中替换员工姓名为 "John Doe"
UPDATE employees_json
SET json_column = JSON_REPLACE(json_column, '$.name', 'John Doe')
WHERE employee_id = 1;

解释:该查询将 JSON 列中的员工姓名替换为 "John Doe"。

6.5 JSON_REMOVE() 函数

JSON_REMOVE() 函数从 JSON 文档中删除指定的数据。

示例
sql 复制代码
-- 从 JSON 列中删除员工姓名
UPDATE employees_json
SET json_column = JSON_REMOVE(json_column, '$.name')
WHERE employee_id = 1;

解释:该查询从 JSON 列中删除员工姓名。

6.6 JSON_CONTAINS() 函数

JSON_CONTAINS() 函数检查 JSON 文档是否包含指定的数据。

示例
sql 复制代码
-- 检查 JSON 列是否包含员工 ID 为 1 的记录
SELECT JSON_CONTAINS(json_column, '{"employee_id": 1}') AS contains FROM employees_json;

解释:该查询检查 JSON 列是否包含员工 ID 为 1 的记录。

6.7 JSON_UNQUOTE() 函数

JSON_UNQUOTE() 函数去掉 JSON 文档中的引号。

示例
sql 复制代码
-- 去掉 JSON 列中员工姓名的引号
SELECT JSON_UNQUOTE(JSON_EXTRACT(json_column, '$.name')) AS name FROM employees_json;

解释:该查询去掉 JSON 列中员工姓名的引号。

6.8 JSON_LENGTH() 函数

JSON_LENGTH() 函数返回 JSON 文档中元素的数量。

示例
sql 复制代码
-- 计算 JSON 列中数组的长度
SELECT JSON_LENGTH(json_column) AS length FROM employees_json;

解释:该查询计算 JSON 列中数组的长度。

7. 字符串搜索和模式匹配函数

7.1 LOCATE() 函数

LOCATE() 函数返回子字符串在字符串中的位置。

示例
sql 复制代码
-- 查找 "John" 在员工姓名中的位置
SELECT LOCATE('John', name) AS position FROM employees;

解释:该查询查找 "John" 在员工姓名中的位置。

7.2 REGEXP() 函数

REGEXP() 函数用于执行正则表达式匹配。

示例
sql 复制代码
-- 查找姓名中包含数字的员工
SELECT name FROM employees WHERE name REGEXP '[0-9]';

解释:该查询查找姓名中包含数字的员工。

7.3 LIKE() 函数

LIKE() 函数用于匹配字符串模式。

示例
sql 复制代码
-- 查找姓名以 "J" 开头的员工
SELECT name FROM employees WHERE name LIKE 'J%';

解释:该查询查找姓名以 "J" 开头的员工。

8. 窗口函数

8.1 ROW_NUMBER() 函数

ROW_NUMBER() 函数为结果集中的每一行分配唯一的序号。

示例
sql 复制代码
-- 为每一行分配唯一的序号
SELECT name, salary, ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num FROM employees;

解释:该查询为每一行分配唯一的序号,按工资降序排序。

8.2 RANK() 函数

RANK() 函数为结果集中的每一行分配排名,排名相同的行具有相同的排名。

示例
sql 复制代码
-- 为每一行分配排名
SELECT name, salary, RANK() OVER (ORDER BY salary DESC) AS rank FROM employees;

解释:该查询为每一行分配排名,按工资降序排序。

8.3 DENSE_RANK() 函数

DENSE_RANK() 函数为结果集中的每一行分配排名,排名相同的行具有相同的排名,没有排名间隙。

示例
sql 复制代码
-- 为每一行分配密集排名
SELECT name, salary, DENSE_RANK() OVER (ORDER BY salary DESC) AS dense_rank FROM employees;

解释:该查询为每一行分配密集排名,按工资降序排序。

8.4 NTILE() 函数

NTILE() 函数将结果集划分为指定数量的组,并为每行分配组编号。

示例
sql 复制代码
-- 将结果集划分为 4 个组,并为每行分配组编号
SELECT name, salary, NTILE(4) OVER (ORDER BY salary DESC) AS quartile FROM employees;

解释:该查询将结果集划分为 4 个组,并为每行分配组编号。

8.5 LAG() 函数

LAG() 函数返回当前行之前某个偏移量的值。

示例
sql 复制代码
-- 获取当前行之前一行的工资
SELECT name, salary, LAG(salary, 1) OVER (ORDER BY salary) AS prev_salary FROM employees;

解释:该查询获取当前行之前一行的工资。

8.6 LEAD() 函数

LEAD() 函数返回当前行之后某个偏移量的值。

示例
sql 复制代码
-- 获取当前行之后一行的工资
SELECT name, salary, LEAD(salary, 1) OVER (ORDER BY salary) AS next_salary FROM employees;

解释:该查询获取当前行之后一行的工资。

8.7 CUME_DIST() 函数

CUME_DIST() 函数计算某行在结果集中的累积分布。

示例
sql 复制代码
-- 计算每个员工工资的累积分布
SELECT name, salary, CUME_DIST() OVER (ORDER BY salary) AS cume_dist FROM employees;

解释:该查询计算每个员工工资的累积分布。

8.8 PERCENT_RANK() 函数

PERCENT_RANK() 函数计算某行在结果集中的百分比排名。

示例
sql 复制代码
-- 计算每个员工工资的百分比排名
SELECT name, salary, PERCENT_RANK() OVER (ORDER BY salary) AS percent_rank FROM employees;

解释:该查询计算每个员工工资的百分比排名。

8.9 FIRST_VALUE() 函数

FIRST_VALUE() 函数返回窗口中的第一个值。

示例
sql 复制代码
-- 获取工资的第一个值
SELECT name, salary, FIRST_VALUE(salary) OVER (ORDER BY salary) AS first_salary FROM employees;

解释:该查询获取窗口中的第一个工资值。

8.10 LAST_VALUE() 函数

LAST_VALUE() 函数返回窗口中的最后一个值。

示例
sql 复制代码
-- 获取工资的最后一个值
SELECT name, salary, LAST_VALUE(salary) OVER (ORDER BY salary RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS last_salary FROM employees;

解释:该查询获取窗口中的最后一个工资值。

9. 地理空间函数

9.1 ST_Distance() 函数

ST_Distance() 函数计算两个地理点之间的距离。

示例
sql 复制代码
-- 计算两个地理点之间的距离(单位:米)
SELECT ST_Distance(POINT(0, 0), POINT(1, 1)) AS distance;

解释:该查询计算两个地理点之间的距离(单位:米)。

9.2 ST_Contains() 函数

ST_Contains() 函数检查一个地理对象是否包含另一个地理对象。

示例
sql 复制代码
-- 检查一个地理区域是否包含一个点
SELECT ST_Contains(geometry_area, POINT(1, 1)) AS contains FROM areas;

解释:该查询检查一个地理区域是否包含一个点。

9.3 ST_Within() 函数

ST_Within() 函数检查一个地理对象是否位于另一个地理对象内。

示例
sql 复制代码
-- 检查一个点是否位于一个地理区域内
SELECT ST_Within(POINT(1, 1), geometry_area) AS within FROM areas;

解释:该查询检查一个点是否位于一个地理区域内。

9.4 ST_Intersects() 函数

ST_Intersects() 函数检查两个地理对象是否相交。

示例
sql 复制代码
-- 检查两个地理区域是否相交
SELECT ST_Intersects(geometry_area1, geometry_area2) AS intersects FROM areas;

解释:该查询检查两个地理区域是否相交。

9.5 ST_Union() 函数

ST_Union() 函数计算两个地理对象的并集。

示例
sql 复制代码
-- 计算两个地理区域的并集
SELECT ST_Union(geometry_area1, geometry_area2) AS union_geom FROM areas;

解释:该查询计算两个地理区域的并集。

10. 安全函数

10.1 AES_ENCRYPT() 函数

AES_ENCRYPT() 函数使用 AES 算法对数据进行加密。

示例
sql 复制代码
-- 使用 AES 算法加密员工的敏感信息
SELECT AES_ENCRYPT(sensitive_info, 'encryption_key') AS encrypted_info FROM employees;

解释:该查询使用 AES 算法加密员工的敏感信息。

10.2 AES_DECRYPT() 函数

AES_DECRYPT() 函数使用 AES 算法解密数据。

示例
sql 复制代码
-- 使用 AES 算法解密员工的敏感信息
SELECT AES_DECRYPT(encrypted_info, 'encryption_key') AS decrypted_info FROM employees;

解释:该查询使用 AES 算法解密员工的敏感信息。

10.3 SHA1() 函数

SHA1() 函数计算字符串的 SHA-1 哈希值。

示例
sql 复制代码
-- 计算员工姓名的 SHA-1 哈希值
SELECT SHA1(name) AS hashed_name FROM employees;

解释:该查询计算员工姓名的 SHA-1 哈希值。

10.4 MD5() 函数

MD5() 函数计算字符串的 MD5 哈希值。

示例
sql 复制代码
-- 计算员工姓名的 MD5 哈希值
SELECT MD5(name) AS hashed_name FROM employees;

解释:该查询计算员工姓名的 MD5 哈希值。

11. 信息函数

11.1 VERSION() 函数

VERSION() 函数返回 MySQL 服务器的版本号。

示例
sql 复制代码
-- 获取 MySQL 服务器的版本号
SELECT VERSION() AS mysql_version;

解释:该查询返回 MySQL 服务器的版本号。

11.2 USER() 函数

USER() 函数返回当前用户的用户名和主机名。

示例
sql 复制代码
-- 获取当前用户的用户名和主机名
SELECT USER() AS current_user;

解释:该查询返回当前用户的用户名和主机名。

11.3 DATABASE() 函数

DATABASE() 函数返回当前数据库的名称。

示例
sql 复制代码
-- 获取当前数据库的名称
SELECT DATABASE() AS current_database;

解释:该查询返回当前数据库的名称。

11.4 CONNECTION_ID() 函数

CONNECTION_ID() 函数返回当前连接的唯一 ID。

示例
sql 复制代码
-- 获取当前连接的唯一 ID
SELECT CONNECTION_ID() AS connection_id;

解释:该查询返回当前连接的唯一 ID。

11.5 SESSION_USER() 函数

SESSION_USER() 函数返回当前会话的用户名。

示例
sql 复制代码
-- 获取当前会话的用户名
SELECT SESSION_USER() AS session_user;

解释:该查询返回当前会话的用户名。

11.6 SYSTEM_USER() 函数

SYSTEM_USER() 函数返回系统用户名。

示例
sql 复制代码
-- 获取系统用户名
SELECT SYSTEM_USER() AS system_user;

解释:该查询返回系统用户名。

11.7 CURRENT_USER() 函数

CURRENT_USER() 函数返回当前认证的用户名和主机名。

示例
sql 复制代码
-- 获取当前认证的用户名和主机名
SELECT CURRENT_USER() AS current_user;

解释:该查询返回当前认证的用户名和主机名。

11.8 @@hostname 函数

@@hostname 函数返回当前主机的名称。

示例
sql 复制代码
-- 获取当前主机的名称
SELECT @@hostname AS hostname;

解释:该查询返回当前主机的名称。

11.9 @@version_comment 函数

@@version_comment 函数返回当前 MySQL 服务器的版本注释。

示例
sql 复制代码
-- 获取 MySQL 服务器的版本注释
SELECT @@version_comment AS version_comment;

解释:该查询返回当前 MySQL 服务器的版本注释。

11.10 @@datadir 函数

@@datadir 函数返回 MySQL 数据目录的路径。

示例
sql 复制代码
-- 获取 MySQL 数据目录的路径
SELECT @@datadir AS datadir;

解释:该查询返回 MySQL 数据目录的路径。

11.11 @@sql_mode 函数

@@sql_mode 函数返回当前的 SQL 模式。

示例
sql 复制代码
-- 获取当前的 SQL 模式
SELECT @@sql_mode AS sql_mode;

解释:该查询返回当前的 SQL 模式。

结论

通过本文档的详细介绍,您可以深入了解 MySQL 8.0 中各种高阶函数的功能和用法,包括字符串函数、数学函数、聚合函数、日期和时间函数、条件函数、JSON 函数、窗口函数、地理空间函数、安全函数和信息函数。每个函数均附有详细的解释和实际应用的示例,以帮助您在不同的场景中高效使用这些函数,提升数据库操作和查询的效率。掌握这些高阶函数将使您在处理复杂数据操作时更加游刃有余。

相关推荐
Yaml44 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
追风林4 小时前
mac 本地docker-mysql主从复制部署
mysql·macos·docker
Hsu_kk6 小时前
MySQL 批量删除海量数据的几种方法
数据库·mysql
编程学无止境6 小时前
第02章 MySQL环境搭建
数据库·mysql
knight-n6 小时前
MYSQL库的操作
数据库·mysql
eternal__day8 小时前
MySQL_聚合函数&分组查询
数据库·mysql
咕哧普拉啦9 小时前
乐尚代驾十订单支付seata、rabbitmq异步消息、redisson延迟队列
java·spring boot·mysql·spring·maven·乐尚代驾·java最新项目
春哥的魔法书10 小时前
数据库基础(5) . DCL
数据库·mysql
鬼才血脉10 小时前
docker+mysql配置
mysql·adb·docker
一个假的前端男10 小时前
mysql 安装 windows
数据库·mysql