十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
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分。