【Sql Server】Update中的From语句,以及常见更新操作方式

欢迎来到《小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等常见数据库的数据类型对应关系

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/421938.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

翻译论文:Beating Floating Point at its Own Game: Posit Arithmetic(一)

仅作记录学习使用,侵删 原文Beating Floating Point at its Own Game: Posit Arithmetic 参考翻译Posit: 替换IEE754的新方式 | SIGARCH 摘要 IEEE标准754浮点数(浮点数)的直接接点替换 Posit的优势 不需要区间算术或可变大小操作数 如…

Freesia 项目引用的依赖

UML图 项目总依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.0</version> </parent> <groupId>com.freesia</groupId> <artifa…

Java ElasticSearch面试题

Java ES-ElasticSearch面试题 前言1、ElasticSearch是什么&#xff1f;2. 说说你们公司ES的集群架构&#xff0c;索引数据大小&#xff0c;分片有多少 &#xff1f;3. ES的倒排索引是什么&#xff1f;4. ES是如何实现 master 选举的?5. 描述一下 ES索引文档的过程&#xff1a;…

【Kubernetes】k8s中容器之间、pod之间如何进行网络通信?

目录 PodKubernetes 网络模型同一Pod上的容器之间进行通信同一Node上的不同Pod之间进行通信不同Node上的Pod之间进行通信Service参考 Pod 首先来回顾一下Pod&#xff1a; Pod 是用于构建应用程序的最小可部署对象。单个 Pod 代表集群中正在运行的工作负载&#xff0c;并封装一…

mybatisPlus中 Mapper层以及Service层的方法 整理分类 以及代码实操

MyBatis-Plus是一个基于MyBatis的增强工具&#xff0c;旨在简化开发、提高效率。它提供了通用的mapper和service&#xff0c;可以在不编写任何SQL语句的情况下&#xff0c;快速实现对单表的CRUD、批量、逻辑删除、分页等操作。 功能代码测试前提&#xff1a; 需要对mybatisPl…

git介绍4.2

git(版本控制工具) 一、git 介绍 1、git是目前世界上最先进的分布式版本控制系统&#xff0c;可以有效&#xff0c;高速的处理从小到大的项目版本管理。 2、git是linux torvalds 为了帮助管理linux内核开发二开发的一个开放源码的版本控制软件。 3、git作用&#xff1a;更好…

Kubernetes(k8s第二部分)

资源清单相当于剧本 什么是资源&#xff1a; k8s中所有的内容都抽象为资源&#xff0c;资源实例化后&#xff0c;叫做对象。 1.K8S中的资源 集群资源分类 名称空间级别&#xff1a; kubeadm k8s kube-system kubectl get pod -n default 工作负载型资源&#xff0c;&a…

光栅化算法

多数计算机图形图像&#xff0c;是通过光栅显像显示给用户的&#xff0c;这种系统将图像作为像素阵列进行显示&#xff0c;像素&#xff08;pixel&#xff09;即图像元素&#xff08;picture element&#xff09;的简称。这些像素采用RGB颜色空间。本文讨论光栅显像的基本原理&…

基于ceph-deploy部署Ceph 集群

Ceph分布式存储一、存储基础1、单机存储设备1.1 单机存储的问题 2、分布式存储(软件定义的存储SDS)2.1 分布式存储的类型 二、Ceph简介1、Ceph优势2、Ceph架构3、Ceph 核心组件4、OSD 存储后端5、Ceph 数据的存储过程6、Ceph 版本发行生命周期 三、Ceph 集群部署1、 基于 ceph-…

【软考】数据结构之队列和栈

目录 1.例题一1.1题目1.2 题目截图1.3 题目分析 1.例题一 1.1题目 输出受限的双端队列是指元素可以从队列的两端输入&#xff0c;但只能从队列的一端输出&#xff0c;如下图所示&#xff0c;若有e1&#xff0c;e2&#xff0c;e3&#xff0c;e4依次进入输出受限的双端队列&…

基于JAVA的生鲜超市销售系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 商品档案模块2.2 商品进货模块2.3 商品销售模块2.4 供应商模块2.5 活动管理模块2.6 消息通知模块 三、系统展示四、核心代码4.1 查询商品4.2 商品入库4.3 商品出库4.4 查询商品类型4.5 查询店铺活动 五、免责说明 一、摘…

137.乐理基础-协和音程、不协和音程

内容参考于&#xff1a; 三分钟音乐社 上一个内容&#xff1a;136.旋律音程、和声音程、自然音程、变化音程 上一个内容里练习的答案&#xff1a; 所有音程都可以分成协和音程与不协和音程两大类 协和音程又分三个小类&#xff1a; 第一个小类叫极完全协和音程&#xff0c;就…

Vue Html中插入本地视频(Video 标签)

在 Vue 中插入本地视频可以通过使用标签来实现。你可以将视频文件放在你的项目中的合适位置&#xff08;比如assets文件夹&#xff09;&#xff0c;然后在 Vue 组件中引用这个视频文件。html同理 首先&#xff0c;在你的 Vue 项目中的assets文件夹下放入你的视频文件&#xff…

十四、 修改报名名单

描述 GG Bond和牛妹报名了牛客运动会的双人项目&#xff0c;但是由于比赛前一天牛妹身体不适&#xff0c;不能参加第二天的运动&#xff0c;于是想让牛可乐代替自己。 请创建一个依次包含字符串Niuniu和Niumei的元组entry_form&#xff0c;并直接输出整个元组。 然后尝试使用…

MyBatis的补充用法

说明&#xff1a;之前介绍过MyBatis的用法&#xff0c;像 用注解和Mapper.xml操作数据库、在Mapper.xml里写动态SQL。最近在一次用MyBatis批量更新数据库对象的场景中&#xff0c;意识到对MyBatis的一些标签用法不太熟悉&#xff0c;所以去 MyBatis官网 看了一些文档&#xff0…

综合交易模型----可转债双低策略自动轮动实盘,提供源代码

原理 量化研究---可转债双低策略原理 文章链接 综合交易模型----可转债双低策略自动轮动实盘&#xff0c;提供源代码 (qq.com) 就是按照值来轮动&#xff0c;轮动规则 规则 "策略轮动设置":"策略轮动设置************************,轮动都按排名来", &…

界面控件Telerik UI for ASP. NET Core教程 - 如何为网格添加上下文菜单?

Telerik UI for ASP.NET Core是用于跨平台响应式Web和云开发的最完整的UI工具集&#xff0c;拥有超过60个由Kendo UI支持的ASP.NET核心组件。它的响应式和自适应的HTML5网格&#xff0c;提供从过滤、排序数据到分页和分层数据分组等100多项高级功能。 上下文菜单允许开发者为应…

web服务器nginx下载及在win11的安装

一.背景 还是为了公司安排的师带徒任务。 操作系统版本&#xff1a;win11 家庭版 mginx版本&#xff1a;1.24.0 二.nginx版本选择与下载 我之前也写过下载nginx下载_ngnix stable 下载-CSDN博客 不想看寻找过程的&#xff0c;直接点这里去下载https://nginx.org/download…

好的测试数据管理,到底要怎么做?

你的组织是否实施了测试数据管理&#xff1f;如果你的组织处理关键或敏感的业务数据&#xff0c;测试数据管理肯定会让组织受益。与测试数据相关的问题占所有软件缺陷的 15%&#xff0c;这一事实强调了测试数据的重要性。本文将准确讨论测试数据经理职责、测试数据经理需要什么…

仿牛客网项目---帖子详情功能的实现

这篇文章主要讲讲帖子详情功能。其实帖子详情功能简单来说就是你点进去可以看到文章&#xff0c;这就叫帖子详情功能。那接下来我讲讲我的这个项目是如何实现这个功能的。 首先写DAO层。 Mapper public interface DiscussPostMapper {List<DiscussPost> selectDiscussPo…