↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本。 PostgreSQL 7.1 已结束支持。 请参阅 当前版本手册.

UPDATE

UPDATE — 替换表中各列的值

大纲

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

输入

table

一个现有表的名称。

column

table 中一个列的名称。

expression

赋给列的一个有效表达式或值。

fromlist

一个 Postgres 非标准扩展,允许来自其他表的列出现在 WHERE 条件中。

condition

WHERE 子句的进一步描述请参阅 SELECT 语句。

输出

UPDATE #

成功时返回的消息。# 表示被更新的行数。如果 # 为 0,则没有行被更新。

描述

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

兼容性

SQL92

SQL92 为定位式 UPDATE 语句定义了一种不同的语法:

UPDATE table SET column = expression [, ...]
    WHERE CURRENT OF cursor
    

其中 cursor 标识一个打开的游标。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.