DELETE

DELETE 语句从表中删除一行或多行。

调用

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

语法

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

记录:

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

描述

FROM table-name
标识要从中删除行的表。名称必须标识目录中存在的表,但不能用它标识目录表。
WHERE
指定选择要删除的行的条件。可以省略此子句,或指定搜索条件。如果省略此子句,则会删除所有表行。
search_condition
search_condition 指定关于给定行的为真、为假或未知的条件。

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

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

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

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

NOT
若指定 NOT,则谓词的结果相反。
expression
标识谓词的操作数。expression 可以是文字、列名、专用寄存器或函数。

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

literal
literal 可以是数据类型为 INTEGER、SMALLINT、DECIMAL、 CHAR(n)、VARCHAR(n)、BLOB(n)、DATE、TIME 或 TIMESTAMP 的值。
column-name
标识作为谓词操作数的列。
special register
标识作为谓词操作数的专用寄存器。专用寄存器 CURRENT DATE、CURRENT TIME 和 CURRENT TIMESTAMP 可用来生成当前的日期、时间或时间戳记。
function
只能包括 MOD、LENGTH 和 RTRIM 函数。
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。

     DELETE FROM EMPLOYEE
 WHERE EMPNO = '003002'

相关参考