UPDATE 更新資料
UPDATE 用來修改資料表中的現有資料。
語法
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
務必加上 WHERE 條件!否則會更新資料表中的所有資料。
更新單一欄位
假設有一個 customers 資料表:
| id | name | city | phone |
|---|---|---|---|
| 1 | 張一 | 台北 | 02-1234 |
| 2 | 王二 | 高雄 | 07-5678 |
更新王二的電話:
UPDATE customers
SET phone = '07-9999'
WHERE id = 2;
結果:
| id | name | city | phone |
|---|---|---|---|
| 1 | 張一 | 台北 | 02-1234 |
| 2 | 王二 | 高雄 | 07-9999 |
更新多個欄位
同時更新多個欄位:
UPDATE customers
SET city = '新北', phone = '02-8888'
WHERE name = '張一';
根據條件更新多筆資料
-- 將所有高雄的客戶改為高雄市
UPDATE customers
SET city = '高雄市'
WHERE city = '高雄';
使用運算式更新
可以使用運算式或函數:
-- 所有商品價格打 9 折
UPDATE products
SET price = price * 0.9;
-- 庫存減 1
UPDATE products
SET stock = stock - 1
WHERE id = 100;
使用子查詢更新
搭配子查詢更新資料:
UPDATE orders
SET status = 'VIP'
WHERE customer_id IN (
SELECT id FROM customers WHERE total_purchases > 100000
);
安全提醒
在執行 UPDATE 之前,建議:
- 先用 SELECT 確認會影響哪些資料:
SELECT * FROM customers WHERE id = 2;
- 使用 Transaction 包起來,有問題可以 ROLLBACK:
BEGIN TRANSACTION;
UPDATE customers SET phone = '07-9999' WHERE id = 2;
-- 確認無誤後
COMMIT;