MySQL内建查询函数有哪些?如何使用它们优化数据库查询?

MySQL 提供了多种内建查询函数,如 COUNT(), SUM(), AVG(), MAX(), MIN() 等。

MySQL 内建查询函数

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 函数?

mysql内建查询函数

答:在 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

Like (0)
小编的头像小编
Previous 2024年11月19日 08:00
Next 2024年11月19日 08:12

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注