UPDATE
UPDATE — 更新表中的行
大纲
UPDATE [ ONLY ]tableSETcolumn= {expression| DEFAULT } [, ...] [ FROMfromlist] [ WHEREcondition]
描述
UPDATE 更改满足条件的所有行中指定列的值。语句中只需要提及要修改的列;没有显式
SET 的列保留它们先前的值。
默认情况下,UPDATE 将更新指定表及其所有子表中的行。如果只想更新提到的这个特定表,必须使用
ONLY
子句。
要更新表,你必须拥有该表上的 UPDATE 权限,以及对在
expression 或
condition 中读取其值的任何表的
SELECT
权限。
参数
table要更新的表的名称(可带模式限定)。
columntable中一个列的名称。expression赋给该列的表达式。该表达式可以使用该表以及其他列的旧值。
DEFAULT把该列设置为它的默认值(如果没有给它分配特定的默认表达式,则为 NULL)。
fromlist一个表表达式的列表,允许来自其他表的列出现在
WHERE条件和更新表达式中。condition一个返回
boolean类型值的表达式。只有该表达式返回true的行才会被更新。
输出
成功完成时,UPDATE 命令返回一个形如
UPDATE count
的命令标签。count 是被更新的行数。如果
count 为
0,说明没有行匹配 condition(这不被认为是错误)。
示例
把表 films 的列 kind 中的单词
Drama 改为 Dramatic:
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 扩展。