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%的日常数据处理需求,建议结合业务场景多加练习!

你可能感兴趣的:(SQL,数据库,mysql,数据库)