English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

مؤشرات SQL AND و OR

في هذا الدرس، ستعلم كيفية استخدام AND & OR في جملة WHERE لفرز السجلات بناءً على عدة شروط.

اختيار السجلات بناءً على الشروط

في الفصل السابق، تعلمنا كيفية استخدام جملة WHERE مع شرط واحد للحصول على سجلات من الجدول. ولكن في بعض الأحيان تحتاج إلى فرز السجلات بناءً على عدة شروط، مثل اختيار المستخدمين الذين تزيد أعمارهم عن 30 عامًا في منطقة البلد/المنطقة الأمريكية، اختيار المنتجات التي تقل أسعارها عن 100 دولار وتزيد تقييماتها عن 4، وما إلى ذلك.

AND

AND هو عامل منطقي يجمع بين شروطين، ويقوم بالعودة TRUE فقط إذا كانت نتائج الشروطين TRUE. عادة ما يستخدم فيSELECT،UPDATE،DELETEجملةWHEREاستخدام AND في جملة WHERE لتشكيل الشروط لفرز مجموعة النتائج.

SELECT column1_name, column2_name, columnN_name FROM table_name WHERE condition1 AND condition2;

دعنا نرى بعض الأمثلة على كيفية عملها في الواقع.

افترض أن لدينا قاعدة بيانات تحتوي على جدول يسمىemployeesالمحتويات التالية للجدول:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |   5000 |       4 |
|         2           | Tony Montana | 2002-07-15 |         6500           |                 1                     |
|         3           | Sarah Connor | 2005-10-18 |         8000           |                 5                     |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 |   NULL |
+--------+--------------+------------+--------+---------+

استخدام WHERE مع عامل AND

هذا الجملة SQL سينفذ فقط منemployeesالجدول يعود براتب (salary) تزيد عن 7000 وdept_idكل الموظفين الذين يساوي راتبهم 5.

SELECT * FROM employees
WHERE salary > 7000 AND dept_id = 5;

بعد تنفيذها، ستحصل على النتيجة التالية:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|         3           | Sarah Connor | 2005-10-18 |         8000           |                 5                     |
+--------+--------------+------------+--------+---------+

عامل OR

بالمثل، العامل OR هو أيضًا عامل منطقي يجمع بين شروطين، ولكن إذا كان أي من الشروطين TRUE، فإنه سيعود TRUE.

هذا الجملة SQL سينفذ منemployeesالجدول يعود براتب (salary) تزيد عن 7000 أوdept_idكل الموظفين الذين يساوي راتبهم 5.

SELECT * FROM employees
WHERE salary > 7000 OR dept_id = 5;

هذه المرة، ستحصل على النتيجة التالية:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|         3           | Sarah Connor | 2005-10-18 |         8000           |                 5                     |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+

استخدام AND و OR في نفس الوقت

يمكنك أيضًا دمج AND و OR لإنشاء تعبيرات شرطية معقدة.

هذا الجملة SQL ستعود برواتب تزيد عن 5000، وأيضاًdept_idكل الموظفين الذين يساوي راتبهم 1 أو 5.

SELECT * FROM employees
WHERE salary > 5000 AND (dept_id = 1 OR dept_id = 5);

执行完上面的查询后,您将获得如下输出:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|         2           | Tony Montana | 2002-07-15 |         6500           |                 1                     |
|         3           | Sarah Connor | 2005-10-18 |         8000           |                 5                     |
+--------+--------------+------------+--------+---------+