数据修改之Update
update命令可以更新表中某行的某列,也可以更新表的所有行中的所有列。
同时,通过使用可选的From子句,可以利用SQL Select的全部功能从非常复杂的数据
源获取用于更新的数据。
一、更新单个表
基本语法:
update 表名 set 列1=值1or表达式or列,列2=值2,列3=值3,....
[from data sources] [where conditions]
注:a、一般语法中没有from data sources
b、没有where子句时,将更新整个表,所以要非常注意。
c、From Data Sources 可获取数据源中的数据用来更新,但只能更新update后面
紧接的表中的数据(可用子查询来代替解决)
d、语法中的 ‘列’,说的是from data sources中的列
下面是一个示例:
雇员要加薪,但加薪的幅度取决于雇员所在的部门,在岗时间,绩效考核等。
如果每个部门的加薪幅度都存储在Department表中,通过联接Employee
和Department表,在结果集中获取部门的加薪系数,可以使用一个update
语句调整所有雇员的薪水。
update Employee set salary= salary*(1+(2+(((Datediff(yy,DateHire,'5/1/2002')*0.1)+Datediff(yy,DatePosition, '5/1/2002')*0.2)+ +( case when Employee.PerformanceRathy>=2 then Employee.PerformanceRathy else 0 end )*0.5)*Department.RaiseFactor))/100) from Employee inner join Department on Employee.DeptID=Dept.DeptID
注:选择和数据时,就采用基于数据集而不是数据行的方式。