Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL连表update操作

MySQL连表update操作

作者头像
半月无霜
发布于 2023-03-03 07:13:06
发布于 2023-03-03 07:13:06
4.7K02
代码可运行
举报
文章被收录于专栏:半月无霜半月无霜
运行总次数:2
代码可运行

MySQL连表update操作

一、介绍

记录一下MySQL连表后进行update的操作,这可以一口气同时改动到多张表的数据,可以取到关联表的数据进行更新。

作用还是比较大的,如下

二、使用

1)建表

分别有以下四张表,分别为

  • 学生表
  • 班级表
  • 学生评分表
  • 班级评分表
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE `tb_student` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `code` varchar(20) NOT NULL COMMENT '学号',
  `name` varchar(20) NOT NULL COMMENT '姓名',
  `class_id` int(11) NOT NULL COMMENT '班级ID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT = '学生表';

CREATE TABLE `tb_student_grade` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `student_id` int(11) NOT NULL COMMENT '学生ID',
  `grade` int(11) NOT NULL COMMENT '评分',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT = '学生评分表';

CREATE TABLE `tb_class` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `class_name` varchar(20) DEFAULT NULL COMMENT '班级名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT = '班级表';

CREATE TABLE `tb_class_grade` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `class_id` int(11) NOT NULL COMMENT '班级ID',
  `grade` int(11) NOT NULL COMMENT '评分',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT = '班级评分表';

模型如下图

2)连表更新

如果班级里张三比较调皮,在班级座位后面睡觉被校长发现了,要把这位学生和所在班级的评分,各扣10分

如果是以前,我可能是写两条update语句的sql,现在的话,可以关联起来这样写,如下


首先我们可以先写一个这样的sql,通过学生名称查询到学生分数,所在班级分数,那么这条sql就长这样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 
	t1.grade as "学生分数",
	t2.grade as "班级分数"
from tb_student t0
join tb_student_grade t1 on t0.id = t1.student_id
join tb_class_grade t2 on t0.class_id = t2.class_id
where t0.`name` = '张三';

那么此时,我们只需要做一点小小的改动,就可以把上述sql改为连表update的了。

  1. select 字段... from 改为update
  2. where条件前写上自己,需要更新的字段

简单两步,改动结果后的sql如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
update tb_student t0
join tb_student_grade t1 on t0.id = t1.student_id
join tb_class_grade t2 on t0.class_id = t2.class_id
set t1.grade = t1.grade - 10,
	t2.grade = t2.grade - 10
where t0.`name` = '张三';

执行完成就可以了,再查询看看效果

三、最后

我是半月,你我一同共勉!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【MySQL】MySQL知识总结
随着,应用程序的功能越来越复杂,数据量越来越大,如何管理这些数据就成了一个 大问题。
半生瓜的blog
2023/05/13
7.5K1
【MySQL】MySQL知识总结
MySQL 基础知识笔记 第02期:库表创建及增删查改
这一节,来一起聊聊 MySQL 的库表创建及增删查改,如果没有实验环境,可以参考上一节内容:CentOS 快速安装 MySQL 8.0。
数据库交流
2022/04/25
1.1K0
MySQL 基础知识笔记 第02期:库表创建及增删查改
一文看懂如何分析MySQL Explain(1/3)
在网上经常看到一些写SQL优化经历的文章,看完文章发现懂的不用看,不懂的看不懂,大家都是都在讲调优经历,但是忽略了如何看懂执行计划,如何调优。本文不讲调优经历,只讲如何看懂执行计划及常用的调优原则,从而可以有针对性的提升我们查询语句的性能。
程序员小强
2019/06/11
1.5K0
【Python全栈100天学习笔记】Day37MySQL详解(sql语句基本操作含索引、视图、存储过程)
我们通常可以将SQL分为三类:DDL(数据定义语言)、DML(数据操作语言)和DCL(数据控制语言)。DDL主要用于创建(create)、删除(drop)、修改(alter)数据库中的对象,比如创建、删除和修改二维表;DML主要负责插入数据(insert)、删除数据(delete)、更新数据(update)和查询(select);DCL通常用于授予权限(grant)和召回权限(revoke)。
天道Vax的时间宝藏
2022/04/02
9880
【Python全栈100天学习笔记】Day37MySQL详解(sql语句基本操作含索引、视图、存储过程)
MySQL 基础知识笔记 第04期:分组查询和聚集函数
这一节内容,来通过一张测试表,进行 MySQL 分组查询和聚集函数的练习。 1 数据准备 建表及数据准备,以便后面 SQL 练习: use yzl; /* 使用yzl这个database */ drop table if exists student_info; /* 如果表student_info存在则删除表student_info */ CREATE TABLE `student_info` ( /* 创建表student_info */ `id` int(11) NOT NULL auto_i
数据库交流
2022/04/25
4550
MySQL 基础知识笔记 第04期:分组查询和聚集函数
MySQL 系列教程之(十五)SQL 面试题精讲
查询每个主播的最大level以及对应的最小gap(注意:不是每个主播的最大level和最小gap)
ruochen
2021/08/17
45.9K0
MySQL 系列教程之(十五)SQL 面试题精讲
学生请假系统设计
需求分析:学生日常请假出入校门,学生向教师请假,教师在手机中提交请假信息,提交后可按请假时间出校门。教师可查看所有学生请假历史,统计分析,同时家长会看到自己孩子的请假记录,及时掌握孩子请假情况。
热心的程序员
2018/09/06
2.9K0
学生请假系统设计
Mysql使用终端操作数据库
create TABLE pet( name VARCHAR(20), owner VARCHAR(20), specise VARCHAR(20), sex CHAR(1), brith DATAE, death DATE );
阮键
2020/04/30
9750
MySQL练习sql脚本(某校学生管理系统版本)
环境下载与安装教程:【https://laoshifu.blog.csdn.net/article/details/118991473】
红目香薰
2022/11/29
6860
MySQL练习sql脚本(某校学生管理系统版本)
mybatis学习之高级映射
根据文章内容撰写摘要总结。
用户1141560
2017/12/26
8710
mybatis学习之高级映射
mysql中exists的用法详解[通俗易懂]
在日常开发中,用mysql进行查询的时候,有一个比较少见的关键词exists,我们今天来学习了解一下这个 exists这个sql关键词的用法,这样在工作中遇到一些特定的业务场景就可以有更加多样化的解决方案
全栈程序员站长
2022/11/01
5.8K0
数据库操作指南:掌握CRUD和高级查询技巧,轻松实现数据操作
这里推荐一篇实用的文章:《TCP 和 UDP 的区别:解析网络传输协议》,作者:【一杯茶Ja】。
Lion 莱恩呀
2024/11/23
2040
数据库操作指南:掌握CRUD和高级查询技巧,轻松实现数据操作
要精通SQL优化?那就学一学explain吧!
在MySQL中,我们知道加索引能提高查询效率,这基本上算是常识了。但是有时候,我们加了索引还是觉得SQL查询效率低下,我想看看有没有使用到索引,扫描了多少行,表的加载顺序等等,怎么查看呢?其实MySQL自带的SQL分析神器Explain执行计划就能完成以上的事情!
java技术爱好者
2021/01/06
6250
头歌MySQL数据库实训答案 有目录[通俗易懂]
数据库部分一条一条的写,可鼠标手动粘贴,除特定命令外未分大小写。 第1关:创建数据库
全栈程序员站长
2022/09/13
9K0
腾讯TDSQL分区表介绍(1/2)
TDSQL集群支持创建集中式实例和分布式实例。在使用分布式实例的时候,可以创建以下几种类型的表:
胖五斤
2022/11/10
3.7K0
MySQL 8.0 如何创建一张规范的表
如果 InnoDB 表没有显式定义主键,则可能会选择唯一索引做为主键,但是唯一索引很可能不是递增的,写入数据时,很可能会导致数据页频繁分裂,从而导致写入效率低和页空间浪费。这也是选择自增 int 类型或者有序 UUID 做为主键的原因。
数据库交流
2022/06/15
4.1K0
MySQL之表的约束
一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY (FK) 标识该字段为该表的外键 NOT NULL 标识该字段不能为空 UNIQUE KEY (UK) 标识该字段的值是唯一的 AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键) DEFAULT 为该字段设置默认值 UNSIGNED 无符号 Z
人生不如戏
2018/04/10
4.9K0
【MySql】表的约束
真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束的本质是通过技术收到逼迫程序员插入正确的数据,反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。约束的最终目标:保证数据的完整性和可预期性所以需要更多的约束。 表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primarykey,auto_increment,unique key 。
平凡的人1
2023/10/15
5240
【MySql】表的约束
02 . Mysql基础操作及增删改查
SQL(Structured Query Language 即结构化查询语言) SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。
iginkgo18
2020/09/27
2K0
查询 MySQL 字段注释的 5 种方法!
很多场景下,我们需要查看 MySQL 中表注释,或者是某张表下所有字段的注释,所以本文就来盘点和对比一下查询注释的几种方式。
磊哥
2022/05/09
5.8K0
查询 MySQL 字段注释的 5 种方法!
相关推荐
【MySQL】MySQL知识总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验