ข้ามไปยังเนื้อหาหลัก
คู่มือระบบ เนื้อหาผ่านการตรวจสอบแล้ว

การ Query ข้อมูลด้วย WHERE Clause

บทความนี้กล่าวถึงการใช้ `WHERE` Clause ใน SQLite เพื่อกรองข้อมูลจากการ Query ทำให้ได้ข้อมูลที่ตรงตามเงื่อนไขที่กำหนด ซึ่งช่วยเพิ่มประสิทธิภาพในการดึงข้อมูลจากตา...

การ Query ข้อมูลด้วย WHERE Clause

ในบทที่แล้ว เราได้เรียนรู้เกี่ยวกับ CRUD Operations ซึ่งเป็นพื้นฐานในการจัดการข้อมูลใน SQLite คราวนี้ เราจะมาเจาะลึกลงไปในการอ่านข้อมูล (Read) หรือการ Query ข้อมูล โดยใช้ `WHERE` Clause ซึ่งเป็นเครื่องมือสำคัญในการกรองข้อมูลที่เราต้องการจากตาราง

WHERE Clause คืออะไร?

WHERE Clause คือส่วนหนึ่งของคำสั่ง SELECT ที่ใช้ในการกำหนดเงื่อนไขในการเลือกข้อมูลจากตาราง เปรียบเสมือนการใส่ฟิลเตอร์ให้กับข้อมูล เพื่อให้เราได้เฉพาะข้อมูลที่ตรงตามเงื่อนไขที่เรากำหนดเท่านั้น

เหตุผลเชิงออกแบบ: ทำไมเราต้องมี WHERE Clause? ลองจินตนาการว่าคุณมีตารางข้อมูลลูกค้าเป็นหมื่นๆ ราย และคุณต้องการหารายชื่อลูกค้าที่อยู่ในกรุงเทพฯ เท่านั้น การอ่านข้อมูลทั้งหมดแล้วมาวนลูปเพื่อตรวจสอบทีละแถวเป็นวิธีที่ไม่ค่อยมีประสิทธิภาพ WHERE Clause ช่วยให้ฐานข้อมูลทำการกรองข้อมูลให้เราตั้งแต่แรก ทำให้การ Query เร็วขึ้นและใช้ทรัพยากรน้อยลง

แนวปฏิบัติที่ดี: ควรใช้ WHERE Clause ให้ชัดเจนและเฉพาะเจาะจงเท่าที่จะเป็นไปได้ เพื่อให้ได้ผลลัพธ์ที่ถูกต้องและมีประสิทธิภาพ

Operators ใน WHERE Clause

WHERE Clause ใช้ร่วมกับ Operators ต่างๆ เพื่อกำหนดเงื่อนไขในการกรองข้อมูล Operator ที่ใช้บ่อยมีดังนี้:

  • = (เท่ากับ): ใช้ตรวจสอบว่าค่าใน column เท่ากับค่าที่กำหนดหรือไม่
  • > (มากกว่า): ใช้ตรวจสอบว่าค่าใน column มากกว่าค่าที่กำหนดหรือไม่
  • < (น้อยกว่า): ใช้ตรวจสอบว่าค่าใน column น้อยกว่าค่าที่กำหนดหรือไม่
  • >= (มากกว่าหรือเท่ากับ): ใช้ตรวจสอบว่าค่าใน column มากกว่าหรือเท่ากับค่าที่กำหนดหรือไม่
  • <= (น้อยกว่าหรือเท่ากับ): ใช้ตรวจสอบว่าค่าใน column น้อยกว่าหรือเท่ากับค่าที่กำหนดหรือไม่
  • != หรือ <> (ไม่เท่ากับ): ใช้ตรวจสอบว่าค่าใน column ไม่เท่ากับค่าที่กำหนดหรือไม่
  • LIKE: ใช้สำหรับการค้นหาข้อมูลที่มีรูปแบบคล้ายคลึงกัน (pattern matching)
  • BETWEEN: ใช้ตรวจสอบว่าค่าใน column อยู่ในช่วงที่กำหนดหรือไม่
  • IN: ใช้ตรวจสอบว่าค่าใน column อยู่ในรายการที่กำหนดหรือไม่
  • NOT: ใช้เพื่อปฏิเสธเงื่อนไข

คำอธิบายเพิ่มเติม:

  • LIKE Operator: LIKE มักใช้กับ Wildcard Characters เช่น % (แทนอักขระใดๆ ก็ได้ 0 ตัวขึ้นไป) และ _ (แทนอักขระใดๆ ก็ได้ 1 ตัว) ตัวอย่างเช่น WHERE name LIKE 'A%' จะดึงข้อมูลที่มีชื่อขึ้นต้นด้วย 'A'
  • BETWEEN Operator: BETWEEN ใช้สำหรับกำหนดช่วงของข้อมูล เช่น WHERE age BETWEEN 20 AND 30 จะดึงข้อมูลที่มีอายุระหว่าง 20 ถึง 30 ปี (รวม 20 และ 30)
  • IN Operator: IN ใช้สำหรับตรวจสอบว่าค่าอยู่ในชุดของค่าที่กำหนด เช่น WHERE city IN ('Bangkok', 'Chiang Mai', 'Phuket') จะดึงข้อมูลที่มีเมืองเป็น Bangkok, Chiang Mai หรือ Phuket

ตัวอย่างการใช้งาน WHERE Clause

สมมติว่าเรามีตารางชื่อ customers ที่มีข้อมูลลูกค้าดังนี้:

CREATE TABLE customers (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT,
  age INTEGER,
  city TEXT
);

INSERT INTO customers (name, age, city) VALUES
('Alice', 30, 'Bangkok'),
('Bob', 25, 'Chiang Mai'),
('Charlie', 35, 'Bangkok'),
('David', 28, 'Phuket'),
('Eve', 22, 'Bangkok');

เรามาดูตัวอย่างการใช้ WHERE Clause ในการ Query ข้อมูลกัน:

ตัวอย่างที่ 1: ค้นหาลูกค้าที่อยู่ในกรุงเทพฯ

SELECT * FROM customers WHERE city = 'Bangkok';

ผลลัพธ์:

id | name    | age | city
---|---------|-----|--------
 1 | Alice   | 30  | Bangkok
 3 | Charlie | 35  | Bangkok
 5 | Eve     | 22  | Bangkok

ตัวอย่างที่ 2: ค้นหาลูกค้าที่มีอายุมากกว่า 25 ปี

SELECT * FROM customers WHERE age > 25;

ผลลัพธ์:

id | name    | age | city
---|---------|-----|--------
 1 | Alice   | 30  | Bangkok
 3 | Charlie | 35  | Bangkok
 4 | David   | 28  | Phuket

ตัวอย่างที่ 3: ค้นหาลูกค้าที่มีชื่อขึ้นต้นด้วย 'A'

SELECT * FROM customers WHERE name LIKE 'A%';

ผลลัพธ์:

id | name    | age | city
---|---------|-----|--------
 1 | Alice   | 30  | Bangkok

ตัวอย่างที่ 4: ค้นหาลูกค้าที่มีอายุระหว่าง 20 ถึง 30 ปี

SELECT * FROM customers WHERE age BETWEEN 20 AND 30;

ผลลัพธ์:

id | name    | age | city
---|---------|-----|--------
 1 | Alice   | 30  | Bangkok
 2 | Bob     | 25  | Chiang Mai
 4 | David   | 28  | Phuket
 5 | Eve     | 22  | Bangkok

ตัวอย่างที่ 5: ค้นหาลูกค้าที่อยู่ในกรุงเทพฯ หรือเชียงใหม่

SELECT * FROM customers WHERE city IN ('Bangkok', 'Chiang Mai');

ผลลัพธ์:

id | name    | age | city
---|---------|-----|--------
 1 | Alice   | 30  | Bangkok
 2 | Bob     | 25  | Chiang Mai
 3 | Charlie | 35  | Bangkok
 5 | Eve     | 22  | Bangkok

ตัวอย่างที่ 6: ค้นหาลูกค้าที่ไม่อยู่ในกรุงเทพฯ

SELECT * FROM customers WHERE city != 'Bangkok';

ผลลัพธ์:

id | name    | age | city
---|---------|-----|--------
 2 | Bob     | 25  | Chiang Mai
 4 | David   | 28  | Phuket

การใช้ AND และ OR ใน WHERE Clause

เราสามารถใช้ AND และ OR เพื่อรวมเงื่อนไขหลายๆ อย่างเข้าด้วยกันได้

  • AND: ใช้เมื่อต้องการให้ทุกเงื่อนไขเป็นจริง
  • OR: ใช้เมื่อต้องการให้เงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง

ตัวอย่างที่ 7: ค้นหาลูกค้าที่อยู่ในกรุงเทพฯ และมีอายุมากกว่า 30 ปี

SELECT * FROM customers WHERE city = 'Bangkok' AND age > 30;

ผลลัพธ์:

id | name    | age | city
---|---------|-----|--------
 3 | Charlie | 35  | Bangkok

ตัวอย่างที่ 8: ค้นหาลูกค้าที่อยู่ในกรุงเทพฯ หรือมีอายุมากกว่า 30 ปี

SELECT * FROM customers WHERE city = 'Bangkok' OR age > 30;

ผลลัพธ์:

id | name    | age | city
---|---------|-----|--------
 1 | Alice   | 30  | Bangkok
 3 | Charlie | 35  | Bangkok
 5 | Eve     | 22  | Bangkok

ข้อควรระวัง: เมื่อใช้ AND และ OR ร่วมกัน ควรใช้เครื่องหมายวงเล็บ () เพื่อกำหนดลำดับการประมวลผลของเงื่อนไขให้ชัดเจน เพื่อป้องกันความผิดพลาด

ตัวอย่าง:

SELECT * FROM customers WHERE (city = 'Bangkok' OR city = 'Chiang Mai') AND age > 25;

คำสั่งนี้จะเลือกข้อมูลลูกค้าที่อยู่ในกรุงเทพฯ หรือเชียงใหม่ และมีอายุมากกว่า 25 ปี

สรุป

WHERE Clause เป็นเครื่องมือที่ทรงพลังในการ Query ข้อมูลจากฐานข้อมูล SQLite การเข้าใจ Operators ต่างๆ และการใช้ AND และ OR จะช่วยให้คุณสามารถ Query ข้อมูลได้อย่างแม่นยำและมีประสิทธิภาพ ในบทต่อไป เราจะเรียนรู้วิธีการใช้งาน SQLite ร่วมกับภาษา PHP เพื่อสร้างแอปพลิเคชันที่สามารถเข้าถึงและจัดการข้อมูลในฐานข้อมูลได้

Office.in.th Custom Service

ต้องการพัฒนาระบบหรือปรับแต่งจากโครงสร้างนี้?

Office.in.th รับพัฒนาและออกแบบ Enterprise Web Application, API Integration และระบบบริหารงานภาครัฐ/เอกชน พร้อมการสนับสนุนระยะยาว

ดูบริการรับพัฒนาซอฟต์แวร์