MySQL أين البند: و، أو، في، ليس في مثال الاستعلام
⚡ ملخص ذكي
MySQL تُستخدم عبارة WHERE لتصفية الصفوف قبل وصولها إلى مجموعة النتائج، وتطبيق معايير دقيقة على عبارات SELECT وUPDATE وDELETE. يُمكّن فهم عوامل AND وOR وIN وNOT IN وعوامل المقارنة المبتدئين من استرجاع السجلات المطلوبة بدقة.

ما هو حيث البند في MySQL?
حيث شرط in MySQL هي كلمة أساسية تستخدم لتحديد المعايير الدقيقة للبيانات أو الصفوف التي ستتأثر بجملة SQL المحددة. يمكن استخدام جملة WHERE مع جمل SQL مثل INSERT وUPDATE وSELECT وDELETE لتصفية السجلات وإجراء عمليات مختلفة على البيانات.
لقد نظرنا في كيفية الاستعلام عن البيانات من ملف قاعدة بيانات باستخدام عبارة SELECT في البرنامج التعليمي السابق. أرجعت عبارة SELECT كافة النتائج من جدول قاعدة البيانات الذي تم الاستعلام عنه.
مع ذلك، توجد أحيانًا أوقات نرغب فيها بتقييد نتائج الاستعلام بشرط محدد. تُعدّ عبارة WHERE في لغة SQL مفيدة في مثل هذه الحالات، وتعمل بنفس الطريقة في... استعلام الحذف أو التحديث كما هو الحال في استعلام SELECT.
حيث بناء الجملة
الصيغة الأساسية لعبارة WHERE هي كما يلي.
SELECT * FROM tableName WHERE condition;
هنا
- "اختر * من اسم الجدول" هو المعيار اختيار البيان
- "أين" الكلمة المفتاحية هي التي تحدد مجموعة النتائج، و "حالة" هو عامل التصفية المطبق على النتائج. قد يكون عامل التصفية نطاقًا أو قيمة واحدة أو استعلامًا فرعيًا.
لنفترض أننا نريد تفاصيل عضو من جدول الأعضاء، علماً بأن رقم عضويته هو 1. البرنامج النصي أدناه يحقق ذلك.
SELECT * FROM `members` WHERE `membership_number` = 1;
تنفيذ هذا البرنامج النصي في MySQL طاولة العمل ينتج عن الأمر "myflixdb" النتيجة الموضحة أدناه.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
نادراً ما يكون شرط واحد كافياً. تجمع الأقسام أدناه بين WHERE و العوامل المنطقية.
حيث جملة جنبا إلى جنب مع - لأي لبس منطقي Operaتور
باستخدام عامل التشغيل المنطقي "و"، يتم إرجاع صف فقط إذا تم استيفاء جميع المعايير المحددة.
لنفترض أننا نريد جميع الأفلام في الفئة 2 التي تم إصدارها في عام 2008. يحقق النص البرمجي أدناه ذلك.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
يؤدي تنفيذ البرنامج النصي أعلاه على "myflixdb" إلى النتيجة التالية.
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
و يُضيّق نطاق النتائج. أو يُوسّعه.
حيث جملة جنبا إلى جنب مع - OR منطقي Operaتور
باستخدام عامل التشغيل OR، يتم إرجاع صف إذا تم استيفاء أي من المعايير المحددة.
يقوم البرنامج النصي التالي باستخراج جميع الأفلام إما في الفئة 1 أو الفئة 2.
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
تظهر مجموعة النتائج أدناه.
| 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 |
يصبح ربط العديد من شروط "أو" أمراً صعباً للقراءة. الكلمة المفتاحية "IN" تحل هذه المشكلة.
حيث جملة جنبا إلى جنب مع - IN البحث عن كلمة
عند استخدام عبارة WHERE مع الكلمة المفتاحية IN، فإنها تؤثر فقط على الصفوف التي تتطابق قيمها مع القائمة المُقدمة. يقلل استخدام IN من عدد عبارات OR التي قد تحتاج إلى كتابتها.
ما يلي MySQL يُظهر استعلام WHERE IN الصفوف التي يكون فيها membership_number إما 1 أو 2 أو 3.
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
تظهر مجموعة النتائج أدناه.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 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 |
يقوم خيار "ليس داخل" بتنفيذ التصفية المعاكسة.
حيث جملة جنبا إلى جنب مع - ليس في البحث عن كلمة
باستخدام الكلمة المفتاحية NOT IN، تستبعد عبارة WHERE كل صف تتطابق قيمته مع القائمة المقدمة.
الاستعلام التالي يعطي الصفوف حيث يكون رقم العضوية ليس 1 أو 2 أو 3.
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
تظهر مجموعة النتائج أدناه.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
يقوم WHERE أيضًا بتصفية القيم حسب الحجم والمساواة، باستخدام عوامل المقارنة.
حيث جملة جنبا إلى جنب مع - مقارنة Operaالاختصاصات
يمكن استخدام عوامل المقارنة الأصغر من (<)، والمساوي (=)، والأكبر من (>)، وغير المساوي (<>) مع عبارة WHERE.
= يساوي
يحصل البرنامج النصي التالي على جميع الأعضاء الإناث من جدول الأعضاء باستخدام عامل المقارنة.
SELECT * FROM `members` WHERE `gender` = 'Female';
تظهر مجموعة النتائج أدناه.
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 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 * FROM `payments` WHERE `amount_paid` > 2000;
تظهر مجموعة النتائج أدناه.
| 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;
تظهر مجموعة النتائج أدناه.
| 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 |
مرجع سريع: جملة WHERE Operaالاختصاصات
يُلخّص الجدول أدناه عوامل التشغيل الأكثر استخدامًا مع عبارة WHERE. تظهر التعريفات الكاملة في MySQL مرجع المشغل.
| المُشغل | معنى | مثال على الشرط |
|---|---|---|
| = | يساوي | `gender` = 'أنثى' |
| <> | لا يساوي | `category_id` <> 1 |
| > / | أكبر من / أصغر من | `amount_paid` > 2000 |
| و / أو | جميع المعايير / أي معيار | `category_id` = 2 AND `year_released` = 2008 |
| داخل / ليس داخل | يطابق / يستبعد قائمة | `membership_number` IN (1,2,3) |
| فارغ / غير فارغ | اختبارات القيم المفقودة | `postal_address` IS NULL |
⚠️ ملاحظة: لا تتطابق قيمة NULL مع القيمتين = أو <>. استخدم IS NULL أو IS NOT NULL عندما لا يحتوي العمود على أي قيمة.
لغز ذهني: ابحث عن الأفلام التي تم إرجاعها متأخرة
لنفترض أننا نريد الأفلام المستأجرة التي لم تُعاد قبل تاريخ 25/06/2012. يمكن تحقيق ذلك باستخدام جملة WHERE مع عامل المقارنة "أصغر من" وعامل 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 |

