跳轉到內容

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


華夏公益教科書