คำอธิบาย
ใช้คำสั่ง UPDATE ... SET เพื่อแก้ไขข้อมูลในตาราง ตัวอย่างเพิ่มเงินเดือนพนักงานทุกคนจำนวนคงที่
ขั้นตอนการสร้างตารางและข้อมูลตัวอย่าง
mysql> create table DemoTable (
EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
EmployeeName varchar(50),
EmployeeSalary int );
Query OK, 0 rows affected (0.57 sec)
การเพิ่มข้อมูล
mysql> insert into DemoTable(EmployeeName, EmployeeSalary) values('Chris', 56780);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(EmployeeName, EmployeeSalary) values('Robert', 45670);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(EmployeeName, EmployeeSalary) values('Mike', 87654);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(EmployeeName, EmployeeSalary) values('David', 34569);
Query OK, 1 row affected (0.11 sec)
แสดงข้อมูลก่อนอัปเดต
mysql> select * from DemoTable;
ผลลัพธ์:
+------------+--------------+----------------+ | EmployeeId | EmployeeName | EmployeeSalary | +------------+--------------+----------------+ | 1 | Chris | 56780 | | 2 | Robert | 45670 | | 3 | Mike | 87654 | | 4 | David | 34569 | +------------+--------------+----------------+ 4 rows in set (0.00 sec)
คิวรี่เพิ่มเงินเดือนทุกคน 12,346 บาท
mysql> update DemoTable set EmployeeSalary = EmployeeSalary + 12346; Query OK, 4 rows affected (0.14 sec) Rows matched: 4 Changed: 4 Warnings: 0
ตรวจสอบข้อมูลหลังอัปเดต
mysql> select * from DemoTable;
ผลลัพธ์:
+------------+--------------+----------------+ | EmployeeId | EmployeeName | EmployeeSalary | +------------+--------------+----------------+ | 1 | Chris | 69126 | | 2 | Robert | 58016 | | 3 | Mike | 100000 | | 4 | David | 46915 | +------------+--------------+----------------+ 4 rows in set (0.00 sec)
คำอธิบาย
- SET EmployeeSalary = EmployeeSalary + 12346: ใช้ค่าเดิมของคอลัมน์บวกค่าใหม่
- ไม่มี WHERE clause หมายถึงอัปเดต ทุกแถว
- Rows matched: 4, Changed: 4 แสดงว่าทุกแถวถูกเปลี่ยนแปลง
รูปแบบ UPDATE อื่นๆ ที่น่าสนใจ
-- อัปเดตเฉพาะเงินเดือนต่ำกว่า 50000
UPDATE DemoTable SET EmployeeSalary = EmployeeSalary * 1.1 WHERE EmployeeSalary < 50000;
-- อัปเดตหลายคอลัมน์พร้อมกัน
UPDATE DemoTable SET EmployeeSalary = EmployeeSalary + 5000, EmployeeName = CONCAT('Mr. ', EmployeeName);