UPDATE [ ONLY ] table SET col = expression [, ...] [ FROM fromlist ] [ WHERE condition ]
现存表的名称(可以有模式修饰)。如果声明了 ONLY, 那么只更新那个表自己。如果没有声明 ONLY,那么将更新该表和所有它的后代表(如果有)。 我们可以在表名字后面附加 * 以表示也要扫描后代表,但是在目前的版本里, 这是缺省的行为。(在版本 7.1 之前,ONLY 是缺省行为。) 缺省行为可以通过修改 SQL_INHERITANCE 配置选项来修改。
表 table 中列/字段的名.
赋予列/字段的一个有效的值或表达式.
PostgreSQL 的一个非标准的扩展,允许别的表中的列/字段出现在 WHERE 条件里.
请参考 SELECT 语句获得 WHERE 子句的进一步描述.
UPDATE 改变满足条件的所有行的声明了的列/字段的值。 只有要更改的列/字段需要在语句中出现.
数组引用使用与 SELECT 里一样的语法.也就是说,单个数组元素, 数组元素的一个范围或者是整个数组都可以用一个查询语句更新.
要更改表,你必须对它有写权限, 同样对 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