SELECT: ดึงข้อมูลจาก Table ด้วยเงื่อนไข WHERE
ในบทที่แล้ว เราได้เรียนรู้วิธีการสร้าง Table และจัดการข้อมูลด้วย INSERT, UPDATE, และ DELETE ในบทนี้ เราจะมาเรียนรู้วิธีการดึงข้อมูลจาก Table โดยใช้คำสั่ง SELECT และกำหนดเงื่อนไข WHERE เพื่อกรองข้อมูลที่เราต้องการ ซึ่งเป็นหัวใจสำคัญของการใช้งานฐานข้อมูลเลยทีเดียว
คำสั่ง SELECT
คำสั่ง SELECT ใช้สำหรับดึงข้อมูลจาก Table ในรูปแบบพื้นฐานที่สุดคือ:
SELECT column1, column2, ... FROM table_name;
โดย column1, column2, ... คือชื่อคอลัมน์ที่เราต้องการดึงข้อมูล และ table_name คือชื่อของ Table ที่เราต้องการดึงข้อมูลจาก
ถ้าเราต้องการดึงข้อมูลทุกคอลัมน์ใน Table เราสามารถใช้เครื่องหมาย * (ดอกจัน) แทนชื่อคอลัมน์ทั้งหมดได้:
SELECT * FROM table_name;
ตัวอย่าง: สมมติว่าเรามี Table ชื่อ customers ที่มีคอลัมน์ id, name, และ email หากเราต้องการดึงข้อมูล name และ email ของลูกค้าทั้งหมด เราจะใช้คำสั่ง:
SELECT name, email FROM customers;
หากเราต้องการดึงข้อมูลทุกคอลัมน์ของลูกค้าทั้งหมด เราจะใช้คำสั่ง:
SELECT * FROM customers;
การใช้ WHERE Clause
WHERE Clause ใช้สำหรับกำหนดเงื่อนไขในการกรองข้อมูลที่เราต้องการดึงจาก Table รูปแบบการใช้งานคือ:
SELECT column1, column2, ... FROM table_name WHERE condition;
โดย condition คือเงื่อนไขที่เราต้องการใช้ในการกรองข้อมูล
ตัวอย่าง: หากเราต้องการดึงข้อมูลของลูกค้าที่มี id เท่ากับ 1 เราจะใช้คำสั่ง:
SELECT * FROM customers WHERE id = 1;
คำสั่งนี้จะดึงข้อมูลทุกคอลัมน์ของลูกค้าที่มี id เท่ากับ 1 เท่านั้น
Operators ใน WHERE Clause
WHERE Clause รองรับ Operators หลายประเภทที่ช่วยให้เรากำหนดเงื่อนไขได้อย่างหลากหลาย ดังนี้:
=(เท่ากับ): ใช้สำหรับเปรียบเทียบว่าค่าสองค่าเท่ากัน>(มากกว่า): ใช้สำหรับเปรียบเทียบว่าค่าหนึ่งมากกว่าอีกค่าหนึ่ง<(น้อยกว่า): ใช้สำหรับเปรียบเทียบว่าค่าหนึ่งน้อยกว่าอีกค่าหนึ่ง>=(มากกว่าหรือเท่ากับ): ใช้สำหรับเปรียบเทียบว่าค่าหนึ่งมากกว่าหรือเท่ากับอีกค่าหนึ่ง<=(น้อยกว่าหรือเท่ากับ): ใช้สำหรับเปรียบเทียบว่าค่าหนึ่งน้อยกว่าหรือเท่ากับอีกค่าหนึ่ง<>หรือ!=(ไม่เท่ากับ): ใช้สำหรับเปรียบเทียบว่าค่าสองค่าไม่เท่ากันLIKE: ใช้สำหรับเปรียบเทียบข้อมูลที่เป็นข้อความ โดยใช้ Wildcards
ตัวอย่างการใช้งาน Operators
สมมติว่าเรามี Table ชื่อ products ที่มีคอลัมน์ id, name, และ price
- ดึงข้อมูลสินค้าที่มีราคามากกว่า 100 บาท:
SELECT * FROM products WHERE price > 100;
SELECT * FROM products WHERE price <= 50;
SELECT * FROM products WHERE name LIKE 'A%';
ในตัวอย่างนี้ LIKE ใช้ร่วมกับ Wildcard % ซึ่งหมายถึง "อักขระใดๆ ก็ได้ จำนวนเท่าใดก็ได้" ดังนั้น 'A%' หมายถึง "ข้อความที่ขึ้นต้นด้วย 'A' แล้วตามด้วยอะไรก็ได้"
SELECT * FROM products WHERE name LIKE '%e';
SELECT * FROM products WHERE name LIKE '%book%';
SELECT * FROM products WHERE name LIKE '_____';
ในตัวอย่างนี้ LIKE ใช้ร่วมกับ Wildcard _ (Underscore) ซึ่งหมายถึง "อักขระใดๆ ก็ได้ 1 ตัว" ดังนั้น '_____' หมายถึง "ข้อความที่มี 5 ตัวอักษร"
กรณีใช้งานจริงและข้อผิดพลาดที่พบบ่อย
กรณีใช้งานจริง: สมมติว่าคุณมี Table ชื่อ orders ที่มีข้อมูลการสั่งซื้อสินค้า ประกอบด้วยคอลัมน์ order_id, customer_id, order_date, และ total_amount คุณอาจต้องการ:
- ดึงข้อมูลการสั่งซื้อทั้งหมดของลูกค้าที่มี
customer_idเท่ากับ 123
SELECT * FROM orders WHERE customer_id = 123;
order_date เป็น Date type)SELECT * FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-01-31';
SELECT * FROM orders WHERE total_amount > 500;
ข้อผิดพลาดที่พบบ่อย:
- ลืมใส่
WHEREClause: หากคุณต้องการกรองข้อมูล อย่าลืมใส่WHEREClause มิฉะนั้นคุณจะได้ข้อมูลทั้งหมดใน Table - ใช้ Operator ผิดประเภท: ตรวจสอบให้แน่ใจว่าคุณใช้ Operator ที่ถูกต้องสำหรับประเภทข้อมูลที่คุณกำลังเปรียบเทียบ เช่น ใช้
LIKEสำหรับข้อความ และ=,>,<สำหรับตัวเลข - สะกดชื่อคอลัมน์ผิด: ตรวจสอบให้แน่ใจว่าคุณสะกดชื่อคอลัมน์ถูกต้อง มิฉะนั้น PostgreSQL จะไม่สามารถหาคอลัมน์นั้นได้
- การใช้ single quote (
') และ double quote (") ผิด: โดยทั่วไป single quote ใช้สำหรับ literal string (ค่าคงที่ที่เป็นข้อความ) ในขณะที่ double quote ใช้สำหรับ identifier (ชื่อคอลัมน์, ชื่อ Table) หากคุณใช้ผิดประเภท อาจทำให้เกิดข้อผิดพลาดได้
ตัวอย่างข้อผิดพลาด:
-- ผิด: ลืม WHERE Clause
SELECT * FROM customers; -- จะดึงข้อมูลลูกค้าทั้งหมด
-- ผิด: ใช้ = กับ LIKE
SELECT * FROM products WHERE name = 'A%'; -- ผิด ควรใช้ LIKE
-- ผิด: สะกดชื่อคอลัมน์ผิด
SELECT * FROM customers WHERE emal = 'test@example.com'; -- ผิด ควรเป็น email
การใช้ SELECT และ WHERE Clause เป็นทักษะพื้นฐานที่สำคัญในการใช้งาน PostgreSQL การฝึกฝนและทำความเข้าใจ Operators ต่างๆ จะช่วยให้คุณสามารถดึงข้อมูลที่คุณต้องการได้อย่างมีประสิทธิภาพ ในบทถัดไป เราจะมาเรียนรู้เกี่ยวกับฟังก์ชัน Aggregate ที่จะช่วยให้เราสรุปข้อมูลจาก Table ได้