DELETE

DELETE ステートメントは、表から 1 行または複数の行を削除します。

呼び出し

このステートメントは、アプリケーション・プログラム内で DB2 CLI 関数を用いて使用することができます。 また、CLP を介して出すこともできます。

構文

>>-DELETE FROM--表名--+---------------------+------------------><
                      '-WHERE--| 検索条件 |-'
 
検索条件:
 
   .--------------------------------------.
   V                                      |
|----+----------------------------------+-+---------------------|
     '-+-AND-+--+-----+--+-| 述部 |---+-'
       '-OR--'  '-NOT-'  '-(検索条件)-'
 
述部:
 
|--+-| 基本述部 |--+--------------------------------------------|
   +-| IN 述部 |---+
   +-| LIKE 述部 |-+
   '-| NULL 述部 |-'
 
基本述部:
 
|--| 式 |--+-=--+--| 式 |---------------------------------------|
           +-<>-+
           +-<--+
           +->--+
           +-<=-+
           +->=-+
           '-||-'
 
IN 述部:
 
                        .-,------------.
                        V              |
|--| 式 |--+-----+--IN----(--| 式 |--)-+------------------------|
           '-NOT-'
 
LIKE 述部:
 
|--| 式 |--+-----+--LIKE--| 式 |--------------------------------|
           '-NOT-'
 
NULL 述部:
 
          (1)
|--| 式 |-------IS--+-----+--NULL-------------------------------|
                    '-NOT-'
 
式:
 
   .-演算子--------------------.
   V                           |
|----+---+--+-リテラル-------+-+--------------------------------|
     +-+-+  +-列名-----------+
     '---'  +-(式)-----------+
            +-特殊レジスター-+
            '-関数-----------'
 
演算子:
 
|--+-/-+--------------------------------------------------------|
   +-*-+
   +-+-+
   '---'
 
 

注:

  1. BLOB 式は、NULL 述部でのみ使用することができます。

説明

FROM 表名
行を削除すべき表を指定します。表の名前は、カタログに存在する 表を指すものでなければなりませんが、カタログ表を指定してはなりません。
WHERE
削除する行を選択する条件を指定します。この文節は省略できます。 省略しない場合には、検索条件を指定してください。この文節を省略すると、 表のすべての行が削除されます。
検索条件
検索条件 は、指定された行に関して、 真、偽、または不明となる条件を指定します。

検索条件 の結果は、指定した各述部の結果に対して、指定した 論理演算子 (AND、OR、NOT) を適用することによって得られます。 述部は 2 つの値を比較します。論理演算子を指定しなければ、 検索条件の結果は、指定した述部の結果となります。

括弧内の検索条件が先に評価されます。評価の順序を括弧で指定していない場合、NOT が AND の前に 適用され、AND が OR の前に適用されます。同じ順序レベルの演算子が評価される順序は、検索条件の最適化が できるように未定義となっています。

表の各行に検索条件 が適用され、検索条件 の 結果が真となった行が削除されます。

検索条件の中の各列名 は、表の列を示すものでなければなりません。

NOT
NOT を指定すると、述部の結果は逆になります。
述部のオペランドを指定します。 は、 リテラル、列名、特殊レジスター、関数のいずれでもかまいません。

BLOB(n)、DATE、TIME、および TIMESTAMP データ・タイプに対する算術演算はサポートされません。

リテラル
リテラル は、データ・タイプ INTEGER、SMALLINT、DECIMAL、 CHAR(n)、VARCHAR(n)、BLOB(n)、DATE、TIME、 または TIMESTAMP の値にすることができます。
列名
述部のオペランドである列を指定します。
特殊レジスター
述部のオペランドである特殊レジスターを指定します。 現在の日付、時刻およびタイム・スタンプを生成するために、 特殊レジスター CURRENT DATE、CURRENT TIME および CURRENT TIMESTAMP を使用することができます。
関数
組み込める関数は MOD、LENGTH、および RTRIM のみです。
関係演算子
以下のいずれかの演算子を指定することができます。

=
等しい。

<>
等しくない。

<
より小さい。

>
より大きい。

<=
より小さいか等しい。

>=
より大きいか等しい。

LIKE
1 つの文字ストリングを突き合わせます。1 つの 1 バイト文字セット文字 (SBCS) を表すには、SBCS の下線を使用します。 1 つの 2 バイト文字セット文字 (DBCS) を表すには、DBCS の下線を使用します。 例えば、条件が WHERE PART_NUMBER LIKE '_0' の場合、0 で終わるすべての 2 桁の パーツ番号 (例えば、20、30、40 など) が戻ります。ゼロ以上の SBCS または DBCS 文字のストリングを表す場合は、% (SBCS あるいは DBCS のいずれでも) を使用してください。例えば、 条件が WHERE DEPT_NUMBER LIKE '2%' の場合、2 で始まるすべての 部門番号 (20、27、234 など) が戻ります。

NOT LIKE
同じ文字が 1 つもありません。

IS NULL
ヌル値を含んでいます。

IS NOT NULL
ヌル値を含んでいません。
AND
指定した場合、論理演算子 AND が、指定した各述部の結果に適用されます。
OR
指定した場合、論理演算子 OR が、指定した各述部の結果に適用されます。

規則

なし。

注意事項

従業員番号 (EMPNO) 003002 を EMPLOYEE 表から削除します。

     DELETE FROM EMPLOYEE
       WHERE EMPNO = '003002'

関連した解説