SqlServer Update的各种使用方式
第一章 SqlServer之Update的各种使用方式
文章目录
- SqlServer Update的各种使用方式
- 前言
- 一、基础知识
- 二、单表更新
- 1.单表单条数据更新
- 2.单表多条数据更新
- 二、多表更新
- 1.多表多条更新
- 2.多表单条更新
- 总结
前言
在平时的使用中常常会遇到一些批量修改或者根据某个表的数据去修改另一个表的数据。
一、基础知识
Update 的执行过程其实是先删除后添加
,
例如: 比如执行这个语句:
update UserInfo set password='asdasdasd' where user_Name='admin'
; 就是把用户名为 'admin'
的用户的密码改为 'asdasdasd'
. 在SQL server执行的机制中,先是把user_Name='admin'
的这条记录删除掉,然后再insert 一条语句,此时的password
是 asdasdasd
,而不是原来的。
一般大家都会认为,update
的工作原理是DBMS
先找到该条记录,就直接在上面修改某个字段的数据。但是这个是不正确的。
用SQL语句表示的话,如果你要执行
update UserInfo set password='asdasdasd' where user_Name='admin'
其实是按以下顺序执行的:第一步:delete from UserInfowhere user_Name='admin'第二部:insert into UserInfo (user_Name,password) values('admin','asdasdasd')
扩展知识:
DBMS:
数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。它可以支持多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作
—-摘抄自百度百科
二、单表更新
1.单表单条数据更新
代码如下(示例):
update UserInfo set password='asdasdasd' where user_Name='admin'
2.单表多条数据更新
代码如下(示例):
update UserInfo set password='asdasdasd' where UserId in(selectuserId from UserInfo where (CreateTime BETWEEN '2007-01-06 0:00:00' AND '2007-01-06 23:59:59')
二、多表更新
1.多表多条更新
代码如下(示例):
UPDATE MedicineInfo_jddj SET DslSku = b.DslSkuFROMdsl.dbo.ProductCheck_Code b,MedicineInfo_jddj nWHEREb.DslSku = n.goodsid andn.goodsid in ('1218739','2202494','2202632','1156636','2202498','90260','88201','89985','84419','56091','74318','89463','32181')
2.多表单条更新
UPDATE MedicineInfo_jddj SET DslSku = '123'FROMdsl.dbo.ProductCheck_Code b,MedicineInfo_jddj nWHEREb.DslSku = n.goodsid andn.goodsid='123'
总结
sqlserver 的Update 语句一定要加 where 条件
,不然后果很严重。where条件尽量用索引列这样能有效提高效率。