SQL 更新记录,你想更新一个表的部分记录或者全部记录。例如,你可能希望为部门编号为 20 的员工统一加薪 10%。下面的结果集显示了那个部门全部员工的 DEPTNO
、ENAME
和 SAL
。
SQL 更新记录 问题描述
你想更新一个表的部分记录或者全部记录。例如,你可能希望为部门编号为 20 的员工统一加薪 10%。下面的结果集显示了那个部门全部员工的 DEPTNO
、ENAME
和 SAL
。
select deptno,ename,sal
from emp
where deptno = 20
order by 1,3
DEPTNO ENAME SAL
------ ---------- ----------
20 SMITH 800
20 ADAMS 1100
20 JONES 2975
20 SCOTT 3000
20 FORD 3000
你希望把所有 SAL
值都提高 10%。
SQL 更新记录 解决方案
使用 UPDATE 语句更新已有数据。例如:
1 update emp
2 set sal = sal*1.10
3 where deptno = 20
SQL 更新记录 扩展知识
使用 UPDATE
语句和 WHERE
子句来指定哪些行将被更新。如果省略 WHERE
子句,那么全部行都会被更新。上述解决方案里的表达式 SAL*1.10
返回增加 10% 后的工资。
在大规模数据更新之前,你可能希望先预览结果。可以通过提交一个 SELECT
语句,并把计划放入 SET
子句的表达式包含进 SELECT
语句来实现预览。下面的 SELECT
语句显示了工资增加 10% 后的结果。
select deptno,
ename,
sal as orig_sal,
sal*.10 as amt_to_add,
sal*1.10 as new_sal
from emp
where deptno=20
order by 1,5
DEPTNO ENAME ORIG_SAL AMT_TO_ADD NEW_SAL
------ ------ -------- ---------- -------
20 SMITH 800 80 880
20 ADAMS 1100 110 1210
20 JONES 2975 298 3273
20 SCOTT 3000 300 3300
20 FORD 3000 300 3300
工资的增加被分为两列:一列显示实际增加值,另一列显示增加后的工资。