【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) maxIdfrom test_name group by city_name,area_name,agent_namehaving count(1)>1
) t 
where test_name.id=t.maxIdselect * 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等常见数据库的数据类型对应关系

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker技术概论(4):Docker CLI 基本用法解析

Docker技术概论(4) Docker CLI 基本用法解析 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:http…

Python实现PPT演示文稿中视频的添加、替换及提取

无论是在教室、会议室还是虚拟会议中,PowerPoint 演示文稿都已成为一种无处不在的工具,用于提供具有影响力的可视化内容。PowerPoint 提供了一系列增强演示的功能,在其中加入视频的功能可以大大提升整体体验。视频可以传达复杂的概念、演示产…

ArkTS中的路由跳转和HTTP数据请求

路由跳转 步骤1:找到箭头所指的文件,在其中添加已创建的页面 步骤2:导包 步骤3: HTTP数据请求 步骤1:导包 > import http from ohos.net.http; 步骤2:(如果需要在页面加载前请求&#xf…

TcpServer服务器管理模块(模块十)

目录 类功能 类定义 类实现 编译测试 server.cc gdb测试断点 忽略SIGPIPE信号 类功能 类定义 // TcpServer服务器管理模块(即全部模块的整合) class TcpServer { private:uint64_t _next_id; // 这是一个自动增长的连接IDint _port;i…

Linux学习-C语言-运算符

目录 算术运算符: - * /:不能除0 %:不能对浮点数操作 :自增与运算符 i:先用再加 i:先加再用 --:自减运算符 常量,表达式不可以,--,变量可以 赋值运算符 三目运算符 逗号表达式 size…

alpine创建lnmp环境alpine安装nginx+php5.6+mysql

前言 制作lnmp环境,你可以在alpine基础镜像中安装相关的服务,也可以直接使用Dockerfile创建自己需要的环境镜像。 注意:提前确认自己的alpine版本,本次创建基于alpine3.6进行创建,官方在一些版本中删除了php5 1、拉取…

JS正则02——js正则表达式中常用的方法、常见修饰符的使用详解以及各种方法使用情况示例

JS正则02——js正则表达式中常用的方法、常见修饰符的使用详解以及各种方法使用情况示例 1. 前言1.1 简介1.2 js正则特殊字符即使用示例 2. 创建正则表达式的方式2.1 两种创建正则表达式的方式2.2 关于修饰符 3. 正则表达式中常用的方法3.1 test() 方法——正则表达式对象的方法…

Vue之监测数据的原理(对象)

大家有没有想过,为什么vue可以监测到数据发生改变?其实底层借助了Object.defineProperty,底层有一个Observer的构造函数 让我为大家简单的介绍一下吧! 我用对象为大家演示一下 const vm new Vue({el: "#app",data: {ob…

文献速递:帕金森的疾病分享--多模态机器学习预测帕金森病

文献速递:帕金森的疾病分享–多模态机器学习预测帕金森病 Title 题目 Multi-modality machine learning predicting Parkinson’s disease 多模态机器学习预测帕金森病 01 文献速递介绍 对于渐进性神经退行性疾病,早期和准确的诊断是有效开发和使…

【精品】集合list去重

示例一&#xff1a;对于简单类型&#xff0c;比如String public static void main(String[] args) {List<String> list new ArrayList< >();list.add("aaa");list.add("bbb");list.add("bbb");list.add("ccc");list.add(…

网络工程师必备的网络端口大全(建议收藏)

端口是一种数字标识&#xff0c;用于在计算机网络中进行通信&#xff0c;你完全可以把端口简单的理解为是计算机和外界通讯交流的出口。但在网络技术中&#xff0c;端口一般有两种含义&#xff1a; &#xff08;1&#xff09;硬件设备中的端口 如交换机、路由器中用于链接其他…

“金三银四”招聘季,大厂争招鸿蒙人才

在金三银四的招聘季中&#xff0c;各大知名互联网企业纷纷加入了对鸿蒙人才的争夺战。近日&#xff0c;包括淘宝、京东、得物等在内的知名APP均宣布启动鸿蒙星河版原生应用开发计划。这一举措不仅彰显了鸿蒙生态系统的迅猛发展&#xff0c;还催生了人才市场的繁荣景象。据数据显…

遥感影像处理(ENVI+ChatGPT+python+ GEE)处理高光谱及多光谱遥感数据

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用&#xff0c;人工智能…

Vue——携带参数跳转路由

Vue学习之——跳转路由 前情回顾 当我们进行点击修改时&#xff0c;会进行跳转到修改页面&#xff0c;为了完成回显数据&#xff08;根据对应id查找&#xff09;&#xff0c;我们需要携带对应选择中的id跳转到修改页面&#xff0c;让其进行查找回显 学习useRoute和useRoute…

webstorm2023.3.4安装与破解

WebStorm安装步骤 打开JetBrains官方网站&#xff08;https://www.jetbrains.com/webstorm/&#xff09; 运行.exe 选择安装路径 第一个意思是是否创建桌面快捷方式&#xff0c;可根据需要选择&#xff1b;第二个.js .css .html勾选后之后js css html文件默认会用webstor…

AI Agent

目录 一、什么是Agent 二、什么是MetaGPT【多智能体框架介绍】 三、MetaGPT的背景 一、什么是Agent 智能体 LLM观察思考行动记忆 Agent&#xff08;智能体&#xff09; 一个设置了一些目标或任务&#xff0c;可以迭代运行的大型语言模型。这与大型语言模型&#xff08;LLM&am…

985机械研一转码,java还是c++?

985机械研一转码&#xff0c;java还是c&#xff1f; 在开始前我分享下我的经历&#xff0c;我刚入行时遇到一个好公司和师父&#xff0c;给了我机会&#xff0c;一年时间从3k薪资涨到18k的&#xff0c; 我师父给了一些 电气工程师学习方法和资料&#xff0c;让我不断提升自己&…

【OpenGL的着色器03】内置变量(gl_Position等)

目录 一、说明 二、着色器的变量 2.1 着色器变量 2.2 着色器内置变量 三、最常见内置变量使用范例 3.1 常见着色器变量 3.2 示例1&#xff1a; gl_PointSize 3.3 示例2&#xff1a;gl_Position 3.4 gl_FragColor 3.5 渲染点片元坐标gl_PointCoord 3.6 gl_PointCoo…

【PyTorch][chapter 20][李宏毅深度学习]【无监督学习][ GAN]【实战】

前言 本篇主要是结合手写数字例子,结合PyTorch 介绍一下Gan 实战 第一轮训练效果 第20轮训练效果,已经可以生成数字了 68 轮 目录&#xff1a; 谷歌云服务器&#xff08;Google Colab&#xff09; 整体训练流程 Python 代码 一 谷歌云服务器&#xff08;Google Colab&…

Open CASCADE学习|曲线曲面连续性

1、曲线的连续性 曲线的连续性是三维建模、动画设计等领域中非常重要的一个概念&#xff0c;它涉及到曲线在不同点之间的连接方式和光滑程度。下面将详细介绍曲线的连续性&#xff0c;包括C连续性和G连续性。 1.1C连续性&#xff08;参数连续性&#xff09; C连续性是指曲线…