UPDATE

Name

UPDATE  --  テーブル内のカラムの値の置き換え

Synopsis

UPDATE [ ONLY ] table SET col = expression [, ...]
    [ FROM fromlist ]
    [ WHERE condition ]
  

入力

table

既存テーブルの名前です。

column

table内の 列名です。

expression

列に代入する有効な、式または値です。

fromlist

WHERE条件に他のテーブル上の列を指定できるようにする Postgresの非標準的拡張です。

condition

WHERE句の詳細な説明についてはSELECT文を参照して下さい。

出力

UPDATE #

成功した時に返されるメッセージです。 #は更新された 行数を意味します。#が 0の場合は更新された行がなかったことを意味します。

説明

UPDATE は、条件を満たす全ての行の指定され た列の値を変更します。変更されるべき列のみが文内のcolumnsパラメータに ある必要があります。

SELECT と同じ文法を使って配列を参照します。つまり、1つの配列要素も、 ある範囲にわたる配列要素も、配列全体も1つの問い合わせで更新することが できます。

テーブルを変更するためには書き込み権限が必要です。あわせて、 WHERE条件内で指定した値を持つテーブルへの読み込み権限も 必要になります。

デフォルトで、UPDATEは指定されたテーブルとそのサブテーブルのタプルを更新します。 指定されたテーブルのみを更新したい場合はONLY句を使用して下さい。

使用方法

kind列上の"Drama"という単語を"Dramatic"に変更します。

UPDATE films 
SET kind = 'Dramatic' 
WHERE kind = 'Drama';
SELECT * 
FROM films 
WHERE kind = 'Dramatic' OR kind = 'Drama';

 code  |     title     | did | date_prod  |   kind   | len
-------+---------------+-----+------------+----------+-------
 BL101 | The Third Man | 101 | 1949-12-23 | Dramatic | 01:44
 P_302 | Becket        | 103 | 1964-02-03 | Dramatic | 02:28
 M_401 | War and Peace | 104 | 1967-02-12 | Dramatic | 05:57
 T_601 | Yojimbo       | 106 | 1961-06-16 | Dramatic | 01:50
 DA101 | Das Boot      | 110 | 1981-11-11 | Dramatic | 02:29

互換性

SQL92

SQL92では位置付け型UPDATE文用の異なる構文 を定義しています。

UPDATE table SET column = expression [, ...]
    WHERE CURRENT OF cursor
    
ここで、cursorは オープン済のカーソルの識別子です。