结构化查询语言(Structured Query Language)
完成条件
提示:注意并关闭 AUTOCOMMIT
UPDATE 命令
UPDATE 命令用于修改表中现有的一行或多行记录,其基本语法如下:
UPDATE <tablename>
SET <columnname> = <value>,
<columnname> = <value>,
...
WHERE <search_condition>;
SET
:用于指定需要更新的列和相应的新值。WHERE
:限制更新操作的作用范围,仅对满足条件的行生效。如果省略WHERE
,则更新表中的所有行。- 未被提及的列将保持不变。
- 如果
WHERE
条件没有匹配到任何行,则不会更新任何数据,也不会产生错误或异常。
灵活性
UPDATE 命令非常灵活,可以:
- 更新一个或多个列;
- 根据
WHERE
条件更新零行、一行或多行; - 支持动态值(如系统日期、时间戳或时区),具体取决于实现。
示例
以下示例演示了基本用法:
-- 修改 id 为 5 的记录
UPDATE person
SET firstname = 'Jimmy Walker',
lastname = 'de la Crux'
WHERE id = 5;
-- 撤销更改
ROLLBACK;
附加信息
UPDATE 命令不仅可以用来更新固定值,还支持其他动态特性和条件。以下是一些更复杂的操作:
-
基于计算更新列值: 通过计算或函数动态更新列值。
UPDATE person SET weight = weight + 5 WHERE weight < 60;
-
更新多个行并设置动态值: 使用
CURRENT_DATE
或其他系统变量更新时间相关列。UPDATE person SET date_of_birth = CURRENT_DATE WHERE id BETWEEN 1 AND 10;
-
条件更新: 结合
CASE
表达式,根据不同条件更新列值。UPDATE person SET weight = CASE WHEN weight < 40 THEN weight + 10 ELSE weight + 5 END WHERE id <= 10;
-
使用子查询更新: 动态从另一张表中获取值来更新。
UPDATE person SET weight = (SELECT AVG(weight) FROM person WHERE place_of_birth = 'Dallas') WHERE place_of_birth = 'Richland';
清理和撤销更改
在测试或需要撤销更改时,可以使用以下命令:
-- 撤销未提交的更改
ROLLBACK;
-- 删除所有更改过的行
DELETE FROM person WHERE id > 100;
COMMIT;
最后修改: 2025年01月28日 星期二 13:27