รูปแบบพื้นฐาน
UPDATE yourTableName SET yourColumnName = yourValue;
ตัวอย่างการใช้งาน
mysql> CREATE TABLE DemoTable1873 (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName VARCHAR(20)
);
mysql> INSERT INTO DemoTable1873(FirstName) VALUES('John'), ('Adam'), ('David'), ('Sam');
อัปเดตคอลัมน์ FirstName ทั้งตาราง
mysql> UPDATE DemoTable1873 SET FirstName = 'Robert';
Query OK, 4 rows affected (0.00 sec)
ผลลัพธ์
mysql> SELECT * FROM DemoTable1873;
+----+-----------+
| Id | FirstName |
+----+-----------+
| 1 | Robert |
| 2 | Robert |
| 3 | Robert |
| 4 | Robert |
+----+-----------+
เพิ่ม WHERE Clause (สำคัญมาก)
-- อัปเดตเฉพาะบางแถว
UPDATE DemoTable1873 SET FirstName = 'Robert' WHERE Id = 1;
-- อัปเดตหลายเงื่อนไข
UPDATE DemoTable1873 SET FirstName = 'Robert' WHERE Id IN (1, 3);
-- อัปเดตแบบมีเงื่อนไขซับซ้อน
UPDATE DemoTable1873 SET FirstName = 'Robert'
WHERE Id > 2 AND FirstName != 'Robert';
Best Practices
- ทดสอบด้วย SELECT ก่อน:
SELECT * FROM table WHERE condition
- Backup ก่อน UPDATE จำนวนมาก
- ใช้
LIMIT ป้องกันอัปเดตผิดพลาด: UPDATE ... WHERE ... LIMIT 100
- หลีกเลี่ยง UPDATE ทั้งตารางโดยไม่มี WHERE (Full Table Update)
Multi-column Update
UPDATE DemoTable1873
SET FirstName = 'Robert', LastName = 'Smith', UpdatedAt = NOW()
WHERE Id = 1;
UPDATE กับ JOIN
UPDATE orders o
JOIN customers c ON o.customer_id = c.id
SET o.customer_name = c.name
WHERE o.customer_name IS NULL;
Performance Tips
- Index บนคอลัมน์ใน WHERE Clause
- Batch Update ขนาดใหญ่: แบ่งเป็น Chunk (LIMIT 1000)
- หลีกเลี่ยง UPDATE คอลัมน์ที่มี Index บ่อยๆ (Index Maintenance Cost)