คำสั่ง UPDATE ใน SQL ใช้เพื่อปรับปรุงข้อมูลในตารางที่มีอยู่ โดยสามารถอัปเดตข้อมูลในคอลัมน์หนึ่งหรือหลายคอลัมน์ได้ พร้อมกับการกำหนดเงื่อนไขว่าแถวใดที่ต้องการอัปเดต การใช้งานคำสั่งนี้มีรูปแบบที่ยืดหยุ่น สามารถประยุกต์ใช้ในหลายๆ สถานการณ์
รูปแบบพื้นฐานของคำสั่ง UPDATE
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
- table_name: ชื่อตารางที่ต้องการอัปเดตข้อมูล
- SET: ใช้เพื่อกำหนดคอลัมน์และค่าที่ต้องการอัปเดต
- WHERE: ใช้เพื่อกำหนดเงื่อนไขว่าจะแก้ไขข้อมูลแถวไหน หากไม่ใส่เงื่อนไข จะอัปเดตทุกแถวในตาราง
ตัวอย่างการใช้งาน
1. อัปเดตข้อมูลเฉพาะบางแถว
ถ้าเรามีตาราง employees ที่เก็บข้อมูลของพนักงาน และต้องการอัปเดตเงินเดือนของพนักงานที่มี employee_id เท่ากับ 5 เขียนคำสั่งได้ดังนี้
UPDATE employees
SET salary = 60000
WHERE employee_id = 5;2. อัปเดตหลายคอลัมน์พร้อมกัน
สามารถอัปเดตข้อมูลในหลายคอลัมน์ในคำสั่งเดียว ตัวอย่างเช่น ต้องการอัปเดตทั้งเงินเดือนและตำแหน่งงานของพนักงานที่มี employee_id เท่ากับ 5
UPDATE employees
SET salary = 65000, position = 'Manager'
WHERE employee_id = 5;3. อัปเดตทุกแถวในตาราง
หากต้องการอัปเดตทุกแถวในตาราง เช่น ต้องการเพิ่มเงินเดือนให้พนักงานทุกคน 10%
UPDATE employees
SET salary = salary * 1.10;หมายเหตุ: การไม่ใส่เงื่อนไข WHERE จะทำให้ทุกแถวในตารางถูกอัปเดต ควรใช้งานอย่างระมัดระวัง
4. อัปเดตข้อมูลจากตารางอื่น (การ Join)
บางครั้งเราอาจต้องการอัปเดตข้อมูลโดยอิงกับข้อมูลจากอีกตารางหนึ่ง เช่น มีตาราง salaries ที่เก็บข้อมูลเงินเดือนและต้องการอัปเดตตาราง employees ให้ตรงกับเงินเดือนในตาราง salaries
UPDATE employees
SET salary = (SELECT new_salary FROM salaries WHERE salaries.employee_id = employees.employee_id)
WHERE EXISTS (SELECT 1 FROM salaries WHERE salaries.employee_id = employees.employee_id);5. อัปเดตข้อมูลที่มีเงื่อนไขซับซ้อน
หากต้องการอัปเดตข้อมูลโดยใช้เงื่อนไขหลายเงื่อนไข ตัวอย่างเช่น ต้องการอัปเดตเงินเดือนของพนักงานที่มีตำแหน่งเป็น ‘Developer’ และมีเงินเดือนน้อยกว่า 50,000
UPDATE employees
SET salary = salary + 5000
WHERE position = 'Developer' AND salary < 50000;6. อัปเดตข้อมูลโดยใช้ CASE
สามารถใช้ CASE เพื่อกำหนดการอัปเดตแบบมีเงื่อนไขในคำสั่งเดียวได้ ตัวอย่างเช่น
UPDATE employees
SET salary = CASE
WHEN position = 'Manager' THEN salary * 1.20
WHEN position = 'Developer' THEN salary * 1.10
ELSE salary * 1.05
END;ในตัวอย่างนี้ พนักงานแต่ละคนจะได้รับการอัปเดตเงินเดือนตามตำแหน่งงาน
