UPDATE (SQL)
表示
UPDATEステートメントは、1つもしくは複数のレコードのデータを更新する、SQLにおけるデータ操作言語 (DML)ステートメントの1つである。すべてのレコードを一括更新するかまたは、条件式を満たす一部のレコードだけを更新することができる。
構文
UPDATE テーブル名 SET 列名1 = 値1 [,列名2 = 値2...] [WHERE 条件式];
正常に更新が行われるためには、ユーザはそのテーブルまたは項目に対する更新権限を持っている必要がある。 また、更新後の値がPRIMARY KEY制約、一意性制約、CHECK制約、NOT NULL制約などに違反しないことが必要である。
例
基本構文
テーブル "t" に対して、列 "c2" の値が a の場合に限り、列 "c1" に 1 をセットする。
UPDATE t SET c1 = 1 WHERE c2 = 'a';
テーブル "t" に対し列 "c2" の値が a の場合に限り、列 "c1" の値に 1 を加算する。
UPDATE t SET c1 = c1 + 1 WHERE c2 = 'a';
1つのUPDATEステートメントで複数列を更新することも可能である。
UPDATE test SET c1 = 1, c2 = 2;
結合
他のテーブルと結合した結果により更新を行う場合、サブクエリ(副次問い合わせ)を用いる方法と、SELECT ステートメントと類似の結合を用いる方法がある。以下の例は、どちらもテーブル "t1" の列 "a2" の値が、テーブル "t2" の列 "b1" の値が 0 であるレコードの列 "b2" の値のリストに含まれに限り、列 "a1" に 2 をセットする。
サブクエリ
UPDATE t1
SET a1 = 2
WHERE a2 IN (SELECT b2 FROM t2 WHERE b1 = 0);
結合
UPDATE t1
SET a1 = 2
FROM t2
WHERE t1.a2 = t2.b2 AND t2.b1 = 0;