อธิบายตัวดำเนินการ BETWEEN ของ MySQL: ไวยากรณ์, ตัวอย่าง, และแนวปฏิบัติที่ดีที่สุด

目次

1. บทนำ

หนึ่งในองค์ประกอบสำคัญสำหรับการดำเนินการคิวรีอย่างมีประสิทธิภาพในฐานข้อมูล MySQL คือโอเปอเรเตอร์ BETWEEN โอเปอเรเตอร์นี้มีประโยชน์อย่างยิ่งเมื่อเราต้องตรวจสอบว่าข้อมูลอยู่ในช่วงที่กำหนดหรือไม่ มันใช้เพื่อระบุช่วงสำหรับตัวเลข, วันที่, และสตริง, ทำให้การสกัดข้อมูลในการค้นหาและการกรองฐานข้อมูลทำได้อย่างมีประสิทธิภาพ ในบทความนี้เราจะอธิบายอย่างละเอียดเกี่ยวกับการใช้โอเปอเรเตอร์ BETWEEN ของ MySQL, ตัวอย่างการใช้งานจริง, และข้อควรระวังที่สำคัญ

2. ไวยากรณ์พื้นฐานของโอเปอเรเตอร์ BETWEEN

ภาพรวมของโอเปอเรเตอร์ BETWEEN

โอเปอเรเตอร์ BETWEEN เป็นเงื่อนไขที่ใช้ในคลอส WHERE เพื่อตรวจสอบว่าค่าของคอลัมน์ใดค่าหนึ่งตกอยู่ในช่วงที่กำหนดหรือไม่ ไวยากรณ์พื้นฐานมีดังนี้

SELECT column_name
FROM table_name
WHERE column_name BETWEEN start_value AND end_value;

ตัวอย่างเช่น หากตารางเก็บอายุของพนักงาน คุณสามารถใช้โอเปอเรเตอร์นี้เพื่อสกัดพนักงานที่อยู่ในช่วงอายุที่กำหนด

รูปแบบลบ: NOT BETWEEN

หากต้องการค้นหาค่าที่ ไม่ อยู่ในช่วงที่ระบุ ให้ใช้รูปแบบลบ NOT BETWEEN

SELECT column_name
FROM table_name
WHERE column_name NOT BETWEEN start_value AND end_value;

3. การระบุช่วงตัวเลข

การใช้ BETWEEN สำหรับช่วงตัวเลข

โอเปอเรเตอร์ BETWEEN มีความสะดวกมากสำหรับการระบุช่วงตัวเลข ตัวอย่างเช่น หากต้องการสกัดข้อมูลที่เงินเดือนของพนักงานอยู่ระหว่าง 50,000 ถึง 100,000 ให้เขียนคิวรีดังนี้

SELECT employee_id, name, salary
FROM employees
WHERE salary BETWEEN 50000 AND 100000;

ตัวอย่างข้อมูล:

employee_idnamesalary
1Sato45000
2Suzuki55000
3Takahashi75000
4Tanaka120000

ผลลัพธ์การดำเนินการ:

employee_idnamesalary
2Suzuki55000
3Takahashi75000

ในคิวรีข้างต้น จะเลือกเฉพาะพนักงานที่เงินเดือนอยู่ระหว่าง 50,000 ถึง 100,000 เท่านั้น

ความแตกต่างจากโอเปอเรเตอร์เปรียบเทียบ

หากเขียนเงื่อนไขเดียวกันโดยใช้โอเปอเรเตอร์เปรียบเทียบ จะมีลักษณะดังนี้

SELECT employee_id, name, salary
FROM employees
WHERE salary >= 50000 AND salary <= 100000;

การใช้ BETWEEN ทำให้คิวรีสั้นลงและอ่านง่ายขึ้น โดยเฉพาะเมื่อมีเงื่อนไขหลายช่วง BETWEEN จะช่วยให้เข้าใจโครงสร้างคิวรีได้ดียิ่งขึ้น

4. การระบุช่วงวันที่

การใช้ BETWEEN กับข้อมูลวันที่

BETWEEN สามารถใช้ระบุช่วงวันที่ได้เช่นกัน ตัวอย่างเช่น เพื่อสกัดคำสั่งซื้อจากตาราง orders ระหว่างวันที่ 1 มกราคม 2024 ถึง 31 ธันวาคม 2024 ให้เขียนคิวรีดังนี้

SELECT order_id, customer_id, order_date
FROM orders
WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';

ตัวอย่างข้อมูล:

order_idcustomer_idorder_date
11012024-01-15
21022024-05-30
31032025-03-01

ผลลัพธ์การดำเนินการ:

order_idcustomer_idorder_date
11012024-01-15
21022024-05-30

ดังที่แสดงด้านบน, โอเปอเรเตอร์ BETWEEN จะสกัดข้อมูลที่อยู่ในช่วงวันที่ที่กำหนด

การจัดการข้อมูลเวลา

หากข้อมูลวันที่รวมเวลา ต้องให้ความระมัดระวังเป็นพิเศษ ตัวอย่างเช่น หากคอลัมน์ order_date มีชนิด DATETIME และบรรจุค่าเวลา การระบุช่วงด้วย BETWEEN จะรวมบันทึกตั้งแต่เที่ยงคืนของวันเริ่มต้นจนถึง 23:59:59 ของวันสิ้นสุด

WHERE order_date BETWEEN '2024-01-01 00:00:00' AND '2024-12-31 23:59:59';

5. การระบุช่วงสตริง

การใช้ BETWEEN กับข้อมูลสตริง

โอเปอเรเตอร์ BETWEEN สามารถนำไปใช้กับข้อมูลสตริงได้เช่นกัน ตัวอย่างเช่น หากต้องการค้นหาผลิตภัณฑ์ที่ชื่ออยู่ระหว่าง ‘A’ ถึง ‘M’ ให้เขียนคิวรีดังนี้

SELECT product_id, product_name
FROM products
WHERE product_name BETWEEN 'A' AND 'M';

ตัวอย่างข้อมูล:

product_idproduct_name
1Apple
2Banana
3Mango
4Orange

ผลลัพธ์การดำเนินการ:

product_idproduct_name
1Apple
2Banana
3Mango

ข้อควรพิจารณาเรื่องลำดับอักษร

เมื่อระบุช่วงสตริง จะถือว่าข้อความถูกจัดเรียงตามลำดับอักษร เนื่องจากฐานข้อมูลอาจแยกแยะตัวพิมพ์ใหญ่และตัวพิมพ์เล็กตามการตั้งค่า collation จึงต้องระมัดระวัง ตัวอย่างเช่น 'a' และ 'A' อาจถูกพิจารณาเป็นค่าที่แตกต่างกัน

6. ข้อควรระวังสำคัญเมื่อใช้ BETWEEN

ลำดับของช่วงมีความสำคัญ

เมื่อใช้ตัวดำเนินการ BETWEEN ให้ระวังลำดับของค่าต้นและค่าปลาย หากค่าต้นมากกว่าค่าปลาย คำสั่งอาจคืนผลลัพธ์ที่ไม่ต้องการ

SELECT * FROM table_name WHERE column_name BETWEEN 100 AND 50;  -- unintended result

นอกจากนี้ เนื่องจาก BETWEEN รวมค่าขอบเขตทั้งสองค่า จึงสำคัญที่จะเลือกค่าต้นและค่าปลายอย่างระมัดระวัง

การใช้ดัชนีและประสิทธิภาพ

ตัวดำเนินการ BETWEEN โดยทั่วไปมีประสิทธิภาพเทียบเท่ากับตัวดำเนินการเปรียบเทียบมาตรฐาน
อย่างไรก็ตาม เพื่อเพิ่มประสิทธิภาพการทำงานของคำสั่ง ควรมีการสร้างดัชนีที่เหมาะสม
เมื่อดัชนีถูกกำหนดค่าอย่างถูกต้อง ความเร็วในการดำเนินการของคำสั่งที่ใช้ BETWEEN จะเพิ่มขึ้น
ตัวอย่างเช่น การสร้างดัชนีบนคอลัมน์วันที่ทำให้การค้นหาช่วงวันที่ทำงานได้อย่างมีประสิทธิภาพมากขึ้น

7. ตัวอย่างการสืบค้นเชิงปฏิบัติและขั้นสูง

การใช้ BETWEEN กับหลายคอลัมน์

BETWEEN ยังสามารถใช้ร่วมกันในหลายคอลัมน์ได้
เช่น เมื่อทำการค้นหาช่วงโดยระบุทั้งราคาผลิตภัณฑ์และจำนวนสินค้าคงคลัง สามารถใช้คำสั่งต่อไปนี้:

SELECT product_name, price, stock
FROM products
WHERE price BETWEEN 1000 AND 5000
AND stock BETWEEN 50 AND 200;

คำสั่งนี้ค้นหาผลิตภัณฑ์ที่มีราคาระหว่าง 1,000 ถึง 5,000 และจำนวนสินค้าคงคลังระหว่าง 50 ถึง 200

ตัวอย่างขั้นสูงของ NOT BETWEEN

โดยใช้รูปแบบลบ NOT BETWEEN คุณสามารถดึงข้อมูลที่อยู่นอกช่วงที่กำหนดได้
เช่น เพื่อค้นหาพนักงานที่เงินเดือนต่ำกว่า 50,000 หรือสูงกว่า 100,000 ให้เขียนคำสั่งดังนี้:

SELECT employee_id, name, salary
FROM employees
WHERE salary NOT BETWEEN 50000 AND 100000;

ผลลัพธ์การดำเนินการ:

employee_idnamesalary
1Sato45000
4Tanaka120000

คำสั่งนี้ดึงข้อมูลพนักงานที่เงินเดือนไม่อยู่ในช่วง 50,000 ถึง 100,000
การใช้ NOT BETWEEN ทำให้การดึงข้อมูลตามเงื่อนไขตรงข้ามเป็นเรื่องง่าย

8. ตัวอย่างการสืบค้นแบบภาพ

เพื่อแสดงผลลัพธ์ของคำสั่งแบบภาพ การใช้แผนภาพง่าย ๆ สามารถทำให้เห็นชัดเจน
ตัวอย่างเช่น ภาพต่อไปนี้อธิบายการทำงานของ BETWEEN:

Price range: [----- 1000 ---- 5000 -----]
Product A price: 3000 (within range)
Product B price: 6000 (outside range)

การใช้แผนภาพเช่นนี้ทำให้เข้าใจได้อย่างเป็นธรรมชาติว่าข้อมูลอยู่ในช่วงที่กำหนดหรือไม่

9. สรุป

BETWEEN เป็นเครื่องมือที่มีประโยชน์อย่างยิ่งใน MySQL เมื่อทำการค้นหาแบบช่วง
มันสามารถใช้กับข้อมูลเชิงตัวเลข, วันที่, และข้อความ ทำให้คำสั่งสามารถเขียนได้กระชับและมีประสิทธิภาพ
อย่างไรก็ตาม การเข้าใจประเด็นสำคัญเช่นการรวมค่าขอบเขตและการใช้ดัชนีที่เหมาะสมเป็นสิ่งสำคัญ
โดยใช้ความรู้นี้ คุณสามารถเพิ่มประสิทธิภาพการสืบค้นฐานข้อมูลและดึงข้อมูลที่ต้องการได้อย่างมีประสิทธิภาพ

10. แหล่งอ้างอิง

สำหรับรายละเอียดเพิ่มเติมและตัวอย่างการใช้งานเพิ่มเติม โปรดอ้างอิงเอกสารอย่างเป็นทางการของ MySQL และตำราเฉพาะด้านฐานข้อมูล
การฝึกเขียนคำสั่งด้วยตนเองจะทำให้ความเข้าใจในตัวดำเนินการ BETWEEN ลึกซึ้งยิ่งขึ้น