UPDATE

UPDATE ステートメントは、表の行の中の指定した列の値を更新します。

呼び出し

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

構文

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

注:

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

説明

表名
更新したい表の名前です。名前は、カタログ内で記述されている表を示すもの でなければなりませんが、カタログ表を指定してはなりません。
SET
列名への値の割り当てを指定します。
列名
更新したい列を指定します。列名 は指定した表の列を示すもので なければなりません。同じ列を 2 回以上指定してはなりません (SQLSTATE 42701)。
はリテラル、列名、または 特殊レジスターのいずれでもかまいません。

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

リテラル
リテラル は、データ・タイプ INTEGER、SMALLINT、DECIMAL、 CHAR(n)、VARCHAR(n)、BLOB(n)、DATE、TIME、 または TIMESTAMP の値にすることができます。
特殊レジスター
現在の日付、時刻およびタイム・スタンプを生成するために、 特殊レジスター CURRENT DATE、CURRENT TIME および CURRENT TIMESTAMP を使用することができます。
WHERE
更新する行を示す条件を指定します。この文節は省略しても構いません。また、 指定する場合は、検索条件を指定することができます。この文節を省略すると、 表のすべての行が更新されます。
検索条件
検索条件 は、指定された行に関して、 真、偽、または不明となる条件を指定します。

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

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

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

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

検索条件の述部式では、CONCAT、MOD、LENGTH、および RTRIM 関数を使用することができます。MOD 関数の 詳細については、MOD を参照してください。

NOT
NOT を指定すると、述部の結果は逆になります。
関係演算子
以下のいずれかの演算子を指定することができます。

=
等しい。

<>
等しくない。

<
より小さい。

>
より大きい。

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

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

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 が、指定した各述部の結果に適用されます。

規則

注意事項

EMPLOYEE 表内の従業員番号 (EMPNO) '003002' の電話番号 (PHONENO) を '1234' に 変更します。

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

関連した解説