MySQL三表关联修改实践分享

专注于为中小企业提供成都网站设计、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业安康免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
在数据库操作中,我们经常会遇到需要同时修改多个表的数据的情况,这时,我们可以使用MySQL的多表关联修改功能来实现这一需求,本文将通过一个小例子来分享如何在MySQL中进行三表关联修改。
1. 创建示例表
我们需要创建三个示例表,分别为students、courses和scores,这三个表的结构如下:
students(学生表):
| id | name |
| 1 | 小明 |
| 2 | 小红 |
| 3 | 小刚 |
courses(课程表):
| id | course_name |
| 1 | 语文 |
| 2 | 数学 |
| 3 | 英语 |
scores(成绩表):
| id | student_id | course_id | score |
| 1 | 1 | 1 | 90 |
| 2 | 1 | 2 | 80 |
| 3 | 1 | 3 | 85 |
| 4 | 2 | 1 | 95 |
| 5 | 2 | 2 | 88 |
| 6 | 2 | 3 | 92 |
| 7 | 3 | 1 | 75 |
| 8 | 3 | 2 | 78 |
| 9 | 3 | 3 | 80 |
2. 关联修改需求
假设我们需要将所有学生的英语成绩加5分,可以通过以下步骤实现:
2.1 查询需要修改的数据
我们需要找到所有学生的英语成绩记录,可以使用以下SQL语句查询:
SELECT s.name, sc.score FROM students s JOIN scores sc ON s.id = sc.student_id JOIN courses c ON sc.course_id = c.id WHERE c.course_name = '英语';
查询结果如下:
| name | score |
| 小明 | 85 |
| 小红 | 92 |
| 小刚 | 80 |
2.2 更新数据
接下来,我们可以使用UPDATE语句结合JOIN子句来更新数据:
UPDATE scores sc JOIN students s ON s.id = sc.student_id JOIN courses c ON sc.course_id = c.id SET sc.score = sc.score + 5 WHERE c.course_name = '英语';
执行上述SQL语句后,scores表中的英语成绩将会增加5分。
3. 验证修改结果
我们可以再次查询所有学生的英语成绩,以验证修改是否成功:
SELECT s.name, sc.score FROM students s JOIN scores sc ON s.id = sc.student_id JOIN courses c ON sc.course_id = c.id WHERE c.course_name = '英语';
查询结果如下:
| name | score |
| 小明 | 90 |
| 小红 | 97 |
| 小刚 | 85 |
可以看到,所有学生的英语成绩都已经成功增加了5分。