SQL基础10:update单表、多表联合更新||mysql、sqlserver、oracle、db2

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,方便以后自己查找,也给其他小伙伴提供方便吧

你可能感兴趣的:(SQL基础10:update单表、多表联合更新||mysql、sqlserver、oracle、db2)