MySQL 提供了多种内建查询函数,如
COUNT(), SUM(), AVG(), MAX(), MIN() 等。MySQL 内建查询函数
MySQL 提供了多种内建查询函数,这些函数可以帮助用户在数据库操作中实现各种复杂的数据处理和分析,以下是一些常用的 MySQL 查询函数及其详细说明:

1. 数学函数
| 函数名 | 描述 |
| ABS(x) | 返回 x 的绝对值 |
| CEIL(x) / CEILING(x) | 返回大于或等于 x 的最小整数 |
| FLOOR(x) | 返回小于或等于 x 的最大整数 |
| RAND() | 返回一个 0 到 1 之间的随机数 |
| ROUND(x) | 返回四舍五入后的值 |
| SQRT(x) | 返回 x 的平方根 |
| POW(x, y) | 返回 x 的 y 次幂 |
| EXP(x) | 返回 e 的 x 次幂 |
| LN(x) | 返回 x 的自然对数 |
| LOG(x, base) | 返回以 base 为底 x 的对数 |
| SIN(x) | 返回 x 的正弦值(x 单位为弧度) |
| COS(x) | 返回 x 的余弦值(x 单位为弧度) |
| TAN(x) | 返回 x 的正切值(x 单位为弧度) |
| DEGREES(x) | 将弧度转换为角度 |
| RADIANS(x) | 将角度转换为弧度 |
| PI() | 返回圆周率π的值 |
| FACTORIAL(n) | 返回 n 的阶乘 |
| BIN(x) | 返回 x 的二进制表示 |
| OCT(x) | 返回 x 的八进制表示 |
| HEX(x) | 返回 x 的十六进制表示 |
2. 字符串函数
| 函数名 | 描述 |
| LENGTH(str) | 返回字符串 str 的长度 |
| LOCATE(substr, str) | 返回子字符串 substr 在字符串 str 中的位置 |
| POSITION(substr IN str) | 返回子字符串 substr 在字符串 str 中的起始位置 |
| CONCAT(str1, str2, …) | 连接多个字符串 |
| CONCAT_WS(separator, str1, str2, …) | 使用指定分隔符连接多个字符串 |
| INSERT(str, pos, len, newstr) | 从字符串 str 的第 pos 位置开始,用 newstr 替换 len 长度的字符 |
| REPLACE(str, from_str, to_str) | 将字符串 str 中的 from_str 替换为 to_str |
| REVERSE(str) | 反转字符串 str |
| UPPER(str) | 将字符串 str 转换为大写 |
| UCASE(str) | 将字符串 str 转换为小写 |
| MID(str, pos, len) | 返回字符串 str 从第 pos 位置开始的 len 个字符 |
| SUBSTRING(str, pos, len) | 返回字符串 str 从第 pos 位置开始的 len 个字符 |
| LEFT(str, len) | 返回字符串 str 从左边起的 len 个字符 |
| RIGHT(str, len) | 返回字符串 str 从右边起的 len 个字符 |
| LTRIM(str) | 去除字符串 str 左侧空格 |
| RTRIM(str) | 去除字符串 str 右侧空格 |
| TRIM(str) | 同时去除字符串 str 两侧空格 |
| LIKE(str, pattern) | 判断字符串 str 是否匹配模式 pattern |
| INSTR(haystack, needle) | 返回字符串 needle 在 haystack 中首次出现的位置 |
| REPEAT(str, n) | 重复字符串 str n 次 |
| FORMAT(x, n) | 格式化数字 x,保留 n 位小数 |
3. 日期和时间函数
| 函数名 | 描述 |
| NOW() | 获取当前日期和时间 |
| CURDATE() | 获取当前日期 |
| CURTIME() | 获取当前时间 |
| YEAR(date) | 获取日期 date 的年份 |
| MONTH(date) | 获取日期 date 的月份 |
| DAY(date) | 获取日期 date 的日 |
| HOUR(time) | 获取时间 time 的小时 |
| MINUTE(time) | 获取时间 time 的分钟 |
| SECOND(time) | 获取时间 time 的秒 |
| UNIX_TIMESTAMP() | 获取当前时间的 Unix 时间戳 |
| FROM_UNIXTIME(unix_timestamp) | 根据 Unix 时间戳获取对应的日期和时间 |
| TIMESTAMPDIFF(unit, datetime1, datetime2) | 计算两个日期之间的差异 |
| DATEDIFF(datetime1, datetime2) | 计算两个日期之间的天数差异 |
| ADDDATE(date, days) | 给日期 date 加上指定的天数 |
| SUBDATE(date, days) | 给日期 date 减去指定的天数 |
| DATE_ADD(date, interval) | 给日期 date 加上指定的时间间隔 |
| DATE_SUB(date, interval) | 给日期 date 减去指定的时间间隔 |
| TIME_TO_SEC(time) | 将时间 time 转换为秒 |
| SECONDS_TO_TIME(seconds) | 将秒数 seconds 转换为时间格式 |
4. 聚合函数
| 函数名 | 描述 |
| COUNT(*) | 统计行数 |
| AVG(column) | 计算列的平均值 |
| SUM(column) | 计算列的总和 |
| MIN(column) | 获取列的最小值 |
| MAX(column) | 获取列的最大值 |
| STDDEV(column) | 计算列的标准差 |
| VARIANCE(column) | 计算列的方差 |
| STDDEV_POP(column) | 计算列的总体标准差 |
| VARIANCE_POP(column) | 计算列的总体方差 |
5. 控制流函数
| 函数名 | 描述 |
| IF(condition, true_value, false_value) | 如果条件为真则返回 true_value,否则返回 false_value |
| CASE expression | 根据表达式选择相应的值 |
| IFNULL(expression1, expression2) | expression1 为 NULL,则返回 expression2,否则返回 expression1 |
6. JSON 函数
| 函数名 | 描述 |
| JSON_OBJECT(key, value, …) | 创建一个 JSON 对象 |
| JSON_ARRAY(value, …) | 创建一个 JSON 数组 |
| JSON_QUOTE(string) | 确保字符串被正确地引用为 JSON 格式 |
| JSON_UNQUOTE(json_string) | 移除 JSON 字符串中的引号 |
| JSON_EXTRACT(json_doc, key) | 提取 JSON 文档中指定键的值 |
| JSON_LENGTH(json_doc) | 获取 JSON 文档的长度 |
| JSON_TYPE(json_val) | 获取 JSON 值的类型 |
相关问题与解答
问题一:如何在 SQL 查询中使用IF 函数?

答:在 SQL 查询中,可以使用IF 函数根据条件返回不同的值,假设有一个员工表employees,包含salary(工资)和bonus(奖金)两列,可以使用如下查询来生成一个新列total_compensation,如果员工的奖金超过5000,则总补偿为工资加奖金,否则总补偿仅为工资:
SELECT employee_id, salary, bonus,
IF(bonus > 5000, total_compensation = salary + bonus, total_compensation = salary) AS total_compensation
FROM employees;
这个查询会检查每个员工的奖金是否超过5000,如果是,则total_compensation 就是工资加奖金,否则就是工资。
问题二:如何使用JSON_EXTRACT 函数从 JSON 数据中提取特定信息?
答:假设有一个名为orders 的表,其中包含一个名为order_details 的列,该列存储的是 JSON 格式的数据。order_details 包括客户姓名和订单金额,可以使用JSON_EXTRACT 函数来提取特定的字段,要提取所有订单的客户名称,可以使用以下查询:
SELECT customer_name FROM orders, JSON_EXTRACT(order_details, '$.customerName') AS customer_name;
这个查询将遍历orders 表中的每一行,并从order_details JSON 字段中提取customerName。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/73279.html