ฐานข้อมูลคือหัวใจของเว็บแอปเกือบทุกระบบ ใช้เก็บข้อมูลผู้ใช้ สินค้า คำสั่งซื้อ ฯลฯ อย่างเป็นระเบียบ 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. สร้างฐานข้อมูลและตาราง
═══════════════════════════════════════
-- สร้างฐานข้อมูล
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 — เพิ่มข้อมูล
═══════════════════════════════════════
-- เพิ่ม 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 — ดึงข้อมูล (สำคัญที่สุด)
═══════════════════════════════════════
-- ดึงทุกคอลัมน์ ทุกแถว
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 — แก้ไขข้อมูล
═══════════════════════════════════════
-- แก้ไขต้องมี WHERE เสมอ (ไม่งั้นแก้ทุกแถว!)
UPDATE users
SET age = 26
WHERE id = 1;
-- แก้หลายคอลัมน์
UPDATE users
SET name = 'สมชาย ใจดี', age = 27
WHERE id = 1;
*** ระวัง: UPDATE/DELETE ที่ลืม WHERE จะกระทบทุกแถว! ***
═══════════════════════════════════════
🗑️ 7. DELETE — ลบข้อมูล
═══════════════════════════════════════
-- ลบแถวที่ระบุ
DELETE FROM users WHERE id = 3;
-- ลบตามเงื่อนไข
DELETE FROM users WHERE age < 18;
═══════════════════════════════════════
🔗 8. ความสัมพันธ์และ JOIN
═══════════════════════════════════════
ตารางมักเชื่อมกันด้วย Foreign Key เช่น orders เชื่อมกับ users
-- ตาราง 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)
═══════════════════════════════════════
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 🗄️