จากบทความที่แล้ว https://www.pathompat.me/part-1-database-database-table/ เราได้ทราบวิธีการสร้าง database และ table แล้ว บทความนี้จะมาแนะนำวิธีการจัดการข้อมูลภายใน table กัน ผ่าน 4 Operation หลัก
CRUD
- Create (INSERT) - สร้างข้อมูล
- Read (SELECT) - อ่านข้อมูล
- Update (UPDATE) - แก้ไขข้อมูล
- Delete (DELETE) - ลบข้อมูล
โดยตอนนี้ ต่อเนื่องจากบทความที่แล้วเราจะมี table users ที่ไว้เก็บข้อมูลผู้ใช้ โดยมี structure ดังนี้
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
age INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
การเพิ่มข้อมูล (INSERT)
- ตัวอย่าง query เพิ่มข้อมูลผู้ใช้ใหม่
INSERT INTO users (name, email, age)
VALUES ('John Doe', 'john.doe@example.com', 30);
- หากต้องการเพิ่มหลายแถวพร้อมกัน
INSERT INTO users (name, email, age) VALUES
('Alice Smith', 'alice.smith@example.com', 25),
('Bob Johnson', 'bob.johnson@example.com', 40);
การอ่านข้อมูล (SELECT)
- ดึงข้อมูลทั้งหมดจากตาราง
SELECT * FROM users;
- ดึงเฉพาะชื่อและอีเมลของผู้ใช้
SELECT name, email FROM users;
- กรองข้อมูลด้วย
WHERE
(เช่น ผู้ใช้ที่อายุมากกว่า 30)
SELECT * FROM users WHERE age > 30;
- เรียงลำดับข้อมูลตามชื่อ
SELECT * FROM users ORDER BY name ASC;
- นับจำนวนผู้ใช้ทั้งหมด
SELECT COUNT(*) FROM users;
การแก้ไขข้อมูล (UPDATE)
- ตัวอย่างการอัปเดตอายุของผู้ใช้ที่มี
id = 1
UPDATE users SET age = 35 WHERE id = 1;
- การอัปเดตอีเมลของผู้ใช้ชื่อ 'Alice Smith'
UPDATE users SET email = 'alice.new@example.com' WHERE name = 'Alice Smith';
การลบข้อมูล (DELETE)
- ตัวอย่างการลบผู้ใช้ที่มี
id = 2
DELETE FROM users WHERE id = 2;
- ลบผู้ใช้ทั้งหมดที่มีอายุมากกว่า 50 ปี
DELETE FROM users WHERE age > 50;
Notes: ถ้าใช้คำสั่งDELETE FROM
โดยไม่มีWHERE
จะลบข้อมูลทั้งหมดในตาราง
Conditional query
- กรองข้อมูลด้วย
WHERE
(เช่น ผู้ใช้ที่อายุมากกว่า 30)
SELECT * FROM users WHERE age > 30;
- เรียงลำดับข้อมูลด้วย
ORDER BY
ตามด้วย sort typeASC
(เรียงน้อยไปมาก) และDESC
(เรียงมากไปน้อย)
SELECT * FROM users ORDER BY name ASC;
- จำกัดจำนวนผลลัพธ์ด้วย
LIMIT
SELECT * FROM users LIMIT 5;
- ข้ามแถวก่อนหน้าแล้วเลือกข้อมูลด้วย
LIMIT
และOFFSET
SELECT * FROM users LIMIT 5 OFFSET 10;
- เลือกข้อมูลที่ไม่ซ้ำกันด้วย
DISTINCT
SELECT DISTINCT age FROM users;
- ใช้เงื่อนไขร่วมกันด้วย
AND
/OR
/NOT
ได้
SELECT * FROM users WHERE age > 25 AND email LIKE '%example.com';
SELECT * FROM users WHERE age < 30 OR name = 'Alice Smith';
Exercise
- จากตาราง
products
ใน exercise ที่แล้ว ให้สร้างข้อมูลทดสอบดังนี้- title:
tablet 1
, description:none
, price:1500.00
- title:
mobile 1
, description:none
, price:5000.00
- title:
mobile 2
, description:none
, price:1300.50
- title:
tablet 2
, description:none
, price:1750.00
- title:
- update ข้อมูลดังต่อไปนี้
- update
title
ของ id: 4 เป็นtablet updated
- update description ของสินค้าที่ price >= 1500.00 เป็น
so expensive
- update
- remove ข้อมูล
- ลบข้อมูล id: 4
- ลบข้อมูลที่ title มีคำว่า
mobile
hint:ใช้ WHERE LIKE "%mobile%"
- select ข้อมูล
- แสดงข้อมูล product ทั้งหมดในตาราง
- แสดงข้อมูล product ที่ราคามากกว่า 1700.00
- แสดงข้อมูลทั้งหมดที่ title มีคำว่า
tablet
hint:ใช้ WHERE LIKE "%tablet%"
- แสดงข้อมูล product ตามลำดับราคา แพง > ถูก 2 อันดับแรก
Reference
W3Schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
