【Sql Server】Update中的From语句,以及常见更新操作方式
创始人
2025-01-16 03:03:39
0

欢迎来到《小5讲堂》,大家好,我是全栈小5。
这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解,
特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!

在这里插入图片描述

目录

  • 前言
  • 常规更新
    • 分组查最大值
    • 编号更新
    • 查询更新
  • 常见更新方式
    • UPDATE 语句
    • 使用子查询更新数据
    • 使用 JOIN 更新数据
    • 使用临时表进行更新
    • 使用事务进行更新
    • 使用触发器进行更新
  • 常见场景
    • 批量修改数据场景
    • 需要注意的事项
  • 文章推荐

前言

最近在做数据修改,有时候太久没写sql语句,突然想通过子查询的方式去批量更新数据的时候,
还是有点不知所措,那就一步一步来吧,也写篇文章梳理和总结下,毕竟也是基本的操作加深印象。
上篇文章已经介绍分组查询方法,这篇文章将通过分析update更新有那些语句和方式方法。

常规更新

基于上篇文章的表数据,先查询同城市同区域同姓名存在等于2条的记录,
并将最大编号的那条记录代理商更新为"张三2",城市区县代理商三者分组查询

分组查最大值

select * from test_name select city_name,area_name,agent_name,max(id) maxId from test_name  group by city_name,area_name,agent_name having count(1)>1 

在这里插入图片描述

编号更新

不管任何时候,进行更新操作,一定更要三思,问问自己加了where条件没有,切勿大意经验之谈

update test_name set agent_name='张三2' where id=2 select * from test_name 

在这里插入图片描述

查询更新

通过子查询方式更新数据,将上面的数据更新还原,进行下面更新操作

update test_name set agent_name='张三_'+convert(varchar(50),t.maxId) from(     select city_name,area_name,agent_name,max(id) maxId     from test_name      group by city_name,area_name,agent_name     having count(1)>1 ) t  where test_name.id=t.maxId  select * from test_name 

在这里插入图片描述

常见更新方式

在 SQL Server 中,更新数据是数据库管理中常见且重要的操作之一。

UPDATE 语句

使用 UPDATE 语句可以直接更新表中的数据。语法如下:
UPDATE table_name
SET column1 = value1, column2 = value2, …
WHERE condition;

这里的 table_name 是你要更新的表名,column1 = value1, column2 = value2, … 是需要更新的列和对应的值,WHERE condition 是更新的条件。

使用子查询更新数据

如前面提到的,可以使用子查询来更新表中的数据,例如将一个表中的列更新为另一个表中的计算结果。

使用 JOIN 更新数据

通过 JOIN 操作,可以根据两个或多个表之间的关系来更新数据。例如,可以使用 INNER JOIN、LEFT JOIN 或其他类型的 JOIN 来更新匹配的数据。

使用临时表进行更新

有时候,可以先将需要更新的数据存储在临时表中,然后再通过 JOIN 或其他方式将其更新回主表。

使用事务进行更新

在更新数据时,尤其是涉及多个表或复杂逻辑时,使用事务可以确保数据的一致性。通过启动事务、提交或回滚事务,可以有效地管理更新操作。

使用触发器进行更新

在某些情况下,可能希望在更新某个表时自动触发另一些操作,这时可以使用触发器来实现。
触发器可以在更新、插入或删除数据时自动执行相关的操作。

无论使用哪种更新数据的方式,都需要谨慎操作,确保更新的数据准确无误。在进行重要的数据更新操作前,务必备份数据以防止意外情况发生。经验之谈,慎之又慎。

常见场景

在 SQL Server 中,批量修改数据是常见的需求之一,特别是在需要同时更新多行记录时。

批量修改数据场景

1.大批量数据更新
当需要更新大量数据时,采用批量更新的方式可以提高效率,减少单独更新每行记录的开销。

2.根据条件批量更新
根据特定条件选择需要更新的数据,可以使用 WHERE 子句来筛选符合条件的记录进行批量更新。

3.使用临时表批量更新
将需要更新的数据存储在临时表中,然后利用临时表与目标表进行 JOIN 更新数据。

4.跨表关联批量更新
在更新数据时,可能需要跨表关联更新数据,可以使用 JOIN 操作或子查询来实现。

需要注意的事项

1.事务处理
在批量更新数据时,尤其是跨表更新或更新涉及到重要数据时,建议使用事务进行处理,以确保数据的一致性并能够回滚到之前的状态。

2.性能优化
在进行批量更新时,要注意数据库性能,避免锁表或对性能造成影响。可以考虑分批次更新数据、创建索引以提升查询效率等方式进行性能优化。

3.备份数据
在进行批量更新操作前,务必备份数据,以防操作失误或更新错误导致数据丢失。

4.避免影响其他操作
在更新大量数据时,可能会占用数据库资源,影响其他操作。建议在低负载时段执行批量更新操作,以减少对其他操作的影响。

5.注意更新条件
确保更新操作的条件准确,避免将不需要更新的数据一并更新。

文章推荐

【Sql server】假设有三个字段a,b,c 以a和b分组,如何查询a和b唯一,但是c不同的记录

【Sql Server】新手一分钟看懂在已有表基础上修改字段默认值和数据类型

【数据库】Sql Server数据迁移,处理自增字段赋值

【数据类型】C#和Sql Server、Mysql、Oracle等常见数据库的数据类型对应关系

总结:温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。

相关内容

热门资讯

智星德州菠萝!德州alphax... 智星德州菠萝!德州alphax辅助(手机德州)详细ai人工智能(有挂攻略)1、这是跨平台的智星德州菠...
德州AI智能辅助机器人!德州辅... 德州AI智能辅助机器人!德州辅助软件(手机德州)详细外 挂(有挂计算);揭秘教程安装方法样式多选,攻...
德州ai辅助有用!德州ai软件... 德州ai辅助有用!德州ai软件可以收费,(手机德州)其实存在有挂,我来分享(有挂详情);实战中需综合...
德州ai机器人!德州之星辅助可... 1、德州ai机器人!德州之星辅助可以用,(德州app)一贯存在有挂,玩家必用(有挂脚本)。2、德州之...
德州ai辅助软件!德州辅助软件... 德州ai辅助软件!德州辅助软件(wpk德州)详细辅助(有挂黑科技)科技教程也叫必备教程,这是一款功能...
德州之星辅助!德州ai辅助器(... 德州之星辅助!德州ai辅助器(德州机器人)详细插件(有挂辅牌器);(需添加指定薇757446909获...
德州之星外挂!线上德州辅助软件... 德州之星外挂!线上德州辅助软件有用,(来玩德州app)真是真的有挂,一分钟了解(有挂攻略);玩家必备...
德州之星有辅助挂!德州之星有a... 1、德州之星有辅助挂!德州之星有app辅助(智星德州)详细ai机器人(有挂方法);详细教程。2、德州...
智星德州菠萝外挂!德州ai辅助... 智星德州菠萝外挂!德州ai辅助神器燃油(手机德州)详细辅助器(有挂插件)1、这是跨平台的智星德州菠萝...
智星德州菠萝外挂!德州ai在哪... 您好,智星德州菠萝外挂这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在...