目录:
一、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'
- 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'
多表更新
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
案例都是我工作中使用到,UPDATE的使用方法就介绍到这里了,想了解更详细可以百度
后记:因为我经常接触各种数据库,遇见复杂的陌生的函数要折腾很久,各种百度,各种测试,最关键的是我害怕把数据库的数据弄错了……所以啦,要养成数据库备份的习惯
20190709的时候写了这篇文章,工作需要、在sqlserver中更新两个字段,用了2个小时才把那条更新语句写出来。想想主要有两个因素:不熟悉语法,不了解业务关系不知道关联哪几个字段……所以当时写这条语句的时候真的非常累,最后完成本篇文章是在20191124,方便以后自己查找,也给其他小伙伴提供方便吧