MySQL WHERE ข้อ: และ, หรือ, ใน, ไม่อยู่ในตัวอย่างแบบสอบถาม

อะไรคือ WHERE ข้อใน MySQL?

ข้อที่ in MySQL เป็นคำสำคัญที่ใช้เพื่อระบุเกณฑ์ที่แน่นอนของข้อมูลหรือแถวที่จะได้รับผลกระทบจากคำสั่ง SQL ที่ระบุ สามารถใช้คำสั่ง WHERE ร่วมกับคำสั่ง SQL เช่น INSERT, UPDATE, SELECT และ DELETE เพื่อกรองระเบียนและดำเนินการต่างๆ กับข้อมูล

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

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

WHERE ข้อใน MySQL
WHERE ข้อใน MySQL

WHERE ไวยากรณ์ส่วนคำสั่ง

ไวยากรณ์พื้นฐานสำหรับส่วนคำสั่ง WHERE เมื่อใช้ใน MySQL คำสั่ง SELECT WHERE มีดังนี้

SELECT * FROM tableName WHERE condition;

ที่นี่

  • “เลือก * จากชื่อตาราง” เป็นมาตรฐาน คำสั่ง SELECT
  • "ที่ไหน" เป็นคำหลักที่จำกัดชุดผลลัพธ์แบบสอบถามแบบเลือกของเราและ "เงื่อนไข" เป็นตัวกรองที่จะใช้กับผลลัพธ์ ตัวกรองอาจเป็นช่วง ค่าเดียว หรือแบบสอบถามย่อย

ตอนนี้เรามาดูก ตัวอย่างการใช้งานจริง.

สมมติว่าเราต้องการรับรายละเอียดส่วนบุคคลของสมาชิกจากตารางสมาชิกโดยกำหนดหมายเลขสมาชิกเป็น 1 เราจะใช้สคริปต์ต่อไปนี้เพื่อให้บรรลุสิ่งนั้น

SELECT * FROM `members` WHERE `membership_number` = 1;

ดำเนินการสคริปต์ข้างต้นใน MySQL ปรับแต่ง ใน “myflixdb” จะแสดงผลลัพธ์ต่อไปนี้

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm

WHERE ข้อรวมกับ – AND ตรรกะ OperaTor

สภาพ WHERE ใน MySQL เมื่อใช้ร่วมกับตัวดำเนินการตรรกะ AND จะถูกดำเนินการเฉพาะในกรณีที่ตรงตามเกณฑ์ตัวกรองทั้งหมดที่ระบุเท่านั้น

ตอนนี้เรามาดูตัวอย่างในทางปฏิบัติ สมมติว่าเราต้องการรับรายชื่อภาพยนตร์ทั้งหมดในหมวด 2 ที่ออกฉายในปี 2008 เราจะใช้สคริปต์ที่แสดงด้านล่างเพื่อให้บรรลุเป้าหมายนั้น
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ “myflixdb” จะให้ผลลัพธ์ดังต่อไปนี้
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

WHERE ข้อรวมกับ – OR ตรรกะ OperaTor

คำสั่ง WHERE เมื่อใช้ร่วมกับตัวดำเนินการ OR จะถูกดำเนินการเฉพาะในกรณีที่ตรงตามเกณฑ์ตัวกรองที่ระบุบางส่วนหรือทั้งหมดเท่านั้น
สคริปต์ต่อไปนี้รวมภาพยนตร์ทั้งหมดในหมวด 1 หรือหมวด 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ “myflixdb” จะให้ผลลัพธ์ดังต่อไปนี้
movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

WHERE ข้อรวมกับ – IN คำหลัก

อยู่ที่ไหน MySQL clause เมื่อใช้ร่วมกับคีย์เวิร์ด IN จะมีผลกับแถวที่มีค่าตรงกับรายการค่าที่ระบุในคีย์เวิร์ด IN เท่านั้น ที่ MySQL คำสั่ง IN ช่วยลดจำนวนคำสั่ง OR ที่คุณอาจต้องใช้
ดังต่อไปนี้ MySQL WHERE IN แบบสอบถามให้แถวโดยที่ Membership_number เป็น 1 , 2 หรือ 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ “myflixdb” จะให้ผลลัพธ์ดังต่อไปนี้

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 rm@tstreet.com

WHERE ข้อรวมกับ – ไม่อยู่ใน คำหลัก

ส่วนคำสั่ง WHERE เมื่อใช้ร่วมกับคีย์เวิร์ด NOT IN จะไม่ส่งผลต่อแถวที่มีค่าตรงกับรายการค่าที่ระบุในคีย์เวิร์ด NOT IN
แบบสอบถามต่อไปนี้ให้แถวที่ membership_number ไม่ใช่ 1 , 2 หรือ 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ “myflixdb” จะให้ผลลัพธ์ดังต่อไปนี้

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

WHERE ข้อรวมกับ – เปรียบเทียบ Operaโปร

ตัวดำเนินการเปรียบเทียบค่าน้อยกว่า (), เท่ากับ (=), ไม่เท่ากับ () สามารถใช้กับคำสั่ง WHERE ได้

= เท่ากับ

สคริปต์ต่อไปนี้จะรับสมาชิกหญิงทั้งหมดจากตารางสมาชิกโดยใช้ตัวดำเนินการเปรียบเทียบเท่ากับ
SELECT * FROM `members` WHERE `gender` = 'Female';

ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ “myflixdb” จะให้ผลลัพธ์ดังต่อไปนี้

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

> มากกว่า

สคริปต์ต่อไปนี้จะรับการชำระเงินทั้งหมดที่มากกว่า 2,000 จากตารางการชำระเงิน
SELECT * จาก `การชำระเงิน` โดยที่ `amount_paid` > 2000;
ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ “myflixdb” จะให้ผลลัพธ์ดังต่อไปนี้
payment_id membership_number payment_date description amount_paid external_reference_number
1 1 23-07-2012 Movie rental payment 2500 11
3 3 30-07-2012 Movie rental payment 6000 NULL

< > ไม่เท่ากับ

สคริปต์ต่อไปนี้จะได้รับภาพยนตร์ทั้งหมดซึ่งมีรหัสหมวดหมู่ไม่ใช่ 1
SELECT * FROM `movies` WHERE `category_id`<> 1;
ดำเนินการสคริปต์ข้างต้นใน MySQL การใช้งาน workbench กับ “myflixdb” จะให้ผลลัพธ์ดังต่อไปนี้
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8

สรุป

  • ส่วนคำสั่ง SQL WHERE ใช้เพื่อจำกัดจำนวนแถวที่ได้รับผลกระทบจาก SELECT, UPDATE หรือ ลบแบบสอบถาม.
  • เงื่อนไข WHERE ใน SQL สามารถใช้ร่วมกับตัวดำเนินการเชิงตรรกะ เช่น AND และ OR ตัวดำเนินการเปรียบเทียบ เช่น ,= เป็นต้น
  • เมื่อใช้ร่วมกับ AND ตัวดำเนินการตรรกะจะต้องเป็นไปตามเกณฑ์ทั้งหมด
  • เมื่อใช้ร่วมกับตัวดำเนินการเชิงตรรกะ OR จะต้องเป็นไปตามเกณฑ์ใดเกณฑ์หนึ่ง
  • คำสำคัญ IN ใช้เพื่อเลือกแถวที่ตรงกับรายการค่า

ช่วยพัฒนาสมอง

ลองสมมติว่าเราต้องการรับรายการภาพยนตร์เช่าที่ยังไม่ได้ส่งคืนภายในวันที่ 25/06/2012 เราสามารถใช้คำสั่ง SQL WHERE ร่วมกับตัวดำเนินการเปรียบเทียบ less than และตัวดำเนินการตรรกะ AND เพื่อให้บรรลุผลดังกล่าว
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;

ดำเนินการสคริปต์ข้างต้นใน MySQL Workbench ให้ผลลัพธ์ต่อไปนี้

reference_number transaction_date return_date membership_number movie_id movie_returned
14 21-06-2012 24-06-2012 2 2 0