UPDATE 用於修改資料表中現有資料列的欄位值。同樣極度依賴 WHERE 子句,省略將導致全表欄位被更新,後果嚴重。
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE some_column = some_value;
SET 子句指定要更新的欄位與新值,多欄位用逗號分隔。WHERE 子句限定更新範圍。+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘寶 | https://www.taobao.com/ | 13 | CN | | 3 | 菜鳥教程 | https://www.runoob.com/ | 4689 | CN | | 4 | 微博 | https://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | +----+--------------+---------------------------+-------+---------+
UPDATE Websites SET alexa = '5000', country = 'USA' WHERE name = '菜鳥教程';
執行後讀取 Websites 表:

僅 id=3 的資料被修改,其餘不變。
UPDATE Websites SET alexa = '5000', country = 'USA';
上述指令將把 Websites 表所有資料的 alexa 改為 5000、country 改為 USA。無 WHERE 保護的 UPDATE 執行前請三思,並在交易中驗證。
UPDATE Products SET price = price * 1.1 WHERE category_id IN (SELECT id FROM Categories WHERE name = 'Electronics');
MySQL:
UPDATE Orders o JOIN Customers c ON o.customer_id = c.id SET o.status = 'VIP' WHERE c.level = 'Gold';
SQL Server:
UPDATE o SET o.status = 'VIP' FROM Orders o JOIN Customers c ON o.customer_id = c.id WHERE c.level = 'Gold';
UPDATE Employees SET bonus = CASE WHEN performance = 'A' THEN salary * 0.2 WHEN performance = 'B' THEN salary * 0.1 ELSE 0 END;
BEGIN; UPDATE ...; -- 檢查筆數 COMMIT;LIMIT(MySQL)或 TOP(SQL Server)作為雙重保險。