对数据库中已有数据的修改称为更新。您可以更新单个行、表中的所有行或所有行的一个子集。每个列都可以单独更新;其他列不受影响。
要更新现有行,请使用 UPDATE 命令。这需要三部分信息:
要更新的表和列的名称
列的新值
要更新的哪一行(哪些行)
回顾 第 5 章 中的内容,SQL 通常不提供行的唯一标识符。因此,并非总是可以直接指定要更新的哪一行。相反,您指定一行必须满足哪些条件才能被更新。只有当表中存在主键(无论您是声明它还是没有声明它)时,您才能通过选择与主键匹配的条件来可靠地寻址单个行。图形数据库访问工具依赖于这一事实,允许您单独更新行。
例如,此命令更新所有价格为 5 的产品,使其价格变为 10:
UPDATE products SET price = 10 WHERE price = 5;
这可能会导致更新零行、一行或多行。尝试更新与任何行都不匹配的更新不是错误。
让我们详细看一下该命令。首先是关键字 UPDATE
,后跟表名。通常,表名可以是模式限定的,否则它将在路径中查找。接下来是关键字 SET
,后跟列名、等号和新的列值。新的列值可以是任何标量表达式,而不仅仅是常量。例如,如果您想将所有产品的价格提高 10%,您可以使用:
UPDATE products SET price = price * 1.10;
如您所见,用于新值的表达式可以引用行中的现有值。我们还省略了 WHERE
子句。如果省略了它,则表示更新表中的所有行。如果存在,则仅更新与 WHERE
条件匹配的那些行。请注意,SET
子句中的等号是赋值,而 WHERE
子句中的等号是比较,但这不会造成任何歧义。当然,WHERE
条件不必是相等性测试。可以使用许多其他运算符(请参见 第 9 章)。但表达式需要评估为布尔结果。
您可以在一个 UPDATE
命令中更新多个列,方法是在 SET
子句中列出多个赋值。例如:
UPDATE mytable SET a = 5, b = 3, c = 1 WHERE a > 0;
如果您在文档中看到任何不正确的内容、与您对特定功能的体验不符或需要进一步澄清,请使用 此表格 报告文档问题。