常用mysql语句
时间: 2025-04-22 19:30:06 浏览: 36
<think>嗯,用户想了解常用的MySQL查询语句及其用法。首先,我需要回顾一下自己掌握的MySQL知识,确保信息准确。然后,根据用户提供的三个引用内容,整理出基础查询、条件查询、排序、分页、聚合函数、子查询、连接查询、分组查询、插入、更新、删除这些部分。
首先,基础查询部分,应该包括SELECT *和指定列的查询,用户引用[1]里提到了这些,所以需要先列出。然后是条件查询,WHERE子句和运算符,比如AND、OR,还有IN和BETWEEN,这些在引用[1]和引用[3]都有例子,要确保涵盖。
接下来是排序和分页,引用[3]里有ORDER BY和LIMIT的示例,特别是分页的写法,比如LIMIT 5 OFFSET 10,或者简写成LIMIT 10,5,需要解释清楚。这部分用户可能需要知道如何实现分页功能,所以得详细说明。
聚合函数方面,引用[2]提到了子查询中的AVG(),还有COUNT、SUM、MAX、MIN这些常用函数,应该分别举例说明,比如计算总数、平均值等。
子查询部分,引用[2]和引用[3]都涉及到了,特别是作为条件或数据源的情况,比如查询大于平均年龄的学生,需要展示子查询的嵌套用法。
连接查询可能用户也会用到,比如INNER JOIN和LEFT JOIN,虽然引用中没有直接提到,但这是常用部分,应该补充,给出示例说明如何连接两个表。
分组查询中的GROUP BY和HAVING,引用[3]里可能有相关的例子,需要结合聚合函数一起讲解,比如按性别分组统计人数,并筛选出数量大于5的组。
数据操作部分,插入、更新、删除这些基础操作,虽然用户主要问查询,但可能也需要了解,所以简要提及,但重点放在查询语句上。
另外,用户提供的引用里提到了一些高级查询,比如子查询作为数据源,还有ROW_NUMBER()的使用,虽然ROW_NUMBER()是窗口函数,可能在MySQL 8.0以上支持,需要注明版本。但考虑到用户可能使用的是较新版本,还是可以包括进去,但可能作为扩展内容。
最后,要确保所有示例都符合MySQL的语法,使用正确的符号,比如字符串用单引号,条件语句的正确格式。同时,注意用户提到的LaTeX格式要求,所有行内数学表达式用$...$,不过这次回答主要涉及SQL语句,可能用不上数学公式,但需要注意代码块的使用,用三个反引号包围。
需要检查是否有遗漏的部分,比如联合查询UNION,或者DISTINCT关键字去重,这些在基础查询中也很重要,应该加入。例如,查询不重复的国家列表,可以用SELECT DISTINCT country FROM users;。
另外,用户可能对性能优化感兴趣,比如索引的使用,但在常用查询语句中可能不需要深入,不过可以提到在WHERE或JOIN的列上使用索引来提高查询速度。
最后,生成相关问题,考虑用户接下来可能会问如何优化查询、索引的使用、事务处理,或者更复杂的连接查询示例,所以相关问题可以包括这些方面。
总结一下,回答的结构应该是分点列出各个查询类型,每个类型下给出示例和解释,确保覆盖基础到稍微高级的内容,同时参考用户提供的引用内容,保持示例简洁明了。同时,注意使用中文,避免使用Markdown格式,但代码块需要用反引号包围,并正确标注引用来源。</think>### 常用 MySQL 查询语句及示例
#### 一、基础查询
1. **查询所有字段**
```sql
SELECT * FROM 表名; -- 例如:SELECT * FROM students;
```
2. **查询指定字段**
```sql
SELECT 列名1, 列名2 FROM 表名; -- 例如:SELECT name, age FROM students;
```
#### 二、条件查询
1. **简单条件筛选**
```sql
SELECT * FROM 表名 WHERE 条件;
-- 示例:查询年龄大于18的学生
SELECT * FROM students WHERE age > 18;
```
2. **多条件组合**
```sql
-- 使用 AND/OR
SELECT * FROM students WHERE gender=1 AND is_delete=0; -- 查询未删除的男生[^3]
```
3. **范围查询**
```sql
SELECT * FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2; -- 例如:查询年龄在18-25之间的学生
SELECT * FROM students WHERE age BETWEEN 18 AND 25;
SELECT * FROM 表名 WHERE 列名 IN (值1, 值2); -- 例如:查询特定ID的学生
SELECT * FROM students WHERE id IN (1, 3, 5);
```
#### 三、排序与分页
1. **排序(ORDER BY)**
```sql
-- 按年龄降序,身高升序
SELECT * FROM students ORDER BY age DESC, height ASC; [^3]
```
2. **分页(LIMIT)**
```sql
-- 跳过前10条,取5条(第11-15条)
SELECT * FROM students LIMIT 5 OFFSET 10;
-- 简写:SELECT * FROM students LIMIT 10,5;
```
#### 四、聚合函数
1. **统计与计算**
```sql
SELECT COUNT(*) FROM students; -- 统计总记录数
SELECT AVG(age) FROM students; -- 计算平均年龄[^2]
SELECT MAX(score), MIN(score) FROM exams; -- 查询最高/最低分
```
#### 五、子查询
1. **作为条件**
```sql
-- 查询年龄大于平均年龄的学生
SELECT * FROM students WHERE age > (SELECT AVG(age) FROM students); [^2]
```
2. **作为数据源**
```sql
-- 从子查询结果中筛选
SELECT * FROM (SELECT * FROM students WHERE gender=1) AS male_students;
```
#### 六、连接查询
1. **内连接(INNER JOIN)**
```sql
-- 查询学生及其课程成绩
SELECT s.name, c.score
FROM students s
INNER JOIN courses c ON s.id = c.student_id;
```
2. **左连接(LEFT JOIN)**
```sql
-- 查询所有学生(包括未选课的学生)
SELECT s.name, c.score
FROM students s
LEFT JOIN courses c ON s.id = c.student_id;
```
#### 七、分组查询(GROUP BY)
1. **基础分组**
```sql
-- 按性别统计人数
SELECT gender, COUNT(*) FROM students GROUP BY gender;
```
2. **分组后筛选(HAVING)**
```sql
-- 筛选人数大于5的组
SELECT gender, COUNT(*) AS count FROM students GROUP BY gender HAVING count > 5;
```
#### 八、数据操作
1. **插入数据**
```sql
INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2);
-- 示例:INSERT INTO students (name, age) VALUES ('张三', 20);
```
2. **更新数据**
```sql
UPDATE 表名 SET 列名=新值 WHERE 条件;
-- 示例:UPDATE students SET age=21 WHERE id=1;
```
3. **删除数据**
```sql
DELETE FROM 表名 WHERE 条件;
-- 示例:DELETE FROM students WHERE is_delete=1;
```
---
阅读全文
相关推荐











