【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.pswp.cn/news/711918.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711918.shtml
英文地址,請注明出處:http://en.pswp.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…

Python列表操作函數

在Python中,列表(list)是一種可變的數據類型,它包含一系列有序的元素。Python提供了一系列內置的函數和方法來操作列表。以下是一些常用的Python列表操作函數和方法: 列表方法 append(x) 將元素x添加到列表的末尾。 …

文獻速遞:帕金森的疾病分享--多模態機器學習預測帕金森病

文獻速遞:帕金森的疾病分享–多模態機器學習預測帕金森病 Title 題目 Multi-modality machine learning predicting Parkinson’s disease 多模態機器學習預測帕金森病 01 文獻速遞介紹 對于漸進性神經退行性疾病,早期和準確的診斷是有效開發和使…

Linux按鍵輸入實驗-對按鍵驅動進行測試

一. 簡介 前面學習在設備樹文件中創建按鍵的設備節點,并實現對按鍵驅動代碼的編寫,文章地址如下:Linux按鍵輸入實驗-創建按鍵的設備節點-CSDN博客Linux按鍵輸入實驗-按鍵的字符設備驅動代碼框架-CSDN博客Linux按鍵輸入實驗-按鍵的GPIO初始化-CSDN博客 本文對所實現的按鍵驅…

【精品】集合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;硬件設備中的端口 如交換機、路由器中用于鏈接其他…

用stream流將list轉為map

用stream流將list轉為map 1、將list轉為Map<Long, List> 按照spaceId分組&#xff0c;spaceId相同的為一組數據&#xff1a; List<BasEvaluationPriceResultDto> list new ArrayList(); Map<Long, List<BasEvaluationPriceResultDto>> priceResult…

“金三銀四”招聘季,大廠爭招鴻蒙人才

在金三銀四的招聘季中&#xff0c;各大知名互聯網企業紛紛加入了對鴻蒙人才的爭奪戰。近日&#xff0c;包括淘寶、京東、得物等在內的知名APP均宣布啟動鴻蒙星河版原生應用開發計劃。這一舉措不僅彰顯了鴻蒙生態系統的迅猛發展&#xff0c;還催生了人才市場的繁榮景象。據數據顯…

遙感影像處理(ENVI+ChatGPT+python+ GEE)處理高光譜及多光譜遙感數據

遙感技術主要通過衛星和飛機從遠處觀察和測量我們的環境&#xff0c;是理解和監測地球物理、化學和生物系統的基石。ChatGPT是由OpenAI開發的最先進的語言模型&#xff0c;在理解和生成人類語言方面表現出了非凡的能力。本文重點介紹ChatGPT在遙感中的應用&#xff0c;人工智能…

vue3學習 【4】ref和reactive的使用并于ts結合

使用ref聲明一個響應式對象并使用 <script lang"ts" setup> import { ref } from vue; const message ref("HelloWorld") message.value"被修改了啊~~" </script> <template>{{ message }} </template>ref() 接收參數…

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…