結構化查詢語言/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;