当前位置: 首页 > ds >正文

MYSQL 使用心得

一、字符串函数

1. CONCAT(str1, str2, ...)

​作用​​:拼接多个字符串
​示例​​:合并姓名和邮箱

SELECT CONCAT(name, ' - ', email) AS user_info FROM users;
2. SUBSTRING(str, start, length) 或 SUBSTR()

​作用​​:截取子字符串
​示例​​:提取手机号前3位

SELECT SUBSTRING(phone, 1, 3) AS prefix FROM customers;
3. LENGTH(str) 或 CHAR_LENGTH()

​作用​​:计算字符串长度
​示例​​:过滤用户名长度超过10的用户

SELECT username FROM users WHERE CHAR_LENGTH(username) > 10;
4. UPPER(str) / LOWER(str)

​作用​​:转换大小写
​示例​​:统一城市名为大写

SELECT UPPER(city) AS city_upper FROM locations;
5. TRIM([remstr FROM] str)

​作用​​:去除前后空格或指定字符
​示例​​:清理用户输入的空格

SELECT TRIM(' Hello MySQL ') AS cleaned; -- 输出 'Hello MySQL'

二、数值函数

1. ROUND(num, decimals)

​作用​​:四舍五入到指定小数位
​示例​​:计算平均价格保留两位小数

SELECT ROUND(AVG(price), 2) AS avg_price FROM products;
2. CEIL(num) / FLOOR(num)

​作用​​:向上/向下取整
​示例​​:计算运费(不足1kg按1kg计)

SELECT CEIL(weight) AS shipping_weight FROM orders;
3. RAND()

​作用​​:生成0~1之间的随机数
​示例​​:随机抽取5条记录

SELECT * FROM users ORDER BY RAND() LIMIT 5;
4. MOD(n, m)

​作用​​:取模运算
​示例​​:筛选偶数ID的用户

SELECT * FROM users WHERE MOD(id, 2) = 0;

三、日期时间函数

1. NOW() / CURDATE() / CURTIME()

​作用​​:获取当前日期时间
​示例​​:记录订单创建时间

INSERT INTO orders (product_id, created_at) VALUES (1001, NOW());
2. DATE_FORMAT(date, format)

​作用​​:格式化日期
​示例​​:显示日期为 "2023年08月25日"

SELECT DATE_FORMAT(created_at, '%Y年%m月%d日') AS date_cn FROM orders;
3. DATEDIFF(end, start)

​作用​​:计算两个日期差值(天数)
​示例​​:统计用户注册时长

SELECT DATEDIFF(NOW(), signup_date) AS days FROM users;
4. DATE_ADD(date, INTERVAL expr unit)

​作用​​:日期加减
​示例​​:计算7天后的到期日

SELECT DATE_ADD(NOW(), INTERVAL 7 DAY) AS expire_date;

四、聚合函数

1. COUNT(expr)

​作用​​:统计行数
​示例​​:统计活跃用户数

SELECT COUNT(*) AS active_users FROM users WHERE last_login > '2023-01-01';
2. SUM(expr) / AVG(expr)

​作用​​:求和/平均值
​示例​​:计算部门总薪资和平均年龄

SELECT department, SUM(salary) AS total_salary, AVG(age) AS avg_age FROM employees GROUP BY department;
3. MAX(expr) / MIN(expr)

​作用​​:取最大/最小值
​示例​​:查找最贵商品价格

SELECT MAX(price) AS max_price FROM products;

五、条件判断函数

1. IF(condition, true_value, false_value)

​作用​​:简单条件判断
​示例​​:标记高单价商品

SELECT product_name, IF(price > 1000, '高价', '普通') AS price_level FROM products;
2. CASE WHEN

​作用​​:多条件分支
​示例​​:分类用户年龄段

SELECT name, CASE WHEN age < 18 THEN '未成年' WHEN age BETWEEN 18 AND 60 THEN '成年' ELSE '老年' END AS age_group FROM users;
3. COALESCE(expr1, expr2, ...)

​作用​​:返回第一个非NULL值
​示例​​:处理未填写电话号码的用户

SELECT COALESCE(phone, '未填写') AS contact FROM customers;

六、其他实用函数

1. GROUP_CONCAT(expr)

​作用​​:合并分组内的字符串
​示例​​:列出每个部门的员工姓名

SELECT department, GROUP_CONCAT(name SEPARATOR ', ') AS employees FROM employees GROUP BY department;
2. JSON_EXTRACT(json_doc, path)

​作用​​:提取JSON字段(MySQL 5.7+)
​示例​​:解析用户地址JSON

SELECT JSON_EXTRACT(profile, '$.address.city') AS city FROM users;

实战综合示例

场景:生成用户报告
SELECT id, UPPER(SUBSTRING(name, 1, 1)) AS initial, -- 首字母大写 CONCAT(FLOOR(age/10)*10, '后') AS age_group, -- 80后/90后 DATE_FORMAT(last_login, '%Y-%m') AS login_month, CASE WHEN total_orders > 10 THEN 'VIP' WHEN total_orders > 5 THEN '活跃' ELSE '普通' END AS user_level FROM user_stats;

总结表格:高频函数速查

类型函数典型应用场景
字符串CONCAT合并多字段信息
数值ROUND金额/评分四舍五入
日期DATE_FORMAT格式化日期显示
聚合COUNT + GROUP BY统计分组数据
条件CASE WHEN多条件数据分类
高级处理GROUP_CONCAT合并分组文本

掌握这些函数可覆盖80%的日常数据处理需求,建议结合业务场景多加练习!

http://www.xdnf.cn/news/9866.html

相关文章:

  • SIEMENS西门子6FC特价系列型号6FC5303-1AF02-8BP0
  • AI问答-Vue3+TS:reactive创建一个响应式数组,用一个新的数组对象来替换它,同时保持响应性
  • Java中的设计模式实战:单例、工厂、策略模式的最佳实践
  • NumPy 2.x 完全指南【二十二】数组标量
  • Socket网络编程
  • Vue3 + Element Plus 实现树形结构的“单选 + 只选叶子节点 + 默认选中第一个子节点”
  • 微内核与宏内核有什么区别(GAI)
  • laya3的2d相机与2d区域
  • 2025.05.28-华为暑期实习第二题-200分
  • 尝鲜纯血鸿蒙,华为国际版本暂时不支持升级。如mateX6 国际版?为什么不支持?什么时候支持?
  • spark shuffle的分区支持动态调整,而hive不支持
  • Oracle MOVE ONLINE 实现原理
  • Java求职者面试题详解:计算机网络、操作系统、设计模式与数据结构
  • VR 电缆故障测试系统:技术革新​
  • 数控技术应用理实一体化平台VR实训系统
  • python中使用高并发分布式队列库celery的那些坑
  • 深入解析Java8核心新特性(Optional、新的日期时间API、接口增强)
  • Android AIDL Hal最低保证出现的问题
  • CSS基础巩固-选择
  • 【大模型02】Deepseek使用和prompt工程
  • PH热榜 | 2025-05-29
  • leetcode235.二叉搜索树的最近公共祖先:迭代法利用有序性高效寻根
  • 【音频处理】java流式调用ffmpeg命令
  • 《Python 应用中的蓝绿部署与滚动更新:持续集成中的实践与优化》
  • Java设计模式从基础到实际运用
  • 【redis实战篇】第六天
  • 一根网线连接两台电脑组建局域网
  • 不起火,不爆炸,高速摄像机、数字图像相关DIC技术在动力电池新国标安全性能测试中的应用
  • 代码随想录算法训练营第60期第五十一天打卡
  • R3GAN训练自己的数据集