本文档总结了MySQL查询语句的基础语法和关键概念,涵盖SELECT、INSERT、UPDATE及DELETE等操作,适合数据库初学者学习参考。
### MySQL查询语句汇总基本语法
#### 一、基本SELECT查询
`SELECT`语句是MySQL中最基础也是最重要的部分之一,主要用于从数据库中选择数据。它的基本语法结构如下所示:
```sql
SELECT column1, column2, ...
FROM table_name;
```
其中,`column1, column2, ...`表示要从表中选择的具体列名;`table_name`则指明了数据所在的表。
**示例:**
假设有一个表名为`students`,其中包含列`name`(学生姓名)和`age`(年龄),那么我们可以使用以下`SELECT`语句来查询所有学生的姓名和年龄:
```sql
SELECT name, age FROM students;
```
#### 二、条件查询
在实际应用中,我们往往需要根据某些条件来筛选数据,这时就需要用到`WHERE`子句。`WHERE`子句允许我们在`SELECT`语句中添加条件,以便只选择符合特定条件的数据。
**基本语法:**
```sql
SELECT column1, column2, ...
FROM table_name
WHERE condition;
```
**示例:**
如果我们要查找年龄大于20岁的学生的信息,可以这样写:
```sql
SELECT name, age FROM students WHERE age > 20;
```
此外,还可以结合使用逻辑运算符如`AND`、`OR`和`NOT`来构建更复杂的条件表达式。例如,查找年龄大于20岁且名字不是“John”的学生:
```sql
SELECT name, age FROM students WHERE age > 20 AND name != John;
```
#### 三、聚合函数
聚合函数在处理大量数据时非常有用,它可以对多行数据执行计算,并返回单一的结果值。常见的聚合函数有:
- `COUNT(*)`:计算行的数量。
- `SUM(column)`:计算指定列的总和。
- `AVG(column)`:计算指定列的平均值。
- `MAX(column)`:找出指定列的最大值。
- `MIN(column)`:找出指定列的最小值。
**示例:**
计算学生总数:
```sql
SELECT COUNT(*) FROM students;
```
计算学生的平均年龄:
```sql
SELECT AVG(age) FROM students;
```
#### 四、子查询
子查询是指一个嵌套在另一个查询中的查询,主要用于过滤数据或作为查询的一部分。它可以帮助我们完成更复杂的查询任务。
**基本语法:**
```sql
SELECT column1, column2, ...
FROM table_name
WHERE condition IN (subquery);
```
**示例:**
假设要找出年龄大于平均年龄的学生,可以这样实现:
```sql
SELECT name, age FROM students WHERE age > (SELECT AVG(age) FROM students);
```
#### 五、连接查询
连接查询用于从两个或多个表中检索数据。根据不同的连接方式,可以分为:
- `INNER JOIN`:返回两个表中匹配的行。
- `LEFT JOIN`:返回左表的所有行,即使右表没有匹配行也会显示。
- `RIGHT JOIN`:返回右表的所有行,即使左表没有匹配行也会显示。
- `FULL OUTER JOIN`:返回左表和右表的所有行,即使两边都没有匹配行也会显示。
**示例:**
如果有两张表`students`和`courses`,分别代表学生和课程信息,并且通过`student_id`关联。为了获取每个学生及其所选课程的列表,可以使用`INNER JOIN`:
```sql
SELECT students.name, courses.course_name
FROM students
INNER JOIN courses ON students.student_id = courses.student_id;
```
#### 六、排序和分组
`ORDER BY`子句用于对查询结果进行排序,默认是升序(ASC),也可以指定为降序(DESC)。
**基本语法:**
```sql
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
```
**示例:**
按照年龄降序排列学生信息:
```sql
SELECT name, age FROM students ORDER BY age DESC;
```
`GROUP BY`子句则用于将结果集按一个或多个列进行分组,通常会与聚合函数一起使用。
**基本语法:**
```sql
SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;
```
**示例:**
按年龄分组并计算每个年龄组的学生数量:
```sql
SELECT age, COUNT(*) FROM students GROUP BY age;
```
#### 七、更新数据
`UPDATE`语句用于修改表中的现有记录。
**基本语法:**
```sql
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
```
**示例:**
将名为“John”的学生的年龄更新为25