ส่วนที่ 1: การเพิ่ม ลบ และแก้ไขข้อมูลด้วย DML
คำสั่ง INSERT INTO: การเพิ่มข้อมูลใหม่
- วัตถุประสงค์: ใช้สำหรับเพิ่มแถวข้อมูล (Record) ใหม่เข้าไปในตาราง
- รูปแบบที่ 1 (ระบุชื่อคอลัมน์ – แนะนำให้ใช้):SQL
INSERT INTO ชื่อตาราง (คอลัมน์1, คอลัมน์2, ...) VALUES (ค่าข้อมูล1, ค่าข้อมูล2, ...);- ข้อดี: ปลอดภัย แม้ลำดับคอลัมน์ในตารางจริงจะเปลี่ยนไปในอนาคต โค้ดก็ยังทำงานถูกต้อง
- รูปแบบที่ 2 (ไม่ระบุชื่อคอลัมน์ – สำหรับความรวดเร็ว):SQL
INSERT INTO ชื่อตาราง VALUES (ค่าข้อมูล1, ค่าข้อมูล2, ...);- ข้อควรระวัง: ต้องใส่ค่าข้อมูลให้ ครบทุกคอลัมน์ และต้อง เรียงตามลำดับ ของคอลัมน์ในตารางจริงเป๊ะๆ
- ตัวอย่าง: การเพิ่มข้อมูลพนักงานใหม่เข้าสู่ระบบ
คำสั่ง UPDATE: การแก้ไขข้อมูลเดิม
- วัตถุประสงค์: ใช้สำหรับแก้ไขค่าในคอลัมน์ของแถวข้อมูลที่มีอยู่แล้ว
- รูปแบบคำสั่ง:SQL
UPDATE ชื่อตาราง SET คอลัมน์1 = ค่าใหม่1, คอลัมน์2 = ค่าใหม่2, ... WHERE เงื่อนไข; - หัวใจสำคัญ: The
WHEREClauseWHEREคือ “เข็มขัดนิรภัย” ของคุณ มันทำหน้าที่ระบุว่าจะแก้ไข แถวไหน- คำเตือนที่ต้องย้ำ:ถ้าลืม
WHEREจะเกิดอะไรขึ้น?- ต้องเน้นย้ำอย่างจริงจังว่า “คำสั่ง
UPDATEจะถูกกระทำกับข้อมูลทุกแถวในตารางนั้น!” - ยกตัวอย่างที่น่ากลัว:
UPDATE employees SET position = 'นักศึกษาฝึกงาน';(พนักงานทุกคนในบริษัทจะถูกเปลี่ยนตำแหน่งเป็นนักศึกษาฝึกงานทันที)
- ต้องเน้นย้ำอย่างจริงจังว่า “คำสั่ง
- ตัวอย่าง: การเปลี่ยนสถานะใบแจ้งซ่อมจาก ‘แจ้งซ่อม’ เป็น ‘กำลังดำเนินการ’
คำสั่ง DELETE FROM: การลบข้อมูล
- วัตถุประสงค์: ใช้สำหรับลบแถวข้อมูลทั้งแถวออกจากตาราง
- รูปแบบคำสั่ง:SQL
DELETE FROM ชื่อตาราง WHERE เงื่อนไข; - หัวใจสำคัญและคำเตือนที่อันตรายที่สุด:
- ย้ำอีกครั้งถึงความสำคัญของ
WHEREclause - คำเตือนขั้นสูงสุด: ถ้า
UPDATEโดยไม่มีWHEREว่าแย่แล้วDELETEโดยไม่มีWHEREคือหายนะ! - “มันจะลบข้อมูลทั้งหมดออกจากตารางทันที ไม่มีการถามซ้ำ และส่วนใหญ่กู้คืนไม่ได้!”
- ย้ำอีกครั้งถึงความสำคัญของ
- ตัวอย่าง: การลบใบแจ้งซ่อมที่สร้างขึ้นมาผิดพลาด
สรุปและปูทางสู่ภาคปฏิบัติ
- ทบทวน 3 คำสั่ง:
INSERT(เพิ่ม),UPDATE(แก้),DELETE(ลบ) - ท่องกฎทอง: “Always use
WHEREwithUPDATEandDELETE“ (ใช้WHEREกับUPDATEและDELETEเสมอ)
ส่วนที่ 2: การฝึกปฏิบัติ
หัวข้อ: Workshop: จำลองการทำงาน 1 วันในโรงงานด้วย SQL-DML
เครื่องมือ: เชื่อมต่อกับฐานข้อมูล
เตรียมความพร้อมและทบทวนข้อมูลปัจจุบัน
- ให้นักศึกษาทุกคนรันคำสั่ง
SELECT * FROM ...;เพื่อดูข้อมูลล่าสุดในตารางทั้ง 3 (employees,machines,maintenance_tickets) - อาจารย์แจ้งสถานการณ์จำลองของวันนี้: “วันนี้เป็นวันศุกร์ที่ 27 มิถุนายน 2568 มีหลายเหตุการณ์เกิดขึ้นในโรงงาน ให้ทุกคนช่วยกันอัปเดตฐานข้อมูลให้เป็นปัจจุบัน”
ส่วนที่ 1: การเพิ่มข้อมูลใหม่ (INSERT Practice)
- สถานการณ์ที่ 1: รับพนักงานใหม่
- ภารกิจ: เพิ่มข้อมูลพนักงานชื่อ ‘มานะ ใจดี’ ตำแหน่ง ‘ช่างเทคนิค’ รหัสพนักงาน
103 - ให้นักศึกษาเขียน:
- ภารกิจ: เพิ่มข้อมูลพนักงานชื่อ ‘มานะ ใจดี’ ตำแหน่ง ‘ช่างเทคนิค’ รหัสพนักงาน
INSERT INTO employees (employee_id, full_name, position) VALUES (103, 'มานะ ใจดี', 'ช่างเทคนิค');ตรวจสอบ: SELECT * FROM employees; เพื่อดูว่ามีพนักงานใหม่เพิ่มเข้ามาแล้ว
- สถานการณ์ที่ 2: ติดตั้งเครื่องจักรใหม่
- ภารกิจ: เพิ่มเครื่องจักร ‘Welding Robot’ รุ่น ‘Fanuc ArcMate 100iC’ ที่ตำแหน่ง ‘Line C’ รหัสเครื่องจักร
3 - ให้นักศึกษาเขียน:
- ภารกิจ: เพิ่มเครื่องจักร ‘Welding Robot’ รุ่น ‘Fanuc ArcMate 100iC’ ที่ตำแหน่ง ‘Line C’ รหัสเครื่องจักร
INSERT INTO machines (machine_id, machine_name, model, location) VALUES (3, 'Welding Robot', 'Fanuc ArcMate 100iC', 'Line C');ตรวจสอบ: SELECT * FROM machines;
- สถานการณ์ที่ 3: พนักงานใหม่แจ้งซ่อม
- ภารกิจ: ‘มานะ ใจดี’ (รหัส
103) พบว่าเครื่องจักรใหม่ (รหัส3) มีปัญหา ‘Calibration Error’ ให้สร้างใบแจ้งซ่อมใหม่ รหัส202403ณ วันที่และเวลาปัจจุบัน - ให้นักศึกษาเขียน:
- ภารกิจ: ‘มานะ ใจดี’ (รหัส
INSERT INTO maintenance_tickets (ticket_id, report_date, problem_description, status, machine_id_fk, employee_id_fk) VALUES (202403, '2025-06-27 10:00:00', 'Calibration Error', 'แจ้งซ่อม', 3, 103)ตรวจสอบ: SELECT * FROM maintenance_tickets;
ส่วนที่ 2: การอัปเดตสถานะและแก้ไขข้อมูล (UPDATE Practice)
- สถานการณ์ที่ 4: เริ่มดำเนินการซ่อม
- ภารกิจ: ปัญหาของเครื่อง ‘CNC Lathe Machine 01’ (รหัสใบแจ้งซ่อม
202401) ได้เริ่มดำเนินการซ่อมแล้ว ให้เปลี่ยนสถานะ (status) เป็น ‘กำลังดำเนินการ’ - ให้นักศึกษาเขียน:
- ภารกิจ: ปัญหาของเครื่อง ‘CNC Lathe Machine 01’ (รหัสใบแจ้งซ่อม
UPDATE maintenance_tickets SET status = 'กำลังดำเนินการ' WHERE ticket_id = 202401;ตรวจสอบ: SELECT * FROM maintenance_tickets WHERE ticket_id = 202401;
- สถานการณ์ที่ 5: ซ่อมเสร็จสิ้น
- ภารกิจ: ปัญหา ‘ระบบไฮดรอลิกรั่ว’ ของเครื่องจักรหมายเลข 2 (รหัสใบแจ้งซ่อม
202402) ได้รับการแก้ไขเรียบร้อยแล้ว ให้เปลี่ยนสถานะเป็น ‘ซ่อมเสร็จสิ้น’ - ให้นักศึกษาเขียน:
- ภารกิจ: ปัญหา ‘ระบบไฮดรอลิกรั่ว’ ของเครื่องจักรหมายเลข 2 (รหัสใบแจ้งซ่อม
UPDATE maintenance_tickets SET status = 'ซ่อมเสร็จสิ้น' WHERE ticket_id = 202402;ตรวจสอบ: SELECT * FROM maintenance_tickets WHERE ticket_id = 202402;
ส่วนที่ 3: การลบข้อมูลที่ผิดพลาด (DELETE Practice)
- สถานการณ์ที่ 6: สร้างใบแจ้งซ่อมซ้ำซ้อน
- ภารกิจ: สมมติว่ามีการแจ้งซ่อมผิดพลาด ให้เราสร้างข้อมูลผิดพลาดขึ้นมาก่อน
INSERT INTO maintenance_tickets (ticket_id, report_date, problem_description, status, machine_id_fk, employee_id_fk) VALUES (999, '2025-06-27 11:00:00', 'Test Delete - ข้อมูลซ้ำซ้อน', 'ผิดพลาด', 1, 101);ตรวจสอบ: SELECT * FROM maintenance_tickets WHERE ticket_id = 999;
- ภารกิจหลัก: ให้ลบใบแจ้งซ่อมรหัส
999ที่สร้างผิดพลาดนี้ทิ้งไป - ให้นักศึกษาเขียน:
DELETE FROM maintenance_tickets WHERE ticket_id = 999;ตรวจสอบ: SELECT * FROM maintenance_tickets; (จะพบว่าใบแจ้งซ่อมรหัส 999 หายไปแล้ว)
