EP06: ชุดคำสั่งพื้นฐานของ MySQL
June 27, 2568 June 27, 2025
MySQL ใช้ภาษา SQL (Structured Query Language) ในการจัดการฐานข้อมูล ซึ่งสามารถแบ่งชุดคำสั่งหลักๆ ได้เป็น 4 ประเภทดังนี้:
DDL (Data Definition Language) : ภาษาสำหรับนิยามข้อมูล – ใช้สร้าง, แก้ไข, และลบโครงสร้างของฐานข้อมูล
DML (Data Manipulation Language) : ภาษาสำหรับจัดการข้อมูล – ใช้เพิ่ม, แก้ไข, ลบ, และเรียกดูข้อมูลภายในตาราง
DCL (Data Control Language) : ภาษาสำหรับควบคุมข้อมูล – ใช้กำหนดสิทธิ์การเข้าถึงข้อมูล
TCL (Transaction Control Language) : ภาษาสำหรับควบคุมธุรกรรม – ใช้จัดการการเปลี่ยนแปลงข้อมูล
1. DDL (Data Definition Language)
ใช้สำหรับสร้างและจัดการโครงสร้างของอ็อบเจกต์ในฐานข้อมูล เช่น ตาราง (Table), ดัชนี (Index)
คำสั่ง คำอธิบาย ตัวอย่างการใช้งาน CREATE
สร้างอ็อบเจกต์ใหม่ในฐานข้อมูล เช่น ฐานข้อมูล (DATABASE) หรือ ตาราง (TABLE) สร้างฐานข้อมูล: CREATE DATABASE my_store;
สร้างตาราง: CREATE TABLE products (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL,price DECIMAL(10, 2), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
ALTER
แก้ไขโครงสร้างของตารางที่มีอยู่แล้ว เช่น การเพิ่ม/ลบ/แก้ไขคอลัมน์ เพิ่มคอลัมน์: ALTER TABLE products ADD COLUMN stock INT;
แก้ไขประเภทข้อมูลคอลัมน์: ALTER TABLE products MODIFY COLUMN name VARCHAR(150);
ลบคอลัมน์: ALTER TABLE products DROP COLUMN created_at;
DROP
ลบอ็อบเจกต์ออกจากฐานข้อมูลอย่างถาวร (ไม่สามารถกู้คืนได้) ลบตาราง: DROP TABLE products;
ลบฐานข้อมูล: DROP DATABASE my_store;
ข้อควรระวัง: คำสั่งนี้จะลบทั้งโครงสร้างและข้อมูลทั้งหมดอย่างถาวรTRUNCATE
ลบข้อมูลทั้งหมดในตารางออกไปอย่างรวดเร็ว แต่ยังคงโครงสร้างตารางไว้ TRUNCATE TABLE products;
หมายเหตุ: TRUNCATE
เร็วกว่า DELETE
ที่ไม่มี WHERE
clause เพราะไม่บันทึกการลบทีละแถว
2. DML (Data Manipulation Language)
ใช้สำหรับจัดการกับข้อมูลที่อยู่ภายในตาราง
คำสั่ง คำอธิบาย ตัวอย่างการใช้งาน SELECT
ดึงหรือค้นหาข้อมูลจากตาราง ดึงทุกคอลัมน์จากตาราง: SELECT * FROM products;
ดึงบางคอลัมน์: SELECT name, price FROM products;
ดึงข้อมูลแบบมีเงื่อนไข: SELECT * FROM products WHERE price > 500;
ดึงและจัดเรียงข้อมูล: SELECT * FROM products ORDER BY name ASC;
INSERT INTO
เพิ่มข้อมูลแถวใหม่ (Record) เข้าไปในตาราง ระบุชื่อคอลัมน์: INSERT INTO products (name, price, stock) VALUES ('Laptop', 25000.00, 10)
;ไม่ระบุชื่อคอลัมน์ (ต้องใส่ข้อมูลครบทุกคอลัมน์และเรียงลำดับถูกต้อง): INSERT INTO products VALUES (2, 'Mouse', 450.00, 50);
UPDATE
แก้ไขข้อมูลที่มีอยู่แล้วในตาราง UPDATE employees SET position =
‘รองหัวหน้าแผนกซ่อมบำรุง' WHERE employee_id = 301050001;
UPDATE employees SET position =
‘เมียรองหัวหน้าแผนกซ่อมบำรุง’ WHERE employee_id = 301050004;
ข้อควรระวัง: หากไม่ระบุ WHERE
clause ข้อมูลในคอลัมน์ที่ระบุจะถูกอัปเดตทั้งหมดทุกแถว!DELETE
ลบข้อมูลแถวออกจากตาราง DELETE FROM products WHERE id = 2;
ข้อควรระวัง: หากไม่ระบุ WHERE
clause ข้อมูลทั้งหมดในตารางจะถูกลบ!
3. DCL (Data Control Language)
ใช้สำหรับจัดการสิทธิ์การเข้าถึงฐานข้อมูลของผู้ใช้ (User)
คำสั่ง คำอธิบาย ตัวอย่างการใช้งาน GRANT
ให้สิทธิ์ผู้ใช้ในการเข้าถึงหรือจัดการฐานข้อมูล ให้สิทธิ์ SELECT
และ INSERT
บนตาราง products
แก่ผู้ใช้ john
: GRANT SELECT, INSERT ON my_store.products TO 'john'@'localhost';
ให้สิทธิ์ทั้งหมดบนทุกตารางในฐานข้อมูล my_store
: GRANT ALL PRIVILEGES ON my_store.* TO 'admin'@'localhost';
REVOKE
ยกเลิกสิทธิ์ที่เคยให้ไปแล้ว ยกเลิกสิทธิ์ INSERT
จากผู้ใช้ john
: REVOKE INSERT ON my_store.products FROM 'john'@'localhost';
4. TCL (Transaction Control Language)
ใช้สำหรับจัดการกลุ่มของคำสั่ง DML ให้ทำงานเป็นหน่วยเดียวกัน (Transaction) เพื่อรับประกันความถูกต้องของข้อมูล
คำสั่ง คำอธิบาย ตัวอย่างการใช้งาน COMMIT
บันทึกการเปลี่ยนแปลงข้อมูลทั้งหมดที่ทำใน Transaction นั้นอย่างถาวร START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
ROLLBACK
ยกเลิกการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นใน Transaction ปัจจุบัน START TRANSACTION;
UPDATE products SET stock = 5 WHERE id = 1;
-- ตรวจสอบแล้วพบว่าทำผิด
ROLLBACK;
SAVEPOINT
กำหนดจุดบันทึกภายใน Transaction เพื่อให้สามารถย้อนกลับมาที่จุดนั้นได้ START TRANSACTION;
INSERT INTO orders (customer_id, amount) VALUES (101, 2000);
SAVEPOINT point1;
INSERT INTO order_details (order_id, product_id) VALUES (LAST_INSERT_ID(), 5);
-- หากเกิดข้อผิดพลาด สามารถย้อนกลับไปที่ savepoint ได้
ROLLBACK TO SAVEPOINT point1;