コンテンツにスキップ

UPDATE (SQL)

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。竹太郎 (会話 | 投稿記録) による 2006年10月11日 (水) 04:01個人設定で未設定ならUTC)時点の版 (新規作成)であり、現在の版とは大きく異なる場合があります。

(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

UPDATEステートメントは、1つもしくは複数のレコードのデータを更新する、SQLにおけるデータ操作言語 (DML)ステートメントの1つである。すべてのレコードを一括更新するかまたは、条件式を満たす一部のレコードだけを更新することができる。

文法

 UPDATE テーブル名 SET 列名1 = 値1 [,列名2 = 値2...] [WHERE 条件式];

 正常に更新が行われるためには、ユーザはそのテーブルまたは項目に対する更新権限を持っている必要がある。 また、更新後の値がPRIMARY KEY制約UNIQUE制約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';

テーブル"T"に対して、列"C2"の値が a の場合に限り、列"C1"の値の頭に文字列"text"を結合する。

UPDATE T SET C1 = CONCAT( 'text' , C1 ) WHERE C2 = 'a';

サブクエリ(副次問い合わせ)の例: テーブル"T1"の列"C2"の値が、テーブル"T2"の列"C4"の値が0であるレコードの列"C3"の値のリストに含まれるレコードに限り、列"C1"に 2 をセットする。

UPDATE T1 
  SET 
      C1 = 2    
  WHERE C2 in (SELECT C3
               FROM   T2
               WHERE C4 = 0);

1つのUPDATEステートメントで複数列を更新することも可能である。

UPDATE test SET C1 = 1, C2 = 2;