1.2.3 UPDATE语句

UPDATE语句的作用是对表中已经存在的数据进行修改。它可以一次修改一行,也可以修改多行。这条语句的语法格式为:


UPDATE表名

SET列1=表达式1,列2=表达式2……

WHERE条件


UPDATE语句通过SET子句为指定列指定新值,将列值修改为指定的表达式。在SET子句中指定所有需要修改的列。在默认情况下,UPDATE语句不需要WHERE子句,这时UPDATE语句将修改表中的所有行。例如,下面的UPDATE语句将把emp表中所有员工的工资增加10%,奖金增加100元:


SQL>UPDATE emp

SET sal=sal*1.1,comm=nvl(comm,0)+100;


如果通过WHERE子句指定了条件,那么UPDATE语句只修改满足条件的行。例如,如果要为部门10和20中工资高于2000元的员工增加工资和奖金,增加幅度与上一条UPDATE语句相同。相应的UPDATE语句为:


SQL>UPDATE emp

SET sal=sal*1.1,comm=nvl(comm,0)+100;

WHERE deptno=10 OR deptno=20 AND sal>2000;


在UPDATE语句的WHERE子句中,也可以使用子查询。这时的条件并不是一个确定的条件,而是依赖于对另一个表的查询。例如,要对与员工BLAKE同在一个部门的员工增加工资和奖金,增加幅度与上一条UPDATE语句相同。相应的UPDATE语句为:


SQL>UPDATE emp

SET sal=sal*1.1,comm=nvl(comm,0)+100

WHERE deptno=(SELECT deptno FROM emp WHERE ename='BLAKE');