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 函数、窗口函数、地理空间函数、安全函数和信息函数。每个函数均附有详细的解释和实际应用的示例,以帮助您在不同的场景中高效使用这些函数,提升数据库操作和查询的效率。掌握这些高阶函数将使您在处理复杂数据操作时更加游刃有余。

相关推荐
知初~4 小时前
出行项目案例
hive·hadoop·redis·sql·mysql·spark·database
子非衣6 小时前
MySQL修改JSON格式数据示例
android·mysql·json
钊兵7 小时前
数据库驱动免费下载(Oracle、Mysql、达梦、Postgresql)
数据库·mysql·postgresql·oracle·达梦·驱动
隔壁老王1569 小时前
mysql实时同步到es
数据库·mysql·elasticsearch
Hanson Huang11 小时前
【存储中间件API】MySQL、Redis、MongoDB、ES常见api操作及性能比较
redis·mysql·mongodb·es
LUCIAZZZ11 小时前
EasyExcel快速入门
java·数据库·后端·mysql·spring·spring cloud·easyexcel
yuanbenshidiaos12 小时前
【正则表达式】
数据库·mysql·正则表达式
雾里看山14 小时前
【MySQL】内置函数
android·数据库·mysql
geovindu14 小时前
python: SQLAlchemy (ORM) Simple example using mysql in Ubuntu 24.04
python·mysql·ubuntu