MySQL 50条必练查询语句
封面图
•
2025-11-13
•
MySQL
225
1
1
0
以下是 **MySQL 50条必练查询语句**,涵盖基础查询、条件筛选、排序、分组、连接、子查询、聚合函数等常用操作,适合初学者和进阶者练习。 --- ### 🧩 基础查询 1. 查询所有字段 ```sql SELECT * FROM 表名; ``` 2. 查询指定字段 ```sql SELECT 字段1, 字段2 FROM 表名; ``` 3. 查询不重复记录 ```sql SELECT DISTINCT 字段 FROM 表名; ``` 4. 查询满足条件的记录 ```sql SELECT * FROM 表名 WHERE 条件; ``` 5. 查询结果排序 ```sql SELECT * FROM 表名 ORDER BY 字段 ASC/DESC; ``` 6. 查询前几条记录(LIMIT) ```sql SELECT * FROM 表名 LIMIT 10; ``` 7. 查询记录数量 ```sql SELECT COUNT(*) FROM 表名; ``` 8. 查询最大值 ```sql SELECT MAX(字段) FROM 表名; ``` 9. 查询最小值 ```sql SELECT MIN(字段) FROM 表名; ``` 10. 查询平均值 ```sql SELECT AVG(字段) FROM 表名; ``` 11. 查询总和 ```sql SELECT SUM(字段) FROM 表名; ``` --- ### 🧠 条件查询 12. 使用 `AND` 和 `OR` 连接多个条件 ```sql SELECT * FROM 表名 WHERE 字段1 = '值' AND 字段2 > 10; ``` 13. 使用 `IN` 查询多个值 ```sql SELECT * FROM 表名 WHERE 字段 IN ('值1', '值2'); ``` 14. 使用 `LIKE` 模糊查询 ```sql SELECT * FROM 表名 WHERE 字段 LIKE '%关键字%'; ``` 15. 使用 `BETWEEN` 查询范围 ```sql SELECT * FROM 表名 WHERE 字段 BETWEEN 值1 AND 值2; ``` 16. 查询空值 ```sql SELECT * FROM 表名 WHERE 字段 IS NULL; ``` 17. 查询非空值 ```sql SELECT * FROM 表名 WHERE 字段 IS NOT NULL; ``` 18. 查询不等于某个值 ```sql SELECT * FROM 表名 WHERE 字段 != '值'; ``` 19. 查询包含某个字符串的记录 ```sql SELECT * FROM 表名 WHERE 字段 LIKE '前缀%'; ``` 20. 查询以某个字符开头的记录 ```sql SELECT * FROM 表名 WHERE 字段 LIKE 'A%'; ``` --- ### 🔁 分组与聚合 21. 按字段分组统计 ```sql SELECT 字段, COUNT(*) FROM 表名 GROUP BY 字段; ``` 22. 分组后筛选数据(HAVING) ```sql SELECT 字段, COUNT(*) FROM 表名 GROUP BY 字段 HAVING COUNT(*) > 5; ``` 23. 多字段分组 ```sql SELECT 字段1, 字段2, COUNT(*) FROM 表名 GROUP BY 字段1, 字段2; ``` 24. 分组后排序 ```sql SELECT 字段, COUNT(*) FROM 表名 GROUP BY 字段 ORDER BY COUNT(*) DESC; ``` 25. 分组并计算平均值 ```sql SELECT 字段, AVG(数值字段) FROM 表名 GROUP BY 字段; ``` 26. 分组并求和 ```sql SELECT 字段, SUM(数值字段) FROM 表名 GROUP BY 字段; ``` 27. 分组并去重统计 ```sql SELECT 字段, COUNT(DISTINCT 子字段) FROM 表名 GROUP BY 字段; ``` --- ### 🔄 连接查询(JOIN) 28. 内连接(INNER JOIN) ```sql SELECT a.字段, b.字段 FROM 表1 a INNER JOIN 表2 b ON a.关联字段 = b.关联字段; ``` 29. 左连接(LEFT JOIN) ```sql SELECT a.字段, b.字段 FROM 表1 a LEFT JOIN 表2 b ON a.关联字段 = b.关联字段; ``` 30. 右连接(RIGHT JOIN) ```sql SELECT a.字段, b.字段 FROM 表1 a RIGHT JOIN 表2 b ON a.关联字段 = b.关联字段; ``` 31. 全连接(FULL JOIN)(MySQL 不支持,可用 UNION 实现) ```sql SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.字段 = 表2.字段 UNION SELECT * FROM 表1 RIGHT JOIN 表2 ON 表1.字段 = 表2.字段; ``` 32. 自连接(同一张表) ```sql SELECT a.字段, b.字段 FROM 表 a JOIN 表 b ON a.父ID = b.ID; ``` 33. 多表连接 ```sql SELECT a.字段, b.字段, c.字段 FROM 表1 a JOIN 表2 b ON a.字段 = b.字段 JOIN 表3 c ON b.字段 = c.字段; ``` --- ### 📌 子查询 34. 子查询作为条件 ```sql SELECT * FROM 表名 WHERE 字段 = (SELECT 字段 FROM 表名 WHERE 条件); ``` 35. 子查询返回多行 ```sql SELECT * FROM 表名 WHERE 字段 IN (SELECT 字段 FROM 表名 WHERE 条件); ``` 36. 子查询作为临时表 ```sql SELECT * FROM (SELECT 字段 FROM 表名 WHERE 条件) AS 子表; ``` 37. 使用 EXISTS 判断是否存在 ```sql SELECT * FROM 表1 a WHERE EXISTS (SELECT 1 FROM 表2 b WHERE a.字段 = b.字段); ``` 38. 使用 NOT EXISTS ```sql SELECT * FROM 表1 a WHERE NOT EXISTS (SELECT 1 FROM 表2 b WHERE a.字段 = b.字段); ``` --- ### 🎯 特殊查询 39. 查询当前时间 ```sql SELECT NOW(); ``` 40. 查询日期范围 ```sql SELECT * FROM 表名 WHERE 日期字段 BETWEEN '2023-01-01' AND '2023-12-31'; ``` 41. 查询日期格式化 ```sql SELECT DATE_FORMAT(日期字段, '%Y-%m-%d') AS 日期 FROM 表名; ``` 42. 查询年份 ```sql SELECT YEAR(日期字段) FROM 表名; ``` 43. 查询月份 ```sql SELECT MONTH(日期字段) FROM 表名; ``` 44. 查询日 ```sql SELECT DAY(日期字段) FROM 表名; ``` 45. 查询时间差 ```sql SELECT TIMEDIFF(结束时间, 开始时间) FROM 表名; ``` 46. 查询时间间隔 ```sql SELECT DATE_ADD(日期字段, INTERVAL 1 DAY) FROM 表名; ``` 47. 查询当天数据 ```sql SELECT * FROM 表名 WHERE DATE(日期字段) = CURDATE(); ``` 48. 查询本周数据 ```sql SELECT * FROM 表名 WHERE YEARWEEK(日期字段) = YEARWEEK(CURDATE()); ``` 49. 查询本月数据 ```sql SELECT * FROM 表名 WHERE DATE_FORMAT(日期字段, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m'); ``` 50. 查询某字段不为空 ```sql SELECT * FROM 表名 WHERE 字段 IS NOT NULL; ``` --- ### ✅ 小贴士: - 在实际使用中,请将 `表名` 和 `字段` 替换为你的数据库结构。 - 注意 SQL 的大小写(虽然 MySQL 不区分,但建议按习惯书写)。 - 熟练掌握 `WHERE`, `GROUP BY`, `ORDER BY`, `JOIN`, `SUBQUERY` 是提高 SQL 能力的关键。 如果你有具体的数据库结构(如用户表、订单表等),我可以为你定制更针对性的查询语句。需要吗?
上一篇:
查看mysql版本的方法
下一篇:
mysql数据库锁定机制
标题录入,一次不能超过6条
留言
评论