การแก้ไขข้อมูล (UPDATE) ใน MySQL
ในบทเรียนก่อนหน้านี้ เราได้เรียนรู้เกี่ยวกับการอ่านข้อมูลจากฐานข้อมูลด้วยคำสั่ง SELECT และการใช้ WHERE Clause เพื่อกรองข้อมูลที่เราต้องการ ในบทนี้ เราจะมาเรียนรู้วิธีการแก้ไขข้อมูลที่มีอยู่ในตารางแล้ว ด้วยคำสั่ง UPDATE
คำสั่ง UPDATE ใช้สำหรับเปลี่ยนแปลงค่าในคอลัมน์ของแถว (row) ที่ตรงตามเงื่อนไขที่เรากำหนดไว้
รูปแบบคำสั่ง UPDATE
รูปแบบพื้นฐานของคำสั่ง UPDATE คือ:
UPDATE table_name
SET column_name1 = value1, column_name2 = value2, ...
WHERE condition;
โดย:
UPDATE table_name: ระบุตารางที่เราต้องการแก้ไขข้อมูลSET column_name1 = value1, column_name2 = value2, ...: ระบุคอลัมน์ที่เราต้องการแก้ไข และค่าใหม่ที่ต้องการกำหนดให้กับคอลัมน์นั้นWHERE condition: ระบุเงื่อนไขที่ใช้ในการเลือกแถวที่เราต้องการแก้ไข (สำคัญมาก! หากไม่ใส่ จะแก้ไขทุกแถวในตาราง)
ตัวอย่างการใช้งาน UPDATE
สมมติว่าเรามีตารางชื่อ customers ที่มีโครงสร้างดังนี้:
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
email VARCHAR(100),
city VARCHAR(50)
);
INSERT INTO customers (customer_id, first_name, last_name, email, city) VALUES
(1, 'John', 'Doe', 'john.doe@example.com', 'New York'),
(2, 'Jane', 'Smith', 'jane.smith@example.com', 'Los Angeles'),
(3, 'Peter', 'Jones', 'peter.jones@example.com', 'Chicago');
ตัวอย่างที่ 1: เปลี่ยนชื่อเมืองของ John Doe
ถ้าเราต้องการเปลี่ยนชื่อเมืองของ John Doe จาก 'New York' เป็น 'Brooklyn' เราสามารถใช้คำสั่ง UPDATE ดังนี้:
UPDATE customers
SET city = 'Brooklyn'
WHERE customer_id = 1;
คำสั่งนี้จะทำการเปลี่ยนค่าในคอลัมน์ city เป็น 'Brooklyn' เฉพาะแถวที่ customer_id เท่ากับ 1 เท่านั้น
หลังจากรันคำสั่งนี้แล้ว หากเรา SELECT ข้อมูลจากตาราง customers เราจะเห็นว่าข้อมูลของ John Doe ได้ถูกแก้ไขแล้ว:
SELECT * FROM customers;
ผลลัพธ์:
+-------------+------------+-----------+-------------------------+----------+
| customer_id | first_name | last_name | email | city |
+-------------+------------+-----------+-------------------------+----------+
| 1 | John | Doe | john.doe@example.com | Brooklyn |
| 2 | Jane | Smith | jane.smith@example.com | Los Angeles|
| 3 | Peter | Jones | peter.jones@example.com | Chicago |
+-------------+------------+-----------+-------------------------+----------+
ตัวอย่างที่ 2: เปลี่ยนอีเมลและชื่อเมืองของ Jane Smith
เราสามารถแก้ไขหลายคอลัมน์พร้อมกันได้ โดยการคั่นด้วยเครื่องหมายคอมม่า (,) ตัวอย่างเช่น ถ้าเราต้องการเปลี่ยนอีเมลของ Jane Smith เป็น 'jane.s@example.com' และชื่อเมืองเป็น 'San Francisco' เราสามารถใช้คำสั่ง UPDATE ดังนี้:
UPDATE customers
SET email = 'jane.s@example.com', city = 'San Francisco'
WHERE customer_id = 2;
หลังจากรันคำสั่งนี้แล้ว หากเรา SELECT ข้อมูลจากตาราง customers เราจะเห็นว่าข้อมูลของ Jane Smith ได้ถูกแก้ไขแล้ว:
SELECT * FROM customers;
ผลลัพธ์:
+-------------+------------+-----------+-----------------------+---------------+
| customer_id | first_name | last_name | email | city |
+-------------+------------+-----------+-----------------------+---------------+
| 1 | John | Doe | john.doe@example.com | Brooklyn |
| 2 | Jane | Smith | jane.s@example.com | San Francisco |
| 3 | Peter | Jones | peter.jones@example.com | Chicago |
+-------------+------------+-----------+-----------------------+---------------+
ตัวอย่างที่ 3: เปลี่ยนชื่อเมืองของทุกคนที่อาศัยอยู่ใน 'Chicago' เป็น 'Naperville'
เราสามารถใช้ WHERE Clause ที่ซับซ้อนขึ้นได้ ตัวอย่างเช่น ถ้าเราต้องการเปลี่ยนชื่อเมืองของทุกคนที่อาศัยอยู่ใน 'Chicago' เป็น 'Naperville' เราสามารถใช้คำสั่ง UPDATE ดังนี้:
UPDATE customers
SET city = 'Naperville'
WHERE city = 'Chicago';
หลังจากรันคำสั่งนี้แล้ว หากเรา SELECT ข้อมูลจากตาราง customers เราจะเห็นว่าข้อมูลของ Peter Jones ได้ถูกแก้ไขแล้ว:
SELECT * FROM customers;
ผลลัพธ์:
+-------------+------------+-----------+-----------------------+---------------+
| customer_id | first_name | last_name | email | city |
+-------------+------------+-----------+-----------------------+---------------+
| 1 | John | Doe | john.doe@example.com | Brooklyn |
| 2 | Jane | Smith | jane.s@example.com | San Francisco |
| 3 | Peter | Jones | peter.jones@example.com | Naperville |
+-------------+------------+-----------+-----------------------+---------------+
ข้อควรระวังในการใช้ UPDATE
สิ่งสำคัญที่สุดในการใช้คำสั่ง UPDATE คือการระบุ WHERE Clause เสมอ หากไม่ระบุ WHERE Clause คำสั่ง UPDATE จะทำการแก้ไขข้อมูลในทุกแถวของตาราง ซึ่งอาจทำให้ข้อมูลเสียหายได้
ตัวอย่างเช่น หากเราเผลอพิมพ์คำสั่งดังนี้:
UPDATE customers
SET city = 'Unknown';
คำสั่งนี้จะทำการเปลี่ยนชื่อเมืองของลูกค้าทุกคนในตาราง customers เป็น 'Unknown' ซึ่งอาจไม่ใช่สิ่งที่เราต้องการ
สรุป
ในบทนี้ เราได้เรียนรู้วิธีการแก้ไขข้อมูลในตาราง MySQL ด้วยคำสั่ง UPDATE เราได้เรียนรู้รูปแบบคำสั่งพื้นฐาน วิธีการแก้ไขหลายคอลัมน์พร้อมกัน และความสำคัญของการใช้ WHERE Clause เพื่อป้องกันการแก้ไขข้อมูลที่ไม่ต้องการ ในบทเรียนถัดไป เราจะเรียนรู้วิธีการลบข้อมูลออกจากตารางด้วยคำสั่ง DELETE