MySQL อัปเดตแบบสอบถามพร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

MySQL คำสั่ง UPDATE ใช้สำหรับแก้ไขแถวที่มีอยู่แล้วในตาราง โดยเปลี่ยนฟิลด์เดียวหรือหลายฟิลด์ในคำสั่งเดียว เอกสารนี้จะอธิบายไวยากรณ์ของคำสั่ง UPDATE การกรองด้วยเงื่อนไข WHERE ตัวอย่างการใช้งานกับตารางสมาชิก และมาตรการป้องกันการอัปเดตข้อมูลจำนวนมากโดยไม่ตั้งใจ

  • ✏️ คำแถลงหลัก: คำสั่ง UPDATE `table_name` SET `column_name` = 'new_value' [WHERE condition] จะเขียนทับค่าในทุกแถวที่ตรงกับเงื่อนไขการกรอง
  • ⚠️ ละเว้นในกรณีที่: หากไม่มีเงื่อนไข WHERE คำสั่ง UPDATE จะเขียนทับคอลัมน์ในทุกแถวของตาราง
  • 🔢 การจัดรูปแบบค่า: ค่าข้อความและวันที่ต้องใช้เครื่องหมายอัญประกาศเดี่ยว ส่วนค่าตัวเลขไม่ต้องใช้ และวันที่ใช้รูปแบบ 'YYYY-MM-DD'
  • 🧩 หลายคอลัมน์: หากต้องการอัปเดตหลายฟิลด์ในคำสั่งเดียว ให้คั่นแต่ละงานด้วยเครื่องหมายจุลภาค
  • 🔍 ขั้นตอนการตรวจสอบ: เรียกใช้เงื่อนไข WHERE เป็นคำสั่ง SELECT ก่อน จากนั้นทำซ้ำอีกครั้งหลังจากคำสั่ง UPDATE เพื่อยืนยันค่าใหม่
  • 🛡️ โหมดอัปเดตอย่างปลอดภัย: MySQL Workbench จะปฏิเสธคำสั่ง UPDATE ใดๆ ที่เงื่อนไข WHERE ไม่ได้กรองข้อมูลตามคอลัมน์หลัก

แบบสอบถาม UPDATE คืออะไร?

การขอ อัพเดท MySQL คำสั่ง UPDATE ใช้สำหรับแก้ไขแถวในตาราง คำสั่ง UPDATE สามารถเปลี่ยนแปลงฟิลด์เดียวหรือหลายฟิลด์พร้อมกันได้ นอกจากนี้ยังสามารถใช้เพื่ออัปเดตข้อมูลในตารางได้อีกด้วย MySQL ตารางที่มีค่าดึงมาจากตารางอื่น

เหตุใดจึงใช้คำสั่ง UPDATE ใน MySQL?

ข้อมูลมักจะไม่ถูกต้องตลอดไป สมาชิกอาจเปลี่ยนหมายเลขโทรศัพท์ ราคาอาจเปลี่ยนแปลง และคำสั่งซื้ออาจเปลี่ยนสถานะจากรอดำเนินการเป็นจัดส่งแล้ว การลบแถวเก่าและแทรกแถวใหม่เข้าไปจะทำให้คีย์หลักและคีย์รองที่เกี่ยวข้องเสียหาย คำสั่ง UPDATE จะแก้ไขแถวในตำแหน่งเดิม ดังนั้นข้อมูลประจำตัวและความสัมพันธ์จึงยังคงอยู่แม้จะมีการเปลี่ยนแปลง

คำสั่ง UPDATE เป็นเครื่องมือที่เหมาะสมในทุกกรณี:

  • ค่าที่แสดงไม่ถูกต้องหรือล้าสมัย: แก้ไขชื่อที่สะกดผิดหรืออัปเดตหมายเลขติดต่อโดยไม่ต้องแก้ไขข้อมูลส่วนที่เหลือ
  • สถานะต้องมีการเปลี่ยนแปลงไปข้างหน้า: เปลี่ยนสถานะคำสั่งซื้อจาก “รอดำเนินการ” เป็น “จัดส่งแล้ว” โดยการแก้ไขคอลัมน์เดียว
  • หลายสาขาเปลี่ยนแปลงไปพร้อมกัน: คำสั่งเดียวสามารถกำหนดทั้งชื่อใหม่และที่อยู่ใหม่ได้ในขั้นตอนเดียวกัน
  • จำเป็นต้องมีการแก้ไขครั้งใหญ่: เงื่อนไข WHERE ที่ตรงกับหลายแถวจะใช้การแก้ไขเดียวกันกับทุกแถวพร้อมกัน

เนื่องจากคำสั่ง UPDATE ที่ไม่มีเงื่อนไข WHERE จะเขียนทับทุกแถว ตัวกรองจึงช่วยแยกการแก้ไขตามปกติออกจากการเขียนทับโดยไม่ได้ตั้งใจ

MySQL อัปเดตไวยากรณ์คำสั่ง

เมื่อกำหนดวัตถุประสงค์แล้ว ขั้นตอนต่อไปคือไวยากรณ์ รูปแบบพื้นฐานของคำสั่ง UPDATE คือ MySQL แสดงอยู่ด้านล่าง

UPDATE `table_name` SET `column_name` = 'new_value' [WHERE condition];

ที่นี่:

  • อัปเดต `table_name` เป็นคำสั่งที่บอก MySQL เพื่อแก้ไขข้อมูลในตาราง
  • SET `column_name` = 'new_value' ระบุชื่อและค่าของฟิลด์ที่จะได้รับผลกระทบจากคำสั่ง UPDATE เมื่อกำหนดค่า ข้อมูลประเภทสตริงต้องอยู่ในเครื่องหมายอัญประกาศเดี่ยว ค่าตัวเลขไม่จำเป็นต้องมีเครื่องหมายอัญประกาศ ค่าวันที่ต้องอยู่ในเครื่องหมายอัญประกาศเดี่ยวและอยู่ในรูปแบบ 'YYYY-MM-DD'
  • [เงื่อนไขอยู่ที่ไหน] เป็นตัวเลือกเสริม และสามารถใช้เพื่อกรองจำนวนแถวที่ได้รับผลกระทบจากคำสั่ง UPDATE รายการตัวเลือกทั้งหมดปรากฏอยู่ใน MySQL คู่มือคำสั่งอัปเดต.

ต่อไปนี้เราจะมาดูตัวอย่างการใช้งานจริงที่แสดงการอัปเดตข้อมูลในตารางสมาชิกกัน

อัปเดตใน MySQL ตัวอย่าง

สมมติว่าสมาชิกที่มีหมายเลขสมาชิก 1 และ 2 ต้องทำการอัปเดตข้อมูลในบันทึกของตนดังต่อไปนี้

หมายเลขสมาชิก จำเป็นต้องมีการอัปเดต
1 เปลี่ยนหมายเลขติดต่อจาก 999 เป็น 0759 253 532
2 เปลี่ยนชื่อเป็น Janet Smith Jones และอัปเดตที่อยู่เป็น Melrose 123

อัปเดตคอลัมน์เดียว

เราเริ่มจากหมายเลขสมาชิก 1 ก่อนทำการเปลี่ยนแปลงใดๆ โปรดดึงข้อมูลบันทึกนั้นมาก่อน

SELECT * FROM `members` WHERE `membership_number` = 1;

เมื่อดำเนินการสคริปต์ข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้

หมายเลขสมาชิก full_names เพศ วันเกิด ทางกายภาพ_ที่อยู่ ที่อยู่ไปรษณีย์ หมายเลขติดต่อ อีเมล
1 เจเน็ต โจนส์ หญิง 21-07-1980 ถนนสายแรก แปลงที่ 4 กระเป๋าส่วนตัว 999 janetjones@yagoo.cm

ตอนนี้เรามาอัปเดตหมายเลขติดต่อโดยใช้สคริปต์ที่แสดงด้านล่าง

UPDATE `members` SET `contact_number` = '0759 253 532' WHERE `membership_number` = 1;

การเรียกใช้สคริปต์ข้างต้นจะเปลี่ยนหมายเลขติดต่อจาก 999 เป็น 0759 253 532 สำหรับหมายเลขสมาชิก 1 การเรียกใช้คำสั่ง SELECT อีกครั้งจะยืนยันค่าใหม่

หมายเลขสมาชิก full_names เพศ วันเกิด ทางกายภาพ_ที่อยู่ ที่อยู่ไปรษณีย์ หมายเลขติดต่อ อีเมล
1 เจเน็ต โจนส์ หญิง 21-07-1980 ถนนสายแรก แปลงที่ 4 กระเป๋าส่วนตัว 0759 253 532 janetjones@yagoo.cm

อัปเดตหลายคอลัมน์

หมายเลขสมาชิก 2 จำเป็นต้องแก้ไขข้อมูลสองช่องพร้อมกัน นี่คือข้อมูลก่อนการอัปเดต

หมายเลขสมาชิก full_names เพศ วันเกิด ทางกายภาพ_ที่อยู่ ที่อยู่ไปรษณีย์ หมายเลขติดต่อ อีเมล
2 สมิธ โจนส์ หญิง 23-06-1980 ถนนพาร์ค NULL NULL jj@fstreet.com

สคริปต์ต่อไปนี้จะอัปเดตทั้งสองคอลัมน์ในคำสั่งเดียว โปรดสังเกตเครื่องหมายจุลภาคที่คั่นระหว่างการกำหนดค่าทั้งสอง

UPDATE `members` SET `full_names` = 'Janet Smith Jones', `physical_address` = 'Melrose 123' WHERE `membership_number` = 2;

การเรียกใช้สคริปต์ข้างต้นจะอัปเดตชื่อเต็มของสมาชิกหมายเลข 2 เป็น Janet Smith Jones และที่อยู่เป็น Melrose 123

หมายเลขสมาชิก full_names เพศ วันเกิด ทางกายภาพ_ที่อยู่ ที่อยู่ไปรษณีย์ หมายเลขติดต่อ อีเมล
2 เจเน็ต สมิธ โจนส์ หญิง 23-06-1980 เมลโรส 123 NULL NULL jj@fstreet.com

💡 เคล็ดลับ: "WHERE ข้อ" เป็นตัวจำกัดจำนวนแถวที่ได้รับผลกระทบจากคำสั่ง UPDATE หากละเว้นส่วนนี้ ทุกแถวในตารางจะถูกเขียนทับใหม่

คำถามที่พบบ่อย

MySQL ฟังก์ชันนี้จะส่งคืนค่า "จำนวนแถวที่ตรงกัน" และ "จำนวนแถวที่เปลี่ยนแปลง" จำนวนแถวที่ตรงกันจะแสดงจำนวนแถวที่ตรงกับเงื่อนไข WHERE ในขณะที่จำนวนแถวที่เปลี่ยนแปลงจะตัดแถวที่มีค่าใหม่เหมือนกับค่าเดิมออกไป

ใช่แล้ว รวมการอัปเดตเข้ากับ สมัคร และอ้างอิงตารางที่สองในส่วน SET เงื่อนไขการเชื่อมต่อจะตัดสินว่าแถวต้นทางใดจะส่งค่าใหม่ให้กับแถวปลายทางแต่ละแถว

ควรดำเนินการดังกล่าวภายในธุรกรรม การใช้คำสั่ง START TRANSACTION ตามด้วย ROLLBACK จะคืนค่าเดิม เมื่อการเปลี่ยนแปลงได้รับการยืนยันแล้ว จะสามารถกู้คืนข้อมูลก่อนหน้าได้ก็ต่อเมื่อใช้ข้อมูลสำรองเท่านั้น ดังนั้นควรทดสอบเงื่อนไข WHERE ด้วยคำสั่ง SELECT ก่อน

ใช่แล้ว ผู้ช่วย AI จะแปลงการเปลี่ยนแปลงที่อธิบายไว้เป็นไวยากรณ์ UPDATE และแนะนำเงื่อนไข WHERE ให้ ป้อนโครงสร้างตารางของคุณให้กับโมเดล จากนั้นตรวจสอบตัวกรองด้วยคำสั่ง SELECT ก่อนที่จะเรียกใช้คิวรีที่สร้างขึ้น

โมเดล AI ไม่สามารถมองเห็นข้อมูลแบบเรียลไทม์ของคุณได้ ดังนั้นเงื่อนไข WHERE ที่ผิดพลาดเพียงเล็กน้อยก็อาจเปลี่ยนแปลงข้อมูลหลายพันรายการโดยไม่แจ้งให้ทราบล่วงหน้าได้ Revตรวจสอบคำสั่งที่สร้างขึ้นทั้งหมด รันคำสั่งนั้นบนสำเนาทดสอบ และเก็บสำเนาสำรองที่อัปเดตอยู่เสมอ

สรุปโพสต์นี้ด้วย: