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