SQL Beyond SELECT: ทำความเข้าใจ SQL Sublanguages ผ่านซูเปอร์มาเก็ต
เจาะลึก 5 กลุ่มคำสั่ง SQL ทั้ง DDL, DML, DQL, DCL และ TCL ผ่านตัวจำลอง Sunrise Supermarket พร้อมโค้ดตัวอย่างและการจัดการฐานข้อมูลจริง

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- SQL ถูกแบ่งกลุ่มคำสั่งตามประเภทการทำงานเรียกว่า SQL Sublanguages
- ใช้ Sunrise Supermarket เป็นตัวอย่างจำลองการจัดการฐานข้อมูลจริง
- ครอบคลุมกลุ่มคำสั่งสำคัญได้แก่ DDL, DML, DQL, DCL และ TCL
- ช่วยให้การเขียนโค้ดและการดูแลฐานข้อมูลมีระเบียบและน่าเชื่อถือขึ้น
Structured Query Language (SQL) มีไวยากรณ์และความหมายเฉพาะตัว เพื่อให้เข้าใจและใช้งานได้ง่ายขึ้น คำสั่ง SQL จึงถูกจัดกลุ่มตามประเภทของการปฏิบัติงานบนฐานข้อมูล กลุ่มคำสั่งเหล่านี้มักถูกเรียกว่า SQL Sublanguages ซึ่งประกอบด้วย DDL, DML, DQL, DCL และ TCL โดยในบทความนี้เราจะใช้ร้านซูเปอร์มาเก็ตสมมติอย่าง Sunrise Supermarket เป็นตัวอย่างต่อเนื่องเพื่อสำรวจการทำงานของแต่ละกลุ่มคำสั่งและการประยุกต์ใช้ในการจัดการฐานข้อมูลจริง
ลองนึกภาพการเดินเข้าไปใน Sunrise Supermarket แล้วสังเกตว่าสินค้าถูกจัดหมวดหมู่ ชั้นวางถูกจัดเรียง ราคาสินค้าได้รับการอัปเดต ยอดขายถูกบันทึก และพนักงานแต่ละคนมีสิทธิ์เข้าถึงข้อมูลที่แตกต่างกันตามหน้าที่ เมื่อมีสินค้าใหม่เข้ามาต้องมีคนเพิ่มข้อมูลลงในระบบ เมื่อราคาเปลี่ยนฐานข้อมูลก็ต้องปรับปรุงตาม เมื่อผู้จัดการต้องการรู้ว่าสินค้าไหนขายดีที่สุดก็ต้องดึงข้อมูลออกมา และเมื่อแคชเชียร์ล็อกอินเข้าระบบ ควรจะมีสิทธิ์เข้าถึงเฉพาะข้อมูลที่เกี่ยวข้องกับบทบาทหน้าที่ของตนเองเท่านั้น

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
การแบ่งคำสั่ง SQL ออกเป็นกลุ่มย่อยหรือ Sublanguages ถือเป็นแนวทางสถาปัตยกรรมที่ช่วยแยกความรับผิดชอบ (Separation of Concerns) ให้ชัดเจน คล้ายกับการแบ่งเลเยอร์ในซอฟต์แวร์วิศวกรรมทั่วไป ช่วยให้นักพัฒนาและผู้ดูแลระบบสามารถจัดการโครงสร้างข้อมูล (DDL) จัดการข้อมูลภายใน (DML) และควบคุมความปลอดภัยหรือธุรกรรมได้อย่างเป็นระบบ ไม่ปะปนกัน
ในบางครั้งเหตุการณ์หลายอย่างจำเป็นต้องเกิดขึ้นพร้อมกัน สมมติว่าลูกค้าซื้อขวดสุดท้ายของสินค้าชนิดหนึ่ง ระบบต้องบันทึกการขายและลดจำนวนสต็อกที่มีอยู่พร้อมกัน จะเกิดอะไรขึ้นหากบันทึกการขายสำเร็จแต่อัปเดตสต็อกไม่สำเร็จ เพื่อจัดการธุรกรรมเหล่านี้อย่างน่าเชื่อถือ SQL จึงจัดกลุ่มคำสั่งที่มีความรับผิดชอบเกี่ยวข้องกันไว้ด้วยกัน
กลุ่มแรกคือ Data Definition Language หรือ DDL ทำหน้าที่จัดการโครงสร้างของฐานข้อมูล สร้างออบเจ็กต์ เช่น สกีมา ตาราง วิว และดัชนี แก้ไขโครงสร้าง และลบทิ้งเมื่อไม่ต้องการแล้ว ที่ Sunrise Supermarket ก่อนที่จะต้อนรับลูกค้ารายแรก พนักงานต้องจัดชั้นวางและบันทึกข้อมูลสินค้า เราเริ่มต้นด้วยการสร้างตารางโดยใช้คำสั่ง CREATE TABLE และกำหนดกฎเกณฑ์ด้วยข้อจำกัดอย่าง NOT NULL
CREATE TABLE products (
product_id INT PRIMARY KEY,
product_name VARCHAR(100) NOT NULL,
category VARCHAR(50),
price DECIMAL(10,2) NOT NULL,
stock_quantity INT NOT NULL DEFAULT 0,
supplier VARCHAR(100)
);เมื่อ Sunrise Supermarket เติบโตขึ้นและความต้องการเปลี่ยนแปลงไป เราสามารถปรับเปลี่ยนโครงสร้างตารางที่มีอยู่แล้วด้วย ALTER TABLE เช่น การเพิ่มคอลัมน์วันหมดอายุ การเปลี่ยนชื่อคอลัมน์ด้วย RENAME COLUMN หรือการลบคอลัมน์ที่ไม่จำเป็นออกด้วย DROP COLUMN นอกจากนี้ยังมีการใช้คำสั่ง DROP TABLE สำหรับลบตารางชั่วคราว และ TRUNCATE TABLE เพื่อล้างข้อมูลทั้งหมดในตารางแต่ยังคงโครงสร้างไว้
กลุ่มถัดมาคือ Data Manipulation Language หรือ DML ซึ่งใช้ในการจัดการข้อมูลภายในตาราง ไม่ว่าจะเป็นการเพิ่มสินค้าใหม่ด้วย INSERT INTO การอัปเดตราคาหรือผู้จัดจำหน่ายด้วย UPDATE ไปจนถึงการลบเรกคอร์ดสินค้าที่เลิกขายด้วย DELETE FROM โดยจำเป็นต้องระบุเงื่อนไข WHERE ให้ชัดเจนเพื่อป้องกันการลบข้อมูลทั้งหมดในตารางโดยไม่ตั้งใจ
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น