ตัวกรอง WHERE: ตัวดำเนินการเปรียบเทียบและตรรกะ
กรองแถวด้วย =, <>, , AND, OR, NOT และทำความเข้าใจลำดับความสำคัญของตัวดำเนินการกับวงเล็บ
ตัวกรอง WHERE: ตัวดำเนินการเปรียบเทียบและตรรกะ เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
บทบาทของ WHERE
WHERE ใช้กรองแถวก่อนการจัดกลุ่มหรือการรวมข้อมูล โดยจะส่งคืนเฉพาะแถวที่เพรดิเคตเป็น TRUE
ตัวดำเนินการเปรียบเทียบ
การเปรียบเทียบมาตรฐานใช้ได้กับชนิดข้อมูลที่สามารถเปรียบเทียบกันได้ทั้งหมด
SELECT * FROM products WHERE price > 100;
SELECT * FROM products WHERE price >= 100;
SELECT * FROM products WHERE price < 50;
SELECT * FROM products WHERE price <= 50;
SELECT * FROM products WHERE category = 'books';
SELECT * FROM products WHERE category <> 'books'; -- != also worksAND, OR, NOT
รวมเพรดิเคตเข้าด้วยกันด้วยตัวดำเนินการทางตรรกะ
-- Both true:
SELECT * FROM products
WHERE category = 'books' AND price < 50;
-- Either true:
SELECT * FROM products
WHERE category = 'books' OR category = 'music';
-- Negation:
SELECT * FROM products
WHERE NOT (category = 'books');ลำดับความสำคัญของตัวดำเนินการ
ลำดับความสำคัญ (จากสูงไปต่ำ) คือ NOT → AND → OR ควรใส่วงเล็บให้เพรดิเคตที่ซับซ้อนเสมอเพื่อความชัดเจน
-- Without parens — almost certainly wrong:
SELECT * FROM orders
WHERE status = 'open' OR status = 'pending' AND total > 100;
-- means: status = open OR (status = pending AND total > 100)
-- With parens — clearer:
SELECT * FROM orders
WHERE (status = 'open' OR status = 'pending') AND total > 100;IN และ NOT IN
ทางลัดสำหรับเงื่อนไข OR หลายรายการ
SELECT * FROM users
WHERE country IN ('US', 'CA', 'GB', 'AU');
-- Equivalent to:
SELECT * FROM users
WHERE country = 'US' OR country = 'CA' OR country = 'GB' OR country = 'AU';BETWEEN
การตรวจสอบช่วงแบบรวมค่าขอบเขต
SELECT * FROM orders
WHERE total BETWEEN 100 AND 500;
-- Equivalent to: total >= 100 AND total <= 500ตัวกรองที่ปลอดภัยเมื่อมี NULL
การเปรียบเทียบกับ NULL จะให้ผลเป็น NULL (ไม่ใช่ FALSE) และ WHERE จะตัดแถวที่มี NULL ออก ใช้ IS NULL / IS NOT NULL อย่างชัดเจนเมื่อต้องการ
-- Returns users where deleted_at is unknown:
SELECT * FROM users WHERE deleted_at IS NULL;
-- IS DISTINCT FROM treats NULL as a comparable value:
SELECT * FROM events WHERE status IS DISTINCT FROM 'closed';คอลัมน์บูลีน
คอลัมน์ BOOLEAN ไม่จำเป็นต้องใช้การเปรียบเทียบ
SELECT * FROM tasks WHERE done; -- = TRUE
SELECT * FROM tasks WHERE NOT done; -- = FALSE or NULL
SELECT * FROM tasks WHERE done IS NOT TRUE; -- FALSE or NULL onlyการจับคู่รูปแบบด้วย LIKE
% ตรงกับสตริงใด ๆ ส่วน _ ตรงกับอักขระหนึ่งตัวพอดี:
SELECT * FROM users WHERE email LIKE '%@gmail.com';
SELECT * FROM products WHERE sku LIKE 'A_-___';
-- Case-insensitive in PostgreSQL:
SELECT * FROM users WHERE email ILIKE '%@GMAIL.com';ตัวกรองและประสิทธิภาพ
ส่วนคำสั่ง WHERE คือจุดที่ดัชนีแสดงประโยชน์ออกมาอย่างเต็มที่ ตัวกรองแบบเท่ากับ (=) และแบบช่วง (<, BETWEEN) บนคอลัมน์ที่มีดัชนีจะเปลี่ยนการสแกนทั้งตารางให้เป็นการค้นหาที่ใช้เวลาเพียงระดับมิลลิวินาที
ลำดับการประเมินผล
ในเชิงตรรกะ ฐานข้อมูลจะประเมินตามลำดับ: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT ดังนั้น WHERE จะเห็นแถวดิบ ส่วนชื่อแฝงของคอลัมน์จาก SELECT ยังไม่ได้ถูกกำหนด
-- This fails — alias not visible in WHERE:
SELECT total * 0.9 AS discounted
FROM orders WHERE discounted > 100; -- ERROR
-- Repeat the expression instead, or wrap in a subquery.สรุป
WHERE เป็นเครื่องมือหลักสำหรับเลือกแถว
- ตัวดำเนินการเปรียบเทียบและตรรกะมาตรฐาน
- ใส่วงเล็บให้กับ AND/OR ที่ผสมกัน
- ใช้ IS NULL — อย่าใช้ = NULL
- WHERE บนคอลัมน์ที่มีดัชนีทำงานได้รวดเร็ว
ตรวจสอบความเข้าใจ
predicate ใดจะเก็บไว้เฉพาะแถวที่ age มากกว่าหรือเท่ากับ 18 และ country เป็น US
เรียนรู้ SQL ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 46
- บทเรียน
- 183
คำถามที่พบบ่อย
บทเรียน “ตัวกรอง WHERE: ตัวดำเนินการเปรียบเทียบและตรรกะ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตัวกรอง WHERE: ตัวดำเนินการเปรียบเทียบและตรรกะ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตัวกรอง WHERE: ตัวดำเนินการเปรียบเทียบและตรรกะ”
กรองแถวด้วย =, <>, , AND, OR, NOT และทำความเข้าใจลำดับความสำคัญของตัวดำเนินการกับวงเล็บ คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “ตัวกรอง WHERE: ตัวดำเนินการเปรียบเทียบและตรรกะ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม
ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การเลือกคอลัมน์และนิพจน์
- ตัวกรอง WHERE: ตัวดำเนินการเปรียบเทียบและตรรกะ
- ORDER BY สำหรับคอลัมน์เดียวและหลายคอลัมน์
- พื้นฐาน LIMIT, OFFSET และการแบ่งหน้า