MySQL基础教程(三十五)MySQL之函数:[特殊字符]MySQL函数大全,从入门到实战,一文搞定!

一、MySQL函数概述

MySQL函数是预先编写好的代码块,用于执行特定操作并返回结果。它们极大简化了数据操作流程,提升了查询效率。函数可分为内置函数和用户自定义函数两大类,本文将重点解析最实用的内置函数。

二、核心函数分类及示例

1. 字符串函数
-- CONCAT连接字符串
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;

-- SUBSTRING字符串截取
SELECT SUBSTRING('MySQL Functions', 7, 8) AS result; -- 返回"Function"

-- LENGTH获取字符串长度
SELECT product_name, LENGTH(product_name) AS name_length FROM products;
2. 数值函数
-- ROUND四舍五入
SELECT ROUND(15.756, 1); -- 返回15.8

-- CEIL向上取整
SELECT CEIL(12.1); -- 返回13

-- RAND生成随机数
SELECT FLOOR(RAND() * 100) AS random_number; -- 返回0-99的随机整数
3. 日期时间函数
-- NOW获取当前日期时间
SELECT NOW() AS current_datetime;

-- DATE_FORMAT格式化日期
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日') AS formatted_date;

-- DATEDIFF计算日期差
SELECT DATEDIFF('2023-12-31', '2023-01-01') AS days_diff; -- 返回364
4. 流程控制函数
-- CASE条件判断
SELECT product_name, price,
    CASE 
        WHEN price > 100 THEN '高价'
        WHEN price > 50 THEN '中价'
        ELSE '低价'
    END AS price_level
FROM products;

-- IFNULL处理空值
SELECT product_name, IFNULL(stock_quantity, 0) AS stock FROM products;

三、实战综合示例

用户数据统计场景:提取用户姓氏,统计注册时长,标注活跃状态。

SELECT 
    user_id,
    SUBSTRING_INDEX(full_name, ' ', 1) AS last_name,
    DATEDIFF(NOW(), registration_date) AS registration_days,
    CASE
        WHEN last_login_date > DATE_SUB(NOW(), INTERVAL 30 DAY) THEN '活跃'
        ELSE '非活跃'
    END AS activity_status,
    CONCAT('用户已注册', FLOOR(DATEDIFF(NOW(), registration_date) / 365), '年') AS registration_info
FROM users
WHERE IFNULL(credit_score, 0) > 60;

四、性能优化注意事项

避免在WHERE条件中使用函数:会导致索引失效

-- 不推荐(索引失效)
SELECT * FROM orders WHERE YEAR(order_date) = 2023;

-- 推荐(使用索引)
SELECT * FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31';
  1. 减少函数嵌套层级:多层嵌套会增加计算开销
  2. 预先计算存储:对频繁使用的函数结果考虑冗余存储

五、总结

MySQL函数是提升开发效率的利器,但需要合理使用。掌握常用函数的使用场景和性能特性,能够写出更加高效、可维护的SQL语句。建议在实际使用中结合官方文档深入学习,并根据具体业务场景选择最合适的函数解决方案。


📚延伸学习:探索MySQL窗口函数、JSON函数等高级功能,进一步提升数据处理能力!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值