image.png

目录:

一、SQLSERVER

二、ORACLE

三、DB2

四、MYSQL

一、SQLSERVER中UPDATE使用方法

我们先看一下SQLSERVER中的UPDATE语法

单表更新

方法1:

update a set a.telephone=b.telephone
from table2 a
inner join table1 b on a.joid_id=b.user_id

多表联合更新

方法2:

update table2
set telephone=a.telephone
from table1 a
WHERE table2.joid_id=a.user_id

下面提供两个案例:

01将SFDB字段中的空字符串更改为NULL值

update HLSDZ_PJJG
set SFDB = null
where SFDB =''
update YWWATER.HLSZPJJG_LJ
set UPDATETIME = getdate()
where POINTCODE = 'HLBM_57' and NF = '2019' AND YF = '10'

01-执行后结果

02更新A表10月POINTNAME字段。

分析:A表中有10月之前的数据,这里只更新10月的数据,以前月份的数据不更新。

关联条件,字段相同的才进行更新

update a set a.POINTNAME=b.POINTNAME
from
(select * from YWWATER.HLSZPJJG_LJ where NF = '2019' AND YF = '10')A
inner join
(SELECT DISTINCT SX,HL,SHI,POINTCODE,POINTNAME,DMMC FROM YWWATER.HLSZPJJG_LJ WHERE POINTCODE IS NOT NULL AND SX IS NOT NULL)b
on a.SX = B.SX AND A.HL = B.HL AND A.SHI = B.SHI AND A.DMMC = B.DMMC

二、ORACLE中UPDATE使用方法

我们先看ORACLE中UPDATE的语法,和sqlserver的语法类

单表更新

方法一:

UPDATE 表名称

SET 字段 1=值 1,字段 2=值 2,...

[WHERE 更新条件(s)]

方法二:

update student
set (sname, sage, sbirthday, saddress) =
(select '李四', 20, to_date('2010-01-01', 'yyyy-mm-dd'), '广州市越秀区' from dual)
where sid = 1

多表更新

方法三:

update 表名称 a
set (字段1,字段2) =
(select POINTCODE,POINTNAME from 表名称B
where a.字段 = B.字段 AND A.字段 = B.字段)---A表和B 表的关联关系
where a.NF = '2019' and A.YF = '10'---更新A 表中的部分内容

举两个例子

01将POINTCODE,POINTNAME字段中的内容变为空值
UPDATE YWWATER.HLSZPJJG_LJ
SET POINTCODE = NULL,POINTNAME = NULL
WHERE NF = '2019' AND YF = '10'

02 更新POINTCODE,POINTNAME字段

分析:更新A表中的字段,并且A表和B 表能关联上的字段才更新

更新A表中的部分数据

update YWWATER.HLSZPJJG_LJ a
set (POINTCODE,POINTNAME) =
(select POINTCODE,POINTNAME from
(SELECT DISTINCT SX,HL,SHI,POINTCODE,POINTNAME,DMMC FROM YWWATER.HLSZPJJG_LJ WHERE POINTCODE IS NOT NULL AND SX IS NOT NULL)B
where a.SX = B.SX AND A.HL = B.HL AND A.SHI = B.SHI AND A.DMMC = B.DMMC)
where a.NF = '2019' and A.YF = '10'

三、DB2中UPDATE使用方法

DB2数据库中UPDATE使用方法和ORACLE中几乎时一样的。

我们先看DB2中UPDATE语法

单表更新

UPDATE A
SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)

多表更新

UPDATE YWWATER.HLSZPJJG_LJ A SET (POINTCODE,POINTNAME)=
(SELECT B.POINTCODE_SJZX,B.POINTNAME_SJZX FROM YWWATER.T_ENV_MANUAL_WATERPOINTINFO_SC B
WHERE A.DMMC=B.POINTNAME AND A.HL=B.WATERNAME
)
WHERE POINTCODE IS NULL

四、MYSQL中UPDATE使用方法

单表更新

UPDATE coursers
SET cname = 'TEST',tno = '99999'
where cno = '3106'

单表更新1

单表更新2

多表更新

UPDATE coursers a JOIN
(select '3105' cno,'82222'tno,'YINGYU' cname) b
ON a.cno = b.cno
SET a.tno=b.tno,a.cname=b.cname
go

多表更新1

多表更新2

案例都是我工作中使用到,UPDATE的使用方法就介绍到这里了,想了解更详细可以百度

后记:因为我经常接触各种数据库,遇见复杂的陌生的函数要折腾很久,各种百度,各种测试,最关键的是我害怕把数据库的数据弄错了……所以啦,要养成数据库备份的习惯

20190709的时候写了这篇文章,工作需要、在sqlserver中更新两个字段,用了2个小时才把那条更新语句写出来。想想主要有两个因素:不熟悉语法,不了解业务关系不知道关联哪几个字段……所以当时写这条语句的时候真的非常累,最后完成本篇文章是在20191124,方便以后自己查找,也给其他小伙伴提供方便吧