ฐานข้อมูลคือหัวใจของเว็บแอปเกือบทุกระบบ ใช้เก็บข้อมูลผู้ใช้ สินค้า คำสั่งซื้อ ฯลฯ อย่างเป็นระเบียบ MySQL เป็นระบบฐานข้อมูลยอดนิยมที่สุด บทความนี้จะสอนตั้งแต่แนวคิดจนเขียนคำสั่ง SQL จัดการข้อมูลได้จริง ═══════════════════════════════════════ 📌 1. ฐานข้อมูลและ MySQL คืออะไร ═══════════════════════════════════════ Database (ฐานข้อมูล) = ที่เก็บข้อมูลอย่างเป็นระบบ ค้นหา/แก้ไขได้ง่าย MySQL = ระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ยอดนิยม ใช้ภาษา SQL โครงสร้างแบบลำดับชั้น: • Database (ฐานข้อมูล) → เช่น "ร้านค้า" • Table (ตาราง) → เช่น "users", "products" • Column (คอลัมน์/ฟิลด์) → เช่น id, name, email • Row (แถว/เรคคอร์ด) → ข้อมูล 1 รายการ เปรียบเทียบ: Database = ตู้เอกสาร, Table = แฟ้ม, Row = แต่ละหน้ากระดาษ ═══════════════════════════════════════ 🔢 2. ชนิดข้อมูลที่ใช้บ่อย ═══════════════════════════════════════ • INT → จำนวนเต็ม (เช่น อายุ, จำนวน) • VARCHAR(n) → ข้อความสั้น กำหนดความยาว (เช่น ชื่อ อีเมล) • TEXT → ข้อความยาว (เช่น เนื้อหาบทความ) • DECIMAL(m,d) → ทศนิยม (เช่น ราคา 99.50) • DATE / DATETIME → วันที่ / วันที่+เวลา • BOOLEAN → จริง/เท็จ (0 หรือ 1) ═══════════════════════════════════════ 🏗️ 3. สร้างฐานข้อมูลและตาราง ═══════════════════════════════════════
sql
-- สร้างฐานข้อมูล
CREATE DATABASE shop;

-- เลือกใช้ฐานข้อมูล
USE shop;

-- สร้างตาราง users
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(150) UNIQUE,
    age INT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
• AUTO_INCREMENT → เพิ่มเลขอัตโนมัติ (1, 2, 3...) • PRIMARY KEY → คีย์หลัก ระบุแถวไม่ซ้ำ • NOT NULL → ห้ามเว้นว่าง • UNIQUE → ห้ามค่าซ้ำ ═══════════════════════════════════════ ➕ 4. INSERT — เพิ่มข้อมูล ═══════════════════════════════════════
sql
-- เพิ่ม 1 แถว
INSERT INTO users (name, email, age)
VALUES ('สมชาย', 'somchai@mail.com', 25);

-- เพิ่มหลายแถวพร้อมกัน
INSERT INTO users (name, email, age) VALUES
('สมหญิง', 'somying@mail.com', 23),
('สมศักดิ์', 'somsak@mail.com', 30);
═══════════════════════════════════════ 🔍 5. SELECT — ดึงข้อมูล (สำคัญที่สุด) ═══════════════════════════════════════
sql
-- ดึงทุกคอลัมน์ ทุกแถว
SELECT * FROM users;

-- ดึงเฉพาะบางคอลัมน์
SELECT name, email FROM users;

-- มีเงื่อนไข (WHERE)
SELECT * FROM users WHERE age >= 25;
SELECT * FROM users WHERE name = 'สมชาย';

-- เรียงลำดับ (ORDER BY)
SELECT * FROM users ORDER BY age DESC;   -- มากไปน้อย

-- จำกัดจำนวน (LIMIT)
SELECT * FROM users LIMIT 10;

-- ค้นหาบางส่วน (LIKE)
SELECT * FROM users WHERE name LIKE '%สม%';
เงื่อนไขที่ใช้ใน WHERE: =, >, <, >=, <=, !=, AND, OR, LIKE, IN ═══════════════════════════════════════ ✏️ 6. UPDATE — แก้ไขข้อมูล ═══════════════════════════════════════
sql
-- แก้ไขต้องมี WHERE เสมอ (ไม่งั้นแก้ทุกแถว!)
UPDATE users
SET age = 26
WHERE id = 1;

-- แก้หลายคอลัมน์
UPDATE users
SET name = 'สมชาย ใจดี', age = 27
WHERE id = 1;
*** ระวัง: UPDATE/DELETE ที่ลืม WHERE จะกระทบทุกแถว! *** ═══════════════════════════════════════ 🗑️ 7. DELETE — ลบข้อมูล ═══════════════════════════════════════
sql
-- ลบแถวที่ระบุ
DELETE FROM users WHERE id = 3;

-- ลบตามเงื่อนไข
DELETE FROM users WHERE age < 18;
═══════════════════════════════════════ 🔗 8. ความสัมพันธ์และ JOIN ═══════════════════════════════════════ ตารางมักเชื่อมกันด้วย Foreign Key เช่น orders เชื่อมกับ users
sql
-- ตาราง orders มี user_id ชี้ไปที่ users.id
CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    total DECIMAL(10,2),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

-- JOIN ดึงข้อมูลข้ามตาราง (ชื่อผู้ใช้ + ยอดสั่งซื้อ)
SELECT users.name, orders.total
FROM orders
JOIN users ON orders.user_id = users.id;
• Primary Key = คีย์หลักของตาราง (ไม่ซ้ำ) • Foreign Key = คีย์ที่ชี้ไปคีย์หลักของอีกตาราง (สร้างความสัมพันธ์) • JOIN = รวมข้อมูลจากหลายตารางเข้าด้วยกัน ═══════════════════════════════════════ 📊 9. ฟังก์ชันรวมข้อมูล (Aggregate) ═══════════════════════════════════════
sql
SELECT COUNT(*) FROM users;          -- นับจำนวนแถว
SELECT AVG(age) FROM users;          -- ค่าเฉลี่ยอายุ
SELECT MAX(age), MIN(age) FROM users; -- มากสุด/น้อยสุด
SELECT SUM(total) FROM orders;       -- ผลรวม

-- จัดกลุ่ม (GROUP BY): นับผู้ใช้ตามอายุ
SELECT age, COUNT(*) FROM users GROUP BY age;
═══════════════════════════════════════ ✅ 10. สรุปคำสั่งที่ต้องรู้ ═══════════════════════════════════════ • CREATE DATABASE / TABLE → สร้าง • INSERT INTO ... VALUES → เพิ่มข้อมูล • SELECT ... FROM ... WHERE → ดึงข้อมูล • UPDATE ... SET ... WHERE → แก้ไข • DELETE FROM ... WHERE → ลบ • JOIN → รวมตาราง เคล็ดลับ: • UPDATE/DELETE ต้องมี WHERE เสมอ • ตั้ง PRIMARY KEY ให้ทุกตาราง • ฝึกกับ phpMyAdmin (มากับ XAMPP) จะเห็นภาพชัด จำไว้: SQL คือภาษาสากลของฐานข้อมูล เรียนครั้งเดียวใช้ได้กับ MySQL, PostgreSQL, SQLite 🗄️