เริ่มเขียน SQL ใน MySQL: SELECT, WHERE, ORDER BY และ LIMIT สำหรับมือใหม่
บทความนี้สรุปพื้นฐานการเขียน SQL ใน MySQL สำหรับมือใหม่ โดยอธิบายการใช้ SELECT, WHERE, ORDER BY และ LIMIT ผ่านตัวอย่างจากตาราง students แบบเข้าใจง่ายและนำไปใช้ได้จริง

เริ่มเขียน SQL ใน MySQL: SELECT, WHERE, ORDER BY และ LIMIT สำหรับมือใหม่
การเริ่มเขียน SQL ไม่จำเป็นต้องมองว่าเป็นการสั่งคอมพิวเตอร์แบบซับซ้อนเสมอไป จริง ๆ แล้ว SQL คือการ “ถามข้อมูล” จากตารางในฐานข้อมูลให้ได้คำตอบที่เราต้องการ
ลองนึกภาพว่าเรากำลังถามคำถามง่าย ๆ เช่น
- ขอดูรายชื่อลูกค้าหน่อย
- ขอดูเฉพาะคนที่อยู่กรุงเทพ
- เรียงจากคนสมัครล่าสุด
- เอามาแค่ 10 แถวพอ
แนวคิดแบบนี้จะช่วยให้การเขียน SQL เข้าใจง่ายขึ้นมาก โดยเฉพาะสำหรับผู้เริ่มต้น
ในบทความนี้ เราจะใช้ตัวอย่างตารางชื่อ students ซึ่งมีคอลัมน์ดังนี้
idnameagecitycreated_at
เริ่มจาก SELECT: เลือกข้อมูลที่ต้องการ
คำสั่งพื้นฐานที่สุดใน SQL คือ SELECT ใช้สำหรับเลือกข้อมูลจากตาราง
SELECT * FROM students;
เครื่องหมาย * หมายถึงเลือกทุกคอลัมน์จากตาราง students
คำสั่งนี้แปลเป็นภาษาคนได้ว่า: ขอดูข้อมูลทั้งหมดจากตาราง students
แม้ว่าจะสะดวกและเหมาะสำหรับการตรวจข้อมูลแบบเร็ว ๆ แต่ในงานจริงไม่ควรใช้ * บ่อยเกินไป เพราะ:
- บางตารางมีคอลัมน์จำนวนมาก
- ดึงข้อมูลเกินความจำเป็น
- อาจทำให้ query ช้าลง
- อ่านผลลัพธ์และดูแลโค้ดยากขึ้น
ทางที่ดีกว่าคือเลือกเฉพาะคอลัมน์ที่ต้องใช้
SELECT name, age, city FROM students;
คำสั่งนี้หมายถึง: เอาเฉพาะชื่อ อายุ และเมือง จากตาราง students
นี่ถือเป็นรูปแบบ SQL ที่ดีขึ้นทันที เพราะชัดเจนว่าต้องการข้อมูลอะไรแน่
ใช้ WHERE เพื่อกรองข้อมูล
เมื่อไม่ได้ต้องการข้อมูลทั้งหมด เราสามารถใช้ WHERE เพื่อกำหนดเงื่อนไขในการกรองข้อมูลได้
ตัวอย่างเช่น ถ้าต้องการดูเฉพาะนักเรียนที่อยู่เชียงใหม่
SELECT name, city
FROM students
WHERE city = 'Chiang Mai';
สิ่งที่ควรสังเกตคือ:
- ข้อความหรือ string ต้องใส่เครื่องหมาย quote เช่น
'Chiang Mai' - ตัวเลขมักไม่ต้องใส่ quote
ตัวอย่างการกรองด้วยตัวเลข เช่น ต้องการดูคนอายุ 18 ปีขึ้นไป
SELECT name, age
FROM students
WHERE age >= 18;
ตัวดำเนินการเงื่อนไขที่ใช้บ่อยใน WHERE ได้แก่
=เท่ากับ!=ไม่เท่ากับ>มากกว่า<น้อยกว่า>=มากกว่าหรือเท่ากับ<=น้อยกว่าหรือเท่ากับ
ใช้ AND และ OR เมื่อต้องมีหลายเงื่อนไข
หากต้องการกรองข้อมูลมากกว่าหนึ่งเงื่อนไข สามารถใช้ AND และ OR ได้
กรณีใช้ AND
SELECT name, age, city
FROM students
WHERE age >= 18 AND city = 'Bangkok';
ความหมายคือ: เอาเฉพาะนักเรียนที่อายุอย่างน้อย 18 ปี และอยู่กรุงเทพ
ทั้งสองเงื่อนไขต้องเป็นจริงพร้อมกัน
กรณีใช้ OR
SELECT name, city
FROM students
WHERE city = 'Bangkok' OR city = 'Chiang Mai';
ความหมายคือ: เอานักเรียนที่อยู่กรุงเทพ หรือเชียงใหม่ก็ได้
อย่างน้อยหนึ่งเงื่อนไขต้องเป็นจริง
ใช้ ORDER BY เพื่อจัดลำดับผลลัพธ์
หลังจากเลือกและกรองข้อมูลแล้ว เรามักต้องการจัดลำดับผลลัพธ์ด้วย ORDER BY
ตัวอย่างเช่น เรียงอายุน้อยไปมาก
SELECT name, age
FROM students
ORDER BY age ASC;
ASC ย่อมาจาก ascending หมายถึงเรียงจากน้อยไปมาก
ถ้าต้องการเรียงจากมากไปน้อย ให้ใช้ DESC
SELECT name, age
FROM students
ORDER BY age DESC;
ORDER BY เป็นคำสั่งสำคัญมาก เพราะถ้าเราไม่ระบุลำดับให้ชัดเจน MySQL ไม่ได้รับประกันว่าจะคืนข้อมูลตามลำดับที่เราคิดเสมอไป
ดังนั้น หากผลลัพธ์ต้องมีลำดับที่แน่นอน อย่าเดา ให้สั่งเรียงอย่างชัดเจน
ตัวอย่างที่ใช้บ่อยมากในงานจริงคือการดูข้อมูลล่าสุดก่อน
SELECT name, created_at
FROM students
ORDER BY created_at DESC;
คำสั่งนี้จะเรียงนักเรียนจากคนที่สมัครล่าสุดไปเก่าสุด
ใช้ LIMIT เพื่อจำกัดจำนวนแถว
เมื่อข้อมูลในตารางมีจำนวนมาก เรามักไม่จำเป็นต้องดึงข้อมูลทั้งหมดกลับมา สามารถใช้ LIMIT เพื่อจำกัดจำนวนแถวได้
SELECT name, created_at
FROM students
ORDER BY created_at DESC
LIMIT 10;
คำสั่งนี้หมายถึง:
- เลือกชื่อและวันสมัคร
- เรียงจากคนสมัครล่าสุด
- คืนมาแค่ 10 คนแรก
นี่เป็นรูปแบบที่ใช้บ่อยมากในงานจริง เช่น:
- หน้าแรกของระบบ
- รายการล่าสุด
- dashboard
- การแบ่งข้อมูลแสดงทีละส่วน
ลำดับการเขียน SQL ที่จำง่าย
สำหรับ query พื้นฐาน ลำดับที่ควรจำคือ
SELECTเลือกคอลัมน์FROMเลือกตารางWHEREกรองข้อมูลORDER BYเรียงผลลัพธ์LIMITจำกัดจำนวน
ตัวอย่างรวมทุกอย่างเข้าด้วยกัน
SELECT id, name, age, city
FROM students
WHERE age >= 18
ORDER BY name ASC
LIMIT 20;
แปลเป็นภาษาคนได้ว่า:
ขอ id, ชื่อ, อายุ, เมือง จากตาราง students เฉพาะคนที่อายุ 18 ปีขึ้นไป เรียงตามชื่อจาก A ถึง Z และเอามาแค่ 20 แถว
เทคนิคสำหรับมือใหม่: เขียนจากง่ายไปยาก
วิธีที่ช่วยลดความสับสนได้ดีมากคือค่อย ๆ ต่อ query ทีละส่วน
แนวทางที่แนะนำคือ:
- เริ่มจาก
SELECTและFROMก่อน - รันดูว่าได้ข้อมูลตามต้องการหรือไม่
- ค่อยเติม
WHERE - ค่อยเติม
ORDER BY - ค่อยเติม
LIMIT
ข้อดีของวิธีนี้คือ ถ้า query มีปัญหา เราจะหาสาเหตุได้ง่ายขึ้นว่าพังตรงจุดไหน
SQL ที่ดีควรเป็นอย่างไร
SQL ที่ดีไม่จำเป็นต้องดูซับซ้อนหรือเท่เสมอไป สิ่งสำคัญคือมันควร:
- อ่านแล้วเข้าใจทันที
- ถามข้อมูลได้ตรงจุด
- ดึงเฉพาะข้อมูลที่จำเป็น
- ไม่ทำให้ฐานข้อมูลทำงานหนักเกินไป
การเลือกเฉพาะคอลัมน์ที่ต้องใช้ การกรองข้อมูลอย่างเหมาะสม การเรียงลำดับอย่างชัดเจน และการจำกัดจำนวนผลลัพธ์ ล้วนเป็นพื้นฐานสำคัญของการเขียน SQL ที่ดี
สรุป
การเริ่มต้นเขียน SQL ใน MySQL สามารถมองเป็นการ “ถามข้อมูล” จากตารางได้อย่างเป็นธรรมชาติ โดยคำสั่งพื้นฐานที่ควรรู้ตั้งแต่แรกคือ SELECT, WHERE, ORDER BY และ LIMIT
ถ้าเข้าใจ 4 ส่วนนี้ดี คุณจะสามารถเขียน query ที่ใช้งานได้จริงในสถานการณ์ทั่วไปจำนวนมาก และต่อยอดไปสู่คำสั่งที่ซับซ้อนขึ้นได้ง่ายขึ้นในอนาคต
สิ่งที่สำคัญที่สุดสำหรับมือใหม่คือ เริ่มจาก query ง่าย ๆ ก่อน แล้วค่อยเพิ่มเงื่อนไขทีละส่วน เพราะ SQL ที่ดีไม่ใช่ SQL ที่ซับซ้อนที่สุด แต่คือ SQL ที่ชัดเจน อ่านง่าย และดึงข้อมูลได้ตรงตามที่ต้องการ