شرح SQL WHERE Clause مع أمثلة عملية على التصفية والتحديث والحذف

دقائق القراءة: 5

مقدمة: لماذا تُعد WHERE من أهم أدوات SQL؟

عند التعامل مع قواعد البيانات، لا يكون من المنطقي دائماً تنفيذ الأوامر على جميع السجلات داخل الجدول. ففي كثير من الحالات تحتاج إلى استهداف مجموعة محددة فقط من الصفوف بناءً على شرط معيّن. وهنا تظهر أهمية العبارة WHERE في SQL، لأنها تمنحك تحكماً دقيقاً في السجلات التي تريد قراءتها أو تعديلها أو حذفها.

وتزداد أهمية WHERE في العمليات الحساسة مثل UPDATE وDELETE، لأن تجاهلها قد يؤدي إلى تعديل كل البيانات أو حذفها بالكامل عن طريق الخطأ، وهو ما قد يسبب خسائر كبيرة في بيئات العمل الحقيقية.

شرح احترافي لعبارة WHERE في SQL مع أمثلة على تصفية السجلات داخل قواعد البيانات

صياغة WHERE في SQL

تُستخدم العبارة WHERE بعد تحديد الجدول المطلوب والعملية المراد تنفيذها، ثم يُكتب الشرط الذي يجب أن يتحقق في السجلات المستهدفة.

SELECT column1, column2
FROM table_name
WHERE condition;

ورغم أن هذا الشكل يظهر غالباً مع الأمر SELECT، فإن استخدام WHERE لا يقتصر عليه فقط، بل يمكن توظيفها أيضاً مع أوامر مثل UPDATE وDELETE.

جدول المستخدمين المستخدم في الأمثلة

لفهم طريقة عمل WHERE بشكل أوضح، سنعتمد على جدول افتراضي باسم users يحتوي على بيانات مستخدمين مثل الاسم والعمر والولاية والبريد الإلكتروني.

id name age state email
1 Brian 15 Michigan brian@example.com
2 Leonard 55 Mississippi leonard@example.com
3 Anvil 31 South Dakota anvil@example.com
4 Jo 44 Maine jo@example.com
5 Meredith 43 Delaware meredith@example.com
6 Cody 16 Michigan cody@example.com
7 Dilara 50 Ohio dilara@example.com
8 Corbin 47 Wisconsin corbin@example.com
9 Gin 63 Illinois gin@example.com
10 Alice 50 Nevada alice@example.com
11 Zachary 21 Massachusetts zachery@example.com
12 Delmar 56 Idaho delmar@example.com
13 Dennie 96 Ohio dennie@example.com
14 Aaron 50 Florida aaron@example.com
15 Busrah 18 South Dakota busrah@example.com
16 Aveline 88 Nevada aveline@example.com
17 Aherin 72 Arkansas aherin@example.com
18 Viola 66 Maine viola@example.com
19 Nadya 22 Florida nadya@example.com
20 Izabela 61 Arizona izabela@example.com

استخدام WHERE مع SELECT لتصفية النتائج

اختيار المستخدمين الذين أعمارهم 50 سنة فأكثر

إذا أردت عرض المستخدمين الذين يبلغون 50 عاماً أو أكثر فقط، يمكنك كتابة الاستعلام التالي:

SELECT * FROM users
WHERE age >= 50;

هذا الاستعلام يعرض فقط السجلات التي تحقق الشرط الموجود بعد WHERE. والنتيجة ستكون مجموعة المستخدمين الأكبر سناً دون بقية الصفوف.

id name age state email
2 Leonard 55 Mississippi leonard@example.com
7 Dilara 50 Ohio dilara@example.com
9 Gin 63 Illinois gin@example.com
10 Alice 50 Nevada alice@example.com
12 Delmar 56 Idaho delmar@example.com
13 Dennie 96 Ohio dennie@example.com
14 Aaron 50 Florida aaron@example.com
16 Aveline 88 Nevada aveline@example.com
17 Aherin 72 Arkansas aherin@example.com
18 Viola 66 Maine viola@example.com
20 Izabela 61 Arizona izabela@example.com

استخدام WHERE مع DELETE لحذف سجل محدد

من أخطر أوامر SQL الأمر DELETE، لأن تنفيذه دون شرط قد يؤدي إلى حذف جميع السجلات من الجدول. لذلك من الضروري استخدام WHERE لتحديد الصف المستهدف بدقة.

إذا قرر المستخدم Cody إزالة بياناته من الجدول، فيمكن حذف سجله فقط باستخدام الاستعلام التالي:

DELETE FROM users
WHERE name IS "Cody";

بعد تنفيذ هذا الأمر، سيُحذف السجل الذي يخص Cody فقط، بينما تبقى بقية البيانات كما هي.

استخدام WHERE مع UPDATE لتعديل بيانات سجل معين

عند الحاجة إلى تحديث قيمة داخل سجل واحد أو مجموعة سجلات معيّنة، فإن WHERE تحميك من تعديل كل الصفوف في الجدول دون قصد.

على سبيل المثال، إذا أصبحت قيمة عمر المستخدم Anvil هي 32 بدلاً من 31، يمكن تنفيذ التحديث كالتالي:

UPDATE users
SET age = 32
WHERE name IS "Anvil";

هذا الاستعلام يضمن تعديل سجل Anvil فقط، وهو ما يجعل عمليات التحديث أكثر أماناً ودقة.

أهم المعاملات المستخدمة مع WHERE

يمكنك كتابة شروط متنوعة داخل WHERE باستخدام معاملات المقارنة والبحث. من أشهر هذه المعاملات:

  • = للمساواة.
  • > لأكبر من.
  • < لأصغر من.
  • >= لأكبر من أو يساوي.
  • <= لأصغر من أو يساوي.
  • <> أو != لعدم المساواة، حسب نسخة SQL.
  • BETWEEN لتحديد نطاق.
  • LIKE للمطابقة النمطية.
  • IN للتحقق من وجود قيمة ضمن قائمة.
  • IS وNOT وAND وOR لبناء شروط مركبة.

وتُستخدم المعاملات الرقمية مثل > و< و>= و<= غالباً مع الأرقام، بينما تصلح = و<> للاستخدام مع أنواع بيانات متعددة.

شرح BETWEEN في SQL

تحديد نطاق عمري معيّن

يتيح لك المعامل BETWEEN اختيار السجلات التي تقع قيمها ضمن مجال محدد. فإذا أردت جلب المستخدمين الذين تتراوح أعمارهم بين 24 و51، يمكنك كتابة:

SELECT * FROM users
WHERE age BETWEEN 24 AND 51;

وسيُرجع هذا الاستعلام جميع السجلات التي تقع قيمة age فيها داخل هذا النطاق، بما يشمل الحدين في أغلب أنظمة SQL.

id name age state email
3 Anvil 32 South Dakota anvil@example.com
4 Jo 44 Maine jo@example.com
5 Meredith 43 Delaware meredith@example.com
7 Dilara 50 Ohio dilara@example.com
8 Corbin 47 Wisconsin corbin@example.com
10 Alice 50 Nevada alice@example.com
14 Aaron 50 Florida aaron@example.com

شرح LIKE في SQL

البحث باستخدام الأنماط

المعامل LIKE مفيد جداً عندما لا تبحث عن قيمة حرفية كاملة، بل عن نمط معيّن داخل النصوص. على سبيل المثال، إذا أردت العثور على جميع الأسماء التي تبدأ بالحرف A، فاستخدم:

SELECT * FROM users
WHERE name LIKE "A%";

هذا الاستعلام يعرض كل اسم يبدأ بالحرف A.

id name age state email
3 Anvil 32 South Dakota anvil@example.com
10 Alice 50 Nevada alice@example.com
14 Aaron 50 Florida aaron@example.com
16 Aveline 88 Nevada aveline@example.com
17 Aherin 72 Arkansas aherin@example.com

كيفية بناء الأنماط مع LIKE

يعتمد LIKE على رمزين شائعين لتكوين الأنماط:

  • %: يمثل أي عدد من الأحرف، بما في ذلك صفر أو حرف واحد أو أكثر.
  • _: يمثل حرفاً واحداً فقط.

فعلى سبيل المثال، النمط "_ook" يمكن أن يطابق كلمات مثل book أو look أو nook، بينما النمط "%ook" قد يطابق أيضاً ook أو phonebook.

شرح IN في SQL

اختيار القيم من قائمة محددة

يُستخدم المعامل IN عندما تريد اختبار ما إذا كانت قيمة العمود تنتمي إلى مجموعة من القيم المحتملة. وهو بديل أنظف من كتابة سلسلة طويلة من الشروط باستخدام OR.

في المثال التالي، نبحث عن المستخدمين المقيمين في ولايات الساحل الشرقي:

SELECT * FROM users
WHERE state IN (
  "Maine",
  "New Hampshire",
  "Massachusetts",
  "Rhode Island",
  "Connecticut",
  "New York",
  "New Jersey",
  "Delaware",
  "Maryland",
  "Virginia",
  "North Carolina",
  "South Carolina",
  "Georgia",
  "Florida"
);

يقارن هذا الشرط قيمة العمود state بالقيم الموجودة داخل القائمة، ويُرجع السجلات المتطابقة فقط.

id name age state email
4 Jo 44 Maine jo@example.com
5 Meredith 43 Delaware meredith@example.com
11 Zachary 21 Massachusetts zachery@example.com
14 Aaron 50 Florida aaron@example.com
18 Viola 66 Maine viola@example.com
19 Nadya 22 Florida nadya@example.com

استخدام IS وNOT وAND وOR

المعامل IS

يُستخدم IS في هذا السياق للتحقق من تطابق القيمة مع قيمة محددة كما في المثال:

WHERE name IS "Cody"

المعامل NOT

إذا أردت عكس الشرط، يمكنك استخدام NOT. على سبيل المثال، الشرط التالي يختار المستخدمين الذين تقع أعمارهم خارج النطاق من 24 إلى 51:

SELECT * FROM users
WHERE age NOT BETWEEN 24 AND 51;

وبناءً على هذا الشرط، ستظهر السجلات التي أعمار أصحابها أقل من 24 أو أكبر من 51.

المعامل AND

يُستخدم AND عندما يجب أن يتحقق شرطان أو أكثر معاً. المثال التالي يعرض المستخدمين الذين تبدأ أسماؤهم بالحرف A وأعمارهم أكبر من 70:

SELECT * FROM users
WHERE name LIKE "A%" AND age > 70;

وهنا يجب أن يتحقق الشرطان في الوقت نفسه حتى يظهر السجل في النتائج.

id name age state email
16 Aveline 88 Nevada aveline@example.com
17 Aherin 72 Arkansas aherin@example.com

المعامل OR

أما OR فيكفي معه تحقق أحد الشرطين فقط. على سبيل المثال:

SELECT * FROM users
WHERE name LIKE "A%" OR age > 70;

هذا الاستعلام يعرض السجلات التي يبدأ اسمها بالحرف A أو التي يزيد عمر صاحبها على 70، سواء تحقق أحد الشرطين أو كلاهما.

id name age state email
3 Anvil 32 South Dakota anvil@example.com
10 Alice 50 Nevada alice@example.com
13 Dennie 96 Ohio dennie@example.com
14 Aaron 50 Florida aaron@example.com
16 Aveline 88 Nevada aveline@example.com
17 Aherin 72 Arkansas aherin@example.com

نصائح عملية لتجنّب الأخطاء عند استخدام WHERE

  • اختبر الاستعلام أولاً باستخدام SELECT قبل تشغيل UPDATE أو DELETE.
  • تأكد من دقة أسماء الأعمدة والقيم النصية.
  • استخدم شروطاً واضحة ومحددة، خصوصاً عند العمل على قواعد بيانات إنتاجية.
  • إذا كانت البيانات حساسة، نفّذ نسخة احتياطية قبل أوامر التعديل الجماعي.
  • احرص على فهم أولوية الشروط عند الجمع بين AND وOR، واستخدم الأقواس عند الحاجة.

الخلاصة التقنية

تُعد العبارة WHERE حجر الأساس في كتابة استعلامات SQL الدقيقة والآمنة. فهي لا تقتصر على تصفية النتائج في SELECT، بل تؤدي دوراً حاسماً في حماية البيانات عند تنفيذ أوامر UPDATE وDELETE. ومن الناحية العملية، كلما أتقنت استخدام المعاملات مثل BETWEEN وLIKE وIN وAND وOR، أصبحت قادراً على بناء استعلامات أكثر مرونة وكفاءة وملاءمة لاحتياجات التطبيقات الحقيقية.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *