UPDATE

Name

UPDATE -- 更新一個表中的行

Synopsis

UPDATE [ ONLY ] table SET column = { expression | DEFAULT } [, ...]
    [ FROM fromlist ]
    [ WHERE condition ]

描述

UPDATE 改變滿足條件的所有行的聲明了的列/字段的值。 只有要更改的列/字段需要在語句中出現,沒有明確的 SET 的字段保持它們原來的數值。

缺省時,UPDATE 將更新所聲明的表和所有子表的記錄。 如果你希望只更新所聲明的表,你應該使用 ONLY 子句。

要更改表,你必須對它有UPDATE 權限, 同樣對 expression 或者 condition 條件裡提到的任何表也要有SELECT權限。

參數

table

現存表的名稱(可以有模式修飾)。

column

table 中列/字段的名。

expression

賦予列/字段的一個有效的值或表達式。表達式可以使用表中這個或其它字段的舊數值。

DEFAULT

把字段設置為它的缺省值(如果沒有缺省表達式賦予它,那麼就是 NULL)。

fromlist

一個表表達式的列表,允許來自其它表中的列/字段出現在 WHERE 條件裡。

condition

一個表達式,返回 boolean 類型。只有這個表達式返回 true 的行被更新。

輸出

成功完成後,UPDATE 命令返回形如

UPDATE count

的命令標簽。count 是更新的行數。 如果 count 是 0, 那麼沒有符合 condition 的行(這個不認為是錯誤)。

例子

把表 films 裡的字段 kind 裡的詞 DramaDramatic 代替:

UPDATE films SET kind = 'Dramatic' WHERE kind = 'Drama';

調整表 weather 中的一行的溫度記錄並且把降水設置為缺省值:

UPDATE weather SET temp_lo = temp_lo+1, temp_hi = temp_lo+15, prcp = DEFAULT
  WHERE city = 'San Francisco' AND date = '2003-07-03';

兼容性

這條命令遵循 SQL 標準。FROM 子句是 PostgreSQL 擴展。