การอัปเดตข้อมูลทั้งแถวด้วย UPDATE และ Primary Key
ใช้คำสั่ง UPDATE ระบุคอลัมน์ทั้งหมดที่ต้องการเปลี่ยน พร้อมเงื่อนไข WHERE บน Primary Key เพื่อระบุแถวที่ต้องการอัปเดต
ไวยากรณ์
UPDATE yourTableName
SET column1 = 'value1',
column2 = 'value2',
column3 = 'value3',
...
WHERE primaryKeyColumn = primaryKeyValue;
ตัวอย่างการใช้งาน
สร้างตาราง:
CREATE TABLE UpdateEntireRowDemo (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(20),
Age INT,
Marks INT,
PRIMARY KEY(Id)
);
เพิ่มข้อมูล:
INSERT INTO UpdateEntireRowDemo(Name, Age, Marks) VALUES('Sam', 23, 78);
INSERT INTO UpdateEntireRowDemo(Name, Age, Marks) VALUES('Mike', 21, 99);
INSERT INTO UpdateEntireRowDemo(Name, Age, Marks) VALUES('Carol', 26, 80);
INSERT INTO UpdateEntireRowDemo(Name, Age, Marks) VALUES('John', 22, 71);
INSERT INTO UpdateEntireRowDemo(Name, Age, Marks) VALUES('Bob', 29, 89);
INSERT INTO UpdateEntireRowDemo(Name, Age, Marks) VALUES('David', 25, 68);
INSERT INTO UpdateEntireRowDemo(Name, Age, Marks) VALUES('Larry', 31, 91);
อัปเดตแถว Id = 5 (Bob -> James, Age 29 -> 19, Marks 89 -> 78):
UPDATE UpdateEntireRowDemo
SET Name = 'James', Age = 19, Marks = 78
WHERE Id = 5;
ตรวจสอบผลลัพธ์:
SELECT * FROM UpdateEntireRowDemo WHERE Id = 5;
+----+-------+------+-------+
| Id | Name | Age | Marks |
+----+-------+------+-------+
| 5 | James | 19 | 78 |
+----+-------+------+-------+
ข้อควรระวัง
- ต้องมี WHERE - มิฉะนั้นจะอัปเดตทุกแถวในตาราง!
- ใช้ Primary Key - เพื่อความแม่นยำและประสิทธิภาพ
- คอลัมน์ที่ไม่ระบุใน SET จะคงค่าเดิม - ไม่ต้องระบุครบทุกคอลัมน์
การอัปเดตหลายแถวพร้อมกัน
-- อัปเดตหลาย Id พร้อมกัน
UPDATE UpdateEntireRowDemo
SET Marks = Marks + 5
WHERE Id IN (1, 2, 3);
การอัปเดตจากตารางอื่น (JOIN)
UPDATE target_table t
JOIN source_table s ON t.id = s.id
SET t.col1 = s.col1, t.col2 = s.col2
WHERE t.some_condition = 'value';