跳转到内容

结构化查询语言/UPDATE 1

来自维基教科书,开放书籍,开放世界



提示:请注意并停用 AUTOCOMMIT.


UPDATE 命令修改一个或多个现有行。

UPDATE <tablename>
SET    <columnname> = <value>,
       <columnname> = <value>,
       ...
WHERE  <search_condition>;

值为命名列分配。未提及的列保持不变。search_condition 的作用方式与 SELECT 命令中的作用方式相同。它将命令的覆盖范围限制在满足指定条件的行。如果省略 WHERE 关键字和 search_condition,则会影响表的所有行。可以指定不命中任何行的 search_condition。在这种情况下,不会更新任何行 - 并且不会发生错误或异常。


如先前在 介绍页 中所示,UPDATE 命令非常灵活。在一个命令中,我们可以选择两种功能的任意组合

  • 更改一个或多个列
  • 根据 search_condition 更改零个、一个或多个行。

此外,值可以具有动态性质,例如系统日期、时间戳或时区 - 取决于您的实现。

为了复习,这里有一个例子

UPDATE person
SET    firstname = 'Jimmy Walker', 
       lastname  = 'de la Crux' 
WHERE  id = 5;
-- revoke the changes
ROLLBACK;


更多信息

[编辑 | 编辑源代码]

我们介绍了有关 UPDATE 命令的更多信息 此处.

将表 hobby 中行 Fishingremark 列更改为:“'Catching fishes with or without tools.'”。

点击查看解决方案
-- Change one column of one row
UPDATE hobby
SET    remark = 'Catching fishes with or without tools.'
WHERE  hobbyname = 'Fishing';
-- or: WHERE  id = 2;
COMMIT;
-- Check the result
SELECT * FROM hobby;

将表 hobby 中所有行的 remark 列更改为:“'A creative leisure activity.'”。在 COMMIT 前检查命令的成功情况。撤消更改。

点击查看解决方案
-- no WHERE clause ==> all rows affected
UPDATE hobby
SET    remark = 'A creative leisure activity.';
-- Check the result
SELECT * FROM hobby;
-- We don't want to save these values. So we revert the changes.
ROLLBACK;
找到上一个练习的解决方案,该解决方案使用 WHERE 子句。
点击查看解决方案
-- A WHERE clauses, which hits all rows
UPDATE hobby
SET    remark = 'A creative leisure activity.'
WHERE  id >= 1;
-- Check the result
SELECT * FROM hobby;
-- We don't want to save these values. So we revert the changes.
ROLLBACK;


华夏公益教科书