结构化查询语言/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 中行 Fishing 的 remark 列更改为:“'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;