MySQL学习笔记(九)多表更新

Mysql多表查询,多表插入和多表更新 /*************************************by Jiangong SUN*****************************************************/ 多表查询: CREATE TABLE IF NOT EXISTS contact( contact_id int(11) NOT NULL AUTO_INCREMENT, 阅读详情

1. 将查询结果写入数据表

INSET[INTO] tbl_name [(col_name,...)] SELECT ...

示例:

//创建保存商品种类的数据表tdb_goods_cates

CREATE TABLE IF NOT EXISTS tdb_goods_cates(

                               cate_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

                               cate_name VARCHAR(40) NOT NULL);

//将数据表tdb_goods中的商品按种类分组,并将分组结果保存在表tdb_goods_cates

INSERT INTO  tdb_goods_cates(cate_name) SELECT  goods_cate FROM  tdb_goods GROUP BY goods_cate;

//查看数据表tdb_goods_cates的记录

SELECT * FROM  tdb_goods_cates;

2. 参照分类表tdb_goods_cates更新商品表tdb_goods,主要更新其中的goods_cate字段

参考点:

多表更新

UPDATE table_references SET col_name1 = {expr | DEFAULT} [,col_name = {expr2 | DEFAULT}] ... [WHERE where_condition]


//将参照分类表tdb_goods_cates更新商品表tdb_goods的语句如下

UPDATE tdb_goods INNER JOIN tdb_goods_cates ON goods_cate = cate_name SET goods_cate = cate_id;

//显示商品表的记录

SELECT * FROM tdb_goods;

3.创建数据表同时将查询结果写入到数据表中

CREATE TABLE[IF NOT EXISTS] tbl_name [(create_definition,...)] select_statement。

因此,一步实现将商品表tdb_goods中的品牌brand_name进行分组,并且保存到新创建的品牌表中tdb_goods_brands

CREATE TABLE tdb_goods_brands(

                           brand_idSMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

                           brand_name VARCHAR(40) NOT NULL

                           ) SELECT brand_name FROM tdb_goods GROUP BY brand_name;

//显示品牌表的记录

SELECT * FROM tdb_goods_brands;

//再将商品表中的品牌字段更新为品牌表中的索引值

UPDATE tdb_goods INNER JOIN tdb_goods_brands ON tdb_goods.brand_name =tdb_goods_brands.brand_name SET tdb_goods.brand_name = brand_id;

注意:上述也可以通过起别名来实现,如下所示

UPDATE tdb_goods AS g INNER JOIN tdb_goods_brands AS b ON g.brand_name =b.brand_name SET g.brand_name = b.brand_id;

//再次将商品表中的goods_cate和brand_name的列名和定义修改为cate_id和brand_id

ALTER TABLE tdb_goods CHANGE goods_cate cate_id SMALLINT UNSIGNED NOT NULL,CHANGE brand_name brand_id SMALLINT UNSIGNED NOT NULL;

//在种类表和品牌表中添加记录

INSERT tdb_goods_cates(cate_name) VALUES('路由器'),('交换机'),('网卡');

 
INSERT tdb_goods_brands(brand_name) VALUES('海尔'),('清华同方'),('神舟');


//在商品表中添加记录,因为种类表中没有12,因此有小错误,但是语法不会出错。

 INSERT tdb_goods(goods_name,cate_id,brand_id,goods_price) VALUES(' LaserJet Pro P1606dn 黑白激光打印机','12','4','1849');


4. FROM子句中的查询

语法结构:SELECT... FROM (subquery) [AS] name;

说明:名称为必选项,且子查询的列名称必须唯一

5.连接:

MySQL在SELECT语句、多表更新、多表删除语句中支持JOIN操作。

语法结构:

table_references {[INNER | CROSS] JOIN | {LEFT | RIGHT} [OUTER] JOIN} table_references ON conditional_expr

6. 数据表参照:

table_references tbl_name [[AS]alias] | table_subquery [AS] alias;

数据表可使用tbl_name AS alias_name或tbl_name alias_name赋予别名。table_subquery可做为子查询使用在FROM子句中,这样的子查询必须为其赋予别名。

7. 连接类型

INNER JOIN为内连接,在MySQL中,JOIN、CROSS JOIN 和 INNER JOIN是等价的。

LEFT[OUTER] JOIN为左外连接,RIGHT[OUTER] JOIN为右外连接。

左连接是以左表为准,即左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录。右表中不足的地方均为NULL。右连接与左连接恰好相反

8. 连接条件

使用ON关键字来设定连接条件,也可以使用WHERE来代替。通常使用ON关键字来设定连接条件,使用WHERE关键字进行结果集记录的过滤。

SELECT goods_id,goods_name,cate_name FROM tdb_goods LEFT JOIN tdb_goods_cates ON tdb_goods.cate_id = tdb_goods_cates.cate_id;

SELECT goods_id,goods_name,cate_name FROM tdb_goods RIGHT JOIN tdb_goods_cates ON tdb_goods.cate_id = tdb_goods_cates.cate_id;

多表更新update 多表根据条件进行更新操作 阅读详情

相关推荐

【新手流程】1小时解决Anaconda+Cuda+Cudnn+Pytorch+Pycharm深度学习环境配置

一小时速通Anaconda+Cuda+Cudnn+Pytorch+Pycharm环境配置

m0_57190453的博客 4086

复杂查询

复杂查询Subqueries(子查询)The IN Operator(子查询返回的是一些值的集合)Subqueries VS JoinsThe ALL Keyword(大于子查询的全部结果)The ANY Keyword(大于子查询的某个结果)Correlated Subqueries(相关子查询:引用了外部查询的表,不跨越其他的表数据,可以用于选出表内各自的数据)The EXISTS OperatorSubqueries in the SELECT Clause(select语句里面使用子查询)Subqu

studyeglish的博客 1065

CANoe数据回放实战:如何用Replay Block精准复现实车故障(附ECU数据处理技巧)

本文深入探讨了利用CANoe的Replay Block功能进行数据回放,以精准复现实车偶发性故障的实战方法。文章重点解析了从原始OBD日志中移除目标ECU数据、转换报文方向等核心数据处理技巧,旨在帮助工程师重构真实的网络测试环境,从而高效定位并解决复杂的ECU问题。

nnn11的博客 496

DB2多表操作和子查询优化+代码详解

上述查询语句中,内部查询先查询出salary大于50000的id,然后外部查询使用这个结果作为条件查询table1中的记录。上述查询语句会返回table1和table2中id字段相同的记录,并且依次返回id、name和salary字段的信息。上述查询语句使用EXISTS代替IN查询,只返回是否存在记录的信息,而不需要返回查询出来的所有记录。上述查询语句会返回table1中的所有记录以及在table2中找到的匹配记录。上述查询语句会返回table2中的所有记录以及在table1中找到的匹配记录。

wgq2020的博客 1645

基于STM32的智能衣柜系统开发实战(附完整源码与硬件设计)

本文详细介绍了基于STM32的智能衣柜系统开发实战,包括硬件设计、软件架构和云端功能实现。系统具备实时温湿度监控、自动加热除湿、紫外线杀菌等核心功能,通过STM32F103C8T6主控芯片和ESP8266无线模块实现智能控制。附完整源码与硬件设计,适合科技爱好者和开发者参考。

peach的博客 781

前端监控性能指标

文章目录前端监控性能指标性能指标阶段性指标关键性能指标小程序W3C Level 1兼容性常规用法注意事项1、计算HTML文档请求使用 Nav Timing2、计算静态资源使用 getEntriesByType('resource') 代替 getEntries()3、secureConnectionStart 问题4、跨域资源设置响应头 Timing-Allow-Origin5、注意属性值为 0 ...

foolbird 1347

Mysql5.7以上版本sql语句 使用group by新特性报错

报错: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'dw_smartbuffet.d.id' which is ...

jinchunzhao的博客 1198

抖音小游戏(IAA)巨量引擎投放指南

摘要:本文详细介绍了在巨量引擎平台投放小游戏广告的完整流程,包括五个关键步骤:1)添加小游戏资产,填写ID等信息并等待审核;2)添加事件管理,配置激活和关键行为事件;3)通过橙子建站创建落地页,设置跳转链接;4)新建广告项目,选择小程序推广目标;5)完成广告创建。

分享前端工程化、AI 应用、Agent 开发与大模型实践! 4485

oracle pq distribute,详解Oracle hints PQ_DISTRIBUTE

PQ_DISTRIBUTE是并行的hints中稍微复杂一点的一个下面就这个hints做以下说明:1.使用格式/+ PQ_DISTRIBUTE(tablespec outer_distribution inner_distribution )/tablespec:表名outer_distribution:外表如何分割inner_distribution:内表如何分割2.选项说明(1)HASH, HA...

weixin_35725862的博客 663

RT-Thread 5.1.0 实战:手把手教你用CubeMX和RT-Studio创建第一个工程(附常见编译错误修复)

本文详细介绍了如何使用STM32CubeMX和RT-Thread Studio 5.1.0创建第一个RT-Thread工程,包括开发环境准备、CubeMX配置、工程整合及常见编译错误修复。通过实战指南,帮助开发者快速上手RT-Thread 5.1.0,解决开发过程中的典型问题,提升嵌入式开发效率。

weixin_29165465的博客 285

普通人也能看懂的Transformer源代码解释(PyTorch)

Transformer源代码解释之PyTorch篇 章节 词嵌入 位置编码 多头注意力 搭建Transformer 在这里插入图片描述 词嵌入 Transformer本质上是一种Encoder,以翻译任务为例,原始数据集是以两种语言组成一行的,在应用时,应是Encoder输入源语言序列,Decoder里面输入需要被转换的语言序列(训练时)。一个文本常有许多序列组成,常见操作为将序列进行一些预处理(如词切分等)变成列表,一个序列的列表的元素通常为词表中不可切分的最小词,整个文本就是一个大列表,元素为一个一

qq_50974223的博客 4167

Mysql update多表联合更新

下面我建两个表,并执行一系列sql语句,仔细观察sql执行后表中数据的变化,很容易就能理解多表联合更新的用法student表                                                                         class表     1. 执行 UPDATE student s , class c SET s.class_name='tes...

慢工出细活 31万+

基于Simulink的四足机器人关节力矩优化仿真建模示例

高自由度:每个腿至少有3个自由度(DOF),增加了控制的复杂性。非线性动力学:涉及多体系统的相互作用,包括接触力、摩擦力等。能量消耗:减少不必要的能量消耗是提升续航能力和效率的关键。可以是最小化能量消耗或最大化稳定性等。matlab深色版本% 示例代码通过本指南,我们介绍了如何基于Simulink搭建一个四足机器人的关节力矩优化模型,并进行了仿真以验证其基本功能。

amy_mhd的博客 171

MySQL UPDATE多表关联更新

MySQL 可以基于多表查询更新数据。对于多表的 UPDATE 操作需要慎重,建议在更新前,先使用 SELECT 语句查询验证更新的数据与自己期望的是否一致。 下面我们建两张表,一张表为 product 表,用来存放产品信息,其中有产品价格字段 price;另外一张表是 product_price 表。现要将 product_price 表中的价格字段 price 更新为 product 表中价格字段 price 的 80%。 操作前先分别查看两张表的数据,SQL 语句和运行结果如下: mysql&gt

一起coding,一起嗨。 2万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MySQL 多表查询

此为MySQL专栏文章之一,讲解MySQL多表查询。多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。

Java 技术专栏,从入门到精通,熟悉企业级开发 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

22、UPDATE多表关联更新

MySQL 可以基于多表查询更新数据。对于多表的 UPDATE 操作需要慎重,建议在更新前,先使用 SELECT 语句查询验证更新的数据与自己期望的是否一致。 下面我们建两张表,一张表为 product 表,用来存放产品信息,其中有产品价格字段 price;另外一张表是 product_price 表。现要将 product_price 表中的价格字段 price 更新为 product 表中价格字段 price 的 80%。 操作前先分别查看两张表的数据,SQL 语句和运行结果如下: mysql>

you can you up up up的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MySQL 多表关联更新及删除

一、      多表关联更新 问题描述:现有tdb_goods表(含有具体信息)和tdb_goods_cates表(没有具体信息),需要查询tdb_goods表的所有记录,并且按"类别"分组,且将分组结果写入到tdb_goods_cates数据表。然后通过tdb_goods_cates数据表来更新tdb_goods表 ² 查询tdb_goods表的所有记录,并且按"类别"分组   SELEC

谁肯落幕年华的博客 1万+

mysql update 多表更新_MySQL UPDATE多表关联更新

MySQL 可以基于多表查询更新数据。对于多表的 UPDATE 操作需要慎重,建议在更新前,先使用 SELECT 语句查询验证更新的数据与自己期望的是否一致。下面我们建两张表,一张表为 product 表,用来存放产品信息,其中有产品价格字段 price;另外一张表是 product_price 表。现要将 product_price 表中的价格字段 price 更新为 product 表中价格字...

weixin_33961553的博客 1万+

mysql单表更新及多表更新

单表更新 多表更新 update `table1` a,`wms1.0_tablename` b set a.grouping=b.grouping,a.size=b.size,a.description=b.description where a.catalog=b.catalog and a.`schema`=b.`schema` and a.name=b.name

langcai1981的专栏 1万+

mysql 关联更新_MySQL UPDATE多表关联更新

MySQL 可以基于多表查询更新数据。对于多表的 UPDATE 操作需要慎重,建议在更新前,先使用 SELECT 语句查询验证更新的数据与自己期望的是否一致。下面我们建两张表,一张表为 product 表,用来存放产品信息,其中有产品价格字段 price;另外一张表是 product_price 表。现要将 product_price 表中的价格字段 price 更新为 product 表中价格字...

weixin_31990755的博客 1万+

Mysql 多表联合更新

MySQL 可以基于多表查询更新数据。对于多表的 UPDATE 操作需要慎重,建议在更新前,先使用 SELECT 语句查询验证更新的数据与自己期望的是否一致。 下面我们建两张表,一张表为 product 表,用来存放产品信息,其中有产品价格字段 price;另外一张表是 product_price 表。现要将 product_price 表中的价格字段 price 更新为 product 表中价...

darling331的博客 1万+

mysql 两表联合更新_Mysql update多表联合更新的方法小结

下面我建两个表,并执行一系列sql语句,仔细观察sql执行后表中数据的变化,很容易就能理解多表联合更新的用法student表 class表1. 执行 UPDATE student s , class c SET s.class_name='test00',c.stu_name='test00' WHERE s.class_id = c.idstudent表 class表2. 执行 UPDATE s...

weixin_36289211的博客 3656

Mysql多表关联更新

日常的开发中一般都是写的单表update语句,很少写多表关联的update。 在MySQL中我们有几种方法可以做到多表关联更新: 在两张表之间做关联,可以更新关联的多张表 update biao1,表2 set 表1.列名=表2.列名 --外键或关联字段 where 更新条件;--例如:表1.列名=表2.列名,或字段aa>1等等 通过 INNER JOIN,可以更新关联的多张表 update 表1 inner join 表2 on 表1.列名=表2.列名 --外表链接 ID se

qingxikeren的专栏 1万+
上一篇: MySQL学习笔记(八)子查询
下一篇: MySQL学习笔记(十)内外连接及多表连接
mengrennwpu
博客等级 码龄15年 262粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mengrennwpu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值