mysql 跨表查询、更新、删除示例


### MySQL 跨表查询、更新、删除示例

#### 跨表查询(JOIN)

假设有两个表,`students`(学生表)和`courses`(课程表),我们需要查询所有学生的姓名和他们所选的课程名称。


SELECT students.name, courses.course_name
FROM students
JOIN courses ON students.course_id = courses.id;

这里使用了`INNER JOIN`来连接`students`和`courses`表,基于`students.course_id`和`courses.id`的匹配。

#### 跨表更新

假设我们需要更新`students`表中所有选修了“数学”课程的学生,将他们的年龄增加1岁。


UPDATE students
SET age = age + 1
WHERE course_id IN (
    SELECT id FROM courses WHERE course_name = '数学'
);

这里,我们首先通过子查询找到所有课程名称为“数学”的课程ID,然后在`UPDATE`语句中使用这些ID来更新`students`表。

#### 跨表删除

假设我们想要删除所有选修了不再开设的课程的学生记录(假设有一个`is_active`字段在`courses`表中标识课程是否开设)。


DELETE FROM students
WHERE course_id IN (
    SELECT id FROM courses WHERE is_active = 0
);

这里,我们首先通过子查询找到所有`is_active`为0(即不再开设)的课程ID,然后在`DELETE`语句中使用这些ID来删除`students`表中对应的学生记录。

**注意**:在进行跨表删除操作时,请确保你完全理解其影响,因为这将直接删除表中的记录。在实际应用中,通常建议先进行备份或使用事务来确保数据的安全性。