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');ใน Sheets การ INSERT คือการพิมพ์ข้อมูลลงในแถวใหม่ — ง่ายที่สุด แต่ไม่มี validation อัตโนมัติ
import pandas as pd
new_row = pd.DataFrame([{ 'student_id': 'STD005', 'name': 'ธนา', 'email': 'thana@mail.com'}])df = pd.concat([df, new_row], ignore_index=True)// ใน C, INSERT = เพิ่มข้อมูลลงใน arraystudents[count] = "STD005";names[count] = "ธนา";count++;// ต้องเช็คว่า array ไม่เต็มก่อน!UPDATE — แก้ไขข้อมูล
Section titled “UPDATE — แก้ไขข้อมูล”-- ⚠️ กฎ Safety: เขียน WHERE ก่อน แล้วค่อยเพิ่ม SET
-- ขั้น 1: SELECT ก่อน เพื่อดูว่าจะแก้แถวไหนSELECT * FROM students WHERE student_id = 'STD001';
-- ขั้น 2: พอมั่นใจแล้ว ค่อย UPDATEUPDATE studentsSET email = 'somchai_new@mail.com'WHERE student_id = 'STD001';
-- UPDATE หลายคอลัมน์UPDATE studentsSET 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 ...ใน Sheets การ UPDATE คือการพิมพ์ทับข้อมูลเดิม — ไม่มี WHERE, ไม่มี undo log
# UPDATE = loc/ilocdf.loc[df['student_id'] == 'STD001', 'email'] = 'new@mail.com'// UPDATE = overwrite ค่าใน arrayfor (int i = 0; i < count; i++) { if (strcmp(ids[i], "STD001") == 0) { emails[i] = "new@mail.com"; }}DELETE — ลบข้อมูล
Section titled “DELETE — ลบข้อมูล”-- ⚠️ กฎเดียวกัน: SELECT ก่อน DELETE เสมอ
-- ขั้น 1: ดูก่อนSELECT * FROM students WHERE student_id = 'STD008';
-- ขั้น 2: ค่อยลบDELETE FROM studentsWHERE student_id = 'STD008';
-- ลบหลายแถวDELETE FROM studentsWHERE student_id IN ('STD006', 'STD007');
-- ลบด้วยเงื่อนไขDELETE FROM enrollmentsWHERE enrolled_on < '2025-01-01';Safety Checklist:
SELECT COUNT(*) ... WHERE ...— ดูจำนวนแถวก่อนBEGIN;— เริ่ม transactionDELETE ... WHERE ...— ลบSELECT COUNT(*)— ตรวจสอบCOMMIT;หรือROLLBACK;— ยืนยัน หรือ ยกเลิก
ใน Sheets: คลิกขวา → Delete row — ไม่มี transaction, ไม่มี rollback (นอกจาก Ctrl+Z)
# DELETE = drop rowsdf = df[df['student_id'] != 'STD008']# หรือdf = df.drop(df[df['student_id'] == 'STD008'].index)// DELETE ใน array = shift elements ลง// ซับซ้อนกว่า SQL มาก — ต้อง manage memory เองสรุป Safety Rules
Section titled “สรุป Safety Rules”| กฎ | ทำไม |
|---|---|
| เขียน WHERE ก่อน SET/DELETE | ป้องกันแก้/ลบทุกแถว |
| SELECT ก่อน UPDATE/DELETE | ดูว่าจะกระทบแถวไหน |
| ใช้ Transaction (BEGIN/COMMIT) | ยกเลิกได้ถ้าทำผิด |
| ระบุชื่อ column ใน INSERT | ป้องกัน column ลำดับเปลี่ยน |