UPDATE

UPDATE 语句更新表行中指定列的值。

调用

此语句可以在使用 DB2 CLI 函数的应用程序中使用,也可以通过 CLP 发出。

语法

>>-UPDATE--table-name--SET-------------------------------------->
 
   .-,----------------------------------.
   V                                    |
>----+--------------------------------+-+----------------------->
     '-column-name--=----expression---'
 
>--+---------------------------------+-------------------------><
   '-WHERE----| search_condition |---'
 
expression:
 
   .-arithmetic operator---------.
   V                             |
|----+---+--+-literal----------+-+------------------------------|
     +-+-+  +-column-name------+
     '---'  '-special register-'
 
operator:
 
|--+-CONCAT-+---------------------------------------------------|
   +-/------+
   +-*------+
   +-+------+
   '--------'
 
search_condition:
 
   .----------------------------------------------.
   V                                              |
|----+------------------------------------------+-+-------------|
     '-+-AND-+--+-----+--+-| predicate |------+-'
       '-OR--'  '-NOT-'  '-(search_condition)-'
 
predicate:
 
                             (1)
|--+-| basic predicate |-+--------------------------------------|
   +-| IN predicate |----+
   +-| LIKE predicate |--+
   '-| NULL predicate |--'
 
basic predicate:
 
|--| expression |--+-=--+--| expression |-----------------------|
                   +-<>-+
                   +-<--+
                   +->--+
                   +-<=-+
                   +->=-+
                   '-||-'
 
IN predicate:
 
|--| expression |--+-----+--IN--(--| expression |--)------------|
                   '-NOT-'
 
LIKE predicate:
 
|--| expression |--+-----+--LIKE--| expression |----------------|
                   '-NOT-'
 
NULL predicate:
 
|--| expression |--IS--+-----+--NULL----------------------------|
                       '-NOT-'
 
relational operator:
 
|--+-=-----------+----------------------------------------------|
   +-<>----------+
   +-<-----------+
   +->-----------+
   +-<=----------+
   +->=----------+
   +-LIKE--------+
   +-NOT LIKE----+
   +-IS NULL-----+
   '-IS NOT NULL-'
 
 

记录:

  1. 仅 NULL 谓词中允许 BLOB 表达式。

描述

table-name
是要更新的表的名称。此名称必须标识目录中描述的表,但不是目录表。
SET
对列名赋值。
column-name
标识要更新的列。column-name 必须标识指定表的一个列。不得多次指定一个列(SQLSTATE 42701)。
expression
expression 可以是文字、列名或专用寄存器。

不支持对 BLOB(n)、DATE、TIME 和 TIMESTAMP 数据类型执行算术运算。

literal
literal 可以是数据类型为 INTEGER、SMALLINT、DECIMAL、 CHAR(n)、VARCHAR(n)、BLOB(n)、DATE、TIME 或 TIMESTAMP 的值。
special register
专用寄存器 CURRENT DATE、CURRENT TIME 和 CURRENT TIMESTAMP 可用来生成当前的日期、时间和时间戳记。
WHERE
引入一个条件,指示更新哪些行。可以省略此子句,也可以给出搜索条件。如果省略此子句,则更新所有表行。
search_condition
search_condition 指定关于给定行的为真、为假或未知的条件。

search_condition 的结果通过对每个指定谓词的结果应用指定的逻辑运算符(AND、OR 或 NOT)而导出。谓词对两个值作比较。如果未指定逻辑运算符,则搜索条件的结果就是指定的谓词的结果。

首先对圆括号内的搜索条件求值。如果圆括号未指定求值顺序,则 NOT 优先于 AND,而 AND 优先于 OR。同一优先级别的运算符的求值顺序未定义,这样可以优化搜索条件。

将对每一表行应用 search_condition,而更新的行就是 search_condition 的结果为真的那些行。

搜索条件中的每个 column-name 都必须标识一个表列。

可在搜索条件的谓词表达式中使用 CONCAT、MOD、LENGTH 和 RTRIM 函数。有关 MOD 函数的更多信息,请参阅 *** 页。

NOT
若指定 NOT,则谓词的结果相反。
relational operator
可以是下列任何运算符:

=
等于。

<>
不等于。

<
小于。

>
大于。

<=
小于或等于。

>=
大于或等于。

LIKE
与一个字符串相匹配。使用单字节字符集(SBCS)下划线字符来引用一个 SBCS 字符。使用双字节字符集(DBCS)下划线字符来引用一个 DBCS 字符。例如,条件 WHERE PART_NUMBER LIKE '_0' 返回所有以 0 结束的两位部件号(例如,20、30 和 40)。使用 %(SBCS 或 DBCS) 来引用具有零个或更多个 SBCS 或 DBCS 字符的字符串。例如,条件 WHERE DEPT_NUMBER LIKE '2%' 返回所有以数字 2 开始的部门号(例如,20、27 或 234)。

NOT LIKE
没有一个字符相同。

IS NULL
包含空值。

IS NOT NULL
不包含空值。
AND
如果指定的话,将逻辑运算符 AND 应用于每个指定谓词的结果。
OR
如果指定的话,将逻辑运算符 OR 应用于每个指定谓词的结果。

规则

注意事项

示例

将 EMPLOYEE 表中雇员号(EMPNO)'003002' 的电话号码更改为 '1234'。

UPDATE EMPLOYEE
 SET PHONENO = '1234'
 WHERE EMPNO = '003002'

相关参考