Skip to content

SQL-5.1 DML Commands

SELECT อ่านข้อมูล แต่ DML (Data Manipulation Language) เปลี่ยนแปลงข้อมูล — INSERT เพิ่ม, UPDATE แก้, DELETE ลบ กฎข้อเดียว: เขียน WHERE ก่อนเสมอ

INSERT — เพิ่มข้อมูล

Section titled “INSERT — เพิ่มข้อมูล”
-- เพิ่มนักเรียน 1 คน
INSERT INTO students (student_id, name, email)
VALUES ('STD005', 'ธนา', 'thana@mail.com');
-- เพิ่มหลายคนพร้อมกัน
INSERT INTO students (student_id, name, email) VALUES
('STD006', 'ปิ่น', 'pin@mail.com'),
('STD007', 'แก้ว', 'kaew@mail.com'),
('STD008', 'โอม', 'ohm@mail.com');
-- ตรวจสอบ
SELECT * FROM students WHERE student_id IN ('STD005','STD006','STD007','STD008');

UPDATE — แก้ไขข้อมูล

Section titled “UPDATE — แก้ไขข้อมูล”
-- ⚠️ กฎ Safety: เขียน WHERE ก่อน แล้วค่อยเพิ่ม SET
-- ขั้น 1: SELECT ก่อน เพื่อดูว่าจะแก้แถวไหน
SELECT * FROM students WHERE student_id = 'STD001';
-- ขั้น 2: พอมั่นใจแล้ว ค่อย UPDATE
UPDATE students
SET email = 'somchai_new@mail.com'
WHERE student_id = 'STD001';
-- UPDATE หลายคอลัมน์
UPDATE students
SET name = 'สมชาย ใหม่',
email = 'somchai2@mail.com'
WHERE student_id = 'STD001';

Safety Pattern:

-- 1. SELECT ก่อนเสมอ
SELECT * FROM students WHERE student_id = 'STD001';
-- 2. ดูผลลัพธ์ — ใช่แถวที่ต้องการ?
-- 3. ค่อยเปลี่ยน SELECT เป็น UPDATE ... SET ...
-- ⚠️ กฎเดียวกัน: SELECT ก่อน DELETE เสมอ
-- ขั้น 1: ดูก่อน
SELECT * FROM students WHERE student_id = 'STD008';
-- ขั้น 2: ค่อยลบ
DELETE FROM students
WHERE student_id = 'STD008';
-- ลบหลายแถว
DELETE FROM students
WHERE student_id IN ('STD006', 'STD007');
-- ลบด้วยเงื่อนไข
DELETE FROM enrollments
WHERE enrolled_on < '2025-01-01';

Safety Checklist:

  1. SELECT COUNT(*) ... WHERE ... — ดูจำนวนแถวก่อน
  2. BEGIN; — เริ่ม transaction
  3. DELETE ... WHERE ... — ลบ
  4. SELECT COUNT(*) — ตรวจสอบ
  5. COMMIT; หรือ ROLLBACK; — ยืนยัน หรือ ยกเลิก
กฎทำไม
เขียน WHERE ก่อน SET/DELETEป้องกันแก้/ลบทุกแถว
SELECT ก่อน UPDATE/DELETEดูว่าจะกระทบแถวไหน
ใช้ Transaction (BEGIN/COMMIT)ยกเลิกได้ถ้าทำผิด
ระบุชื่อ column ใน INSERTป้องกัน column ลำดับเปลี่ยน