Clause SQL WHERE จำกัดจำนวนเรคอร์ดที่คืนค่าหรือได้รับผลกระทบจากคำสั่ง ใช้กับ SELECT, UPDATE, และ DELETE clauses สามารถใช้คีย์เวิร์ด AND ระบุหลายเงื่อนไขที่ต้องการให้เรคอร์ดตรงตาม
คุณอาจต้องการกรองผลลัพธ์คิวรี่ด้วยเงื่อนไขเฉพาะ เช่น ต้องการรายชื่อพนักงานที่เป็นผู้จัดการขาย หรือต้องการรู้ว่าใครเริ่มทำงานหลังวันที่กำหนด
สามารถใช้ clause WHERE กรองเรคอร์ดเฉพาะขณะรันคำสั่ง SQL คำสั่งนี้ทำงานร่วมกับ SELECT, UPDATE, และ DELETE clauses ในคู่มือนี้ เราจะครอบคลุมวิธีใช้ WHERE clause กรองเรคอร์ดใน SQL
SQL WHERE Clause
Clause SQL WHERE กรองเรคอร์ดที่ตรงเงื่อนไขเฉพาะหรือชุดเงื่อนไข WHERE clause มาหลัง clause "FROM" ในคำสั่ง SQL
ไวยากรณ์:
SELECT * FROM table WHERE column comparison value;
"SELECT * FROM table" เป็นคิวรี่ select มาตรฐาน เราใช้ WHERE statement จำกัดเรคอร์ดที่คิวรี่คืน "column" หมายถึงคอลัมน์ที่เงื่อนไขต้องตรง "comparison" และ "value" แทนการเปรียบเทียบที่ต้องการ
ตัวเปรียบเทียบที่เป็นไปได้:
WHERE name == "Jeff"; WHERE age > 15; WHERE salary < 50000;
สามารถระบุหลาย WHERE statements ด้วยคีย์เวิร์ด SQL AND:
SELECT * FROM table WHERE column1 comparison1 value1 AND column2 comparison2 value2;
ตัวอย่าง SQL WHERE: SELECT
ต้องการรายชื่อพนักงานที่เป็น Senior Sales Associate ใช้คำสั่ง SQL SELECT:
SELECT name, title FROM employees WHERE title = 'Senior Sales Associate';
คิวรี่คืนแถวที่ตรงเงื่อนไข:
name | title
——-+————————
Geoff | Senior Sales Associate
Adam | Senior Sales Associate
(2 แถว)
พนักงานทั้งสองมีตำแหน่ง "Senior Sales Associate"
ตัวอย่างอีกอย่าง: ต้องการพนักงานที่เงินเดือนเกิน $35,000 และชื่อไม่ใช่ Adam ใช้คำสั่ง:
SELECT name, salary FROM employees WHERE salary > 35000 AND name <> "Adam";
ผลลัพธ์:
name | salary
——-+——–
Geoff | 38000
Emma | 50000
Jonah | 50000
Adam | 38000
(4 แถว)
ชื่อ Adam ไม่อยู่ในผลลัพธ์ แม้เงินเดือนเกิน $35,000 เพราะเรากรองชื่อเขาออกด้วย operator <>
WHERE SQL Clause: Update และ Delete
SQL WHERE clause ทำงานกับ UPDATE และ DELETE statements
เช่น ต้องการอัปเดตชื่อสาขาที่พนักงานทำงาน หากมีการปรับโครงสร้างองค์กร ใช้ UPDATE statement
ต้องการเปลี่ยนสาขาของ Luke จาก "Boston" เป็น "Cambridge" ที่สำนักงานใหม่ ใช้ SQL UPDATE:
UPDATE employees SET branch = 'Cambridge' WHERE name = 'Luke';
ถ้าสืบค้นสาขาของ Luke ได้ผลลัพธ์:
name | branch
——+———–
Luke | Cambridge
(1 แถว)
สามารถใช้ WHERE clause ร่วมกับ SQL DELETE command
สมมติต้องการลบเรคอร์ดพนักงานทุกคนในสาขา Albany ที่ปิดทำการ ใช้คำสั่ง:
DELETE FROM employees WHERE branch = 'Albany';
เมื่อดูรายชื่อพนักงาน จำนวนแถวเหลือ 6 จากเดิม 8:
name | branch
——–+—————
Mike | Stamford
Hannah | San Francisco
Geoff | San Francisco
Alexis | Boston
Adam | Sacramento
Luke | Cambridge
(6 แถว)
SQL Operators (ตัวดำเนินการ)
SQL WHERE clause ใช้ logical operators กรองเรคอร์ด ในตัวอย่างแรก เราใช้ operator "เท่ากับ" (is equal to) ตรวจสอบชื่อ Senior Sales Associates
มี logical operators หลายตัวสำหรับกรองเรคอร์ดกับ clause นี้:
| Operator | Description | Example |
| = | เท่ากับ (Is equal to) | WHERE name = ‘Jake’ |
| > | มากกว่า (Is greater than) | age > 20 |
| < | น้อยกว่า (Is less than) | age < 20 |
| >= | มากกว่าหรือเท่ากับ (Greater than or equal to) | salary >= 50000 |
| <= | น้อยกว่าหรือเท่ากับ (Less than or equal to) | salary <= 40000 |
| LIKE | จับคู่รูปแบบ (Pattern matching) | name LIKE ‘Jo*’ |
| IN | ตรวจสอบค่าที่ตรงกับรายการ (Check if value matches any in list) | title IN (‘Sales Associate’, ‘Director of Sales’) |
| BETWEEN | ตรวจสอบค่าอยู่ในช่วง (Check if value within range) | employee_month_awards BETWEEN 1 AND 5 |
สรุป
Clause SQL WHERE กรองเรคอร์ดที่ได้รับผลกระทบจากคำสั่ง ใช้กับ SELECT, UPDATE, และ DELETE statements สามารถระบุหลาย WHERE clauses ด้วย AND statement แต่ต้องใช้คีย์เวิร์ด WHERE เพียงครั้งเดียว
ในบทช่วยสอนนี้ เราครอบคลุมคิวรี่ SQL WHERE clauses และวิธีใช้ใน update หรือ delete operation พร้อมตัวดำเนินการเงื่อนไขที่ใช้กับ clause นี้
สนใจเป็น SQL developer มืออาชีพ? ดูคู่มือ How to Learn SQL ของเรา มีรายการแหล่งเรียนรู้ชั้นนำช่วยคุณเชี่ยวชาญ SQL