UPDATE
DBのレコードの更新にはUPDATEを使用する.
UPDATEの基本形は以下である.
UPDATE テーブル名 SET 属性=値, 属性=値,... WHERE ...指定したテーブルのレコードのうち,WHEREで指定した条件にあうものに対して,SETで指定した属性=値で更新する.以下はテーブルclusterからname='fuga'のレコードを選択してcpunumを256に更新している.
benchmark=> SELECT * FROM cluster; id | name | cpunum | cpuclock | memory | network ----+------+--------+----------+--------+------------- 1 | hoge | 256 | 2 | 1024 | 1000BASE-TX 2 | fuga | | | | 3 | foo | | | 256 | 4 | var | 512 | 3 | 2048 | (4 rows) benchmark=> UPDATE cluster benchmark-> SET cpunum=256 benchmark-> WHERE name='fuga'; UPDATE 1 benchmark=> SELECT * FROM cluster; id | name | cpunum | cpuclock | memory | network ----+------+--------+----------+--------+------------- 1 | hoge | 256 | 2 | 1024 | 1000BASE-TX 2 | fuga | 256 | | | 3 | foo | | | 256 | 4 | var | 512 | 3 | 2048 | (4 rows)
SELECTの場合と同様,WHERE句ではサブクエリを使用できる.
benchmark=> SELECT * FROM cluster; id | name | cpunum | cpuclock | memory | network ----+------+--------+----------+--------+------------- 1 | hoge | 256 | 2 | 1024 | 1000BASE-TX 2 | fuga | 256 | | | 3 | foo | | | 256 | 4 | var | 512 | 3 | 2048 | (4 rows) benchmark=> UPDATE cluster benchmark-> SET cpuclock=1 benchmark-> WHERE cpunum=(SELECT cpunum FROM cluster WHERE name='fuga'); UPDATE 2 benchmark=> SELECT * FROM cluster; id | name | cpunum | cpuclock | memory | network ----+------+--------+----------+--------+------------- 1 | hoge | 256 | 1 | 1024 | 1000BASE-TX 3 | foo | | | 256 | 4 | var | 512 | 3 | 2048 | 2 | fuga | 256 | 1 | | (4 rows)また,SET句でもサブクエリを使用できる.
benchmark=> SELECT * FROM cluster; id | name | cpunum | cpuclock | memory | network ----+------+--------+----------+--------+------------- 1 | hoge | 256 | 1 | 1024 | 1000BASE-TX 3 | foo | | | 256 | 4 | var | 512 | 3 | 2048 | 2 | fuga | 256 | 1 | | (4 rows) benchmark=> UPDATE cluster benchmark-> SET network=(SELECT network FROM cluster WHERE name='hoge') benchmark-> WHERE name='fuga'; UPDATE 1 benchmark=> SELECT * FROM cluster; id | name | cpunum | cpuclock | memory | network ----+------+--------+----------+--------+------------- 1 | hoge | 256 | 1 | 1024 | 1000BASE-TX 3 | foo | | | 256 | 4 | var | 512 | 3 | 2048 | 2 | fuga | 256 | 1 | | 1000BASE-TX (4 rows)

