Oracle 10g 更新操作

红尘浪子 2012-03-06

1.单表更新

语法 :update test set column=value [,column=value]... [where condition]

eg :select * from test

eg: update test set sex=111 译:整个表的sex列更新成111

eg: update test set sex=333 where AAA=7 译:更新test表中某一个值

2.多表更新也叫使用子查询更新

eg:将sal列的值更新为和emp表相同,如果使用常规的update语句,需要先将emp表SAL列的值查出,再使用update语句更新查询后的结果值,这样

做的话需要两步操作,需要做额外的数据IO,而使用子查询的话,可以有效地减少IO而提高执行效率。

update test set sal=(select sal from emp ) --错误提示单行子查询返回多行

update test set sal=(select sal from emp where rownum=1) 译:所有的sal列更新为一个值

update test set sal=(select sal from (select * from (select rownum r,sal from emp) where r=16 )) where AAA=8 译:更新条件为AAA=8的sal的值

上面的更新语句分为三步

1.select * from (select rownum r,sal from emp) where r=16

2.select sal from (select * from (select rownum r,sal from emp) where r=16 )

3.赋值

select * from test where AAA=8

相关推荐

jiong / 0评论 2020-09-17