MySQL: شرح مفصل لمُشغِّلات وتعبيرات MySQL

آخر تحديث: 2026-08-26

تُعد العوامل الأساسية ركيزة استعلامات SQL — فكل شرط في جملة WHERE يعتمد عليها.

يقدم هذا الدرس نظرة عامة منهجية على جميع عوامل التشغيل في MySQL وحالات استخدامها.

100%
graph TB
    A[MySQL Operators] --> B[Arithmetic Operators<br/>+ - * / DIV %]
    A --> C[Comparison Operators<br/>= != > < BETWEEN LIKE IN]
    A --> D[Logical Operators<br/>AND OR NOT XOR]
    A --> E[Bitwise operators<br/>& | ^ ~ << >>]
    C --> C1[BETWEEN Scope]
    C --> C2[IN List]
    C --> C3[LIKE Blurred]
    C --> C4[IS NULL Null value]
    C --> C5[<=> Safety equals]

1. ما ستتعلمه



2. قصة حقيقية وراء تقرير ما

(1) المشكلة: إدخال معايير التصفية بشكل غير صحيح

يرغب أحد أخصائيي العمليات في البحث عن «الطلبات الصادرة خلال آخر 30 يومًا التي يتجاوز مبلغها 100 وتكون حالتها غير "ملغاة"»:

SQL
-- Incorrect Formulation
SELECT * FROM orders 
WHERE order_date > '2026-06-03' AND amount > 100 AND status != 'cancelled';

-- Missed: status could be NULL

(2) إيجاد قيم العوامل

SQL
-- Correct Way: Handle NULL
SELECT * FROM orders 
WHERE order_date > DATE_SUB(CURDATE(), INTERVAL 30 DAY)
  AND amount > 100
  AND (status != 'cancelled' OR status IS NULL);

المزايا: لا يتم تجاهل أي قيم NULL، مما يضمن دقة نتائج الاستعلام.



3. العوامل الحسابية

المشغل الوصف مثال
+ إضافة SELECT 1 + 1; → 2
- الطرح SELECT 5 - 3; → 2
* الضرب SELECT 2 * 3; → 6
/ القسم SELECT 10 / 3; → 3.3333
DIV القسمة الصحيحة SELECT 10 DIV 3; → 3
% المودولوس SELECT 10 % 3; → 1
MOD المودولوس SELECT MOD(10, 3); → 1

▶ مثال: العمليات الحسابية

SQL
-- Calculate the total order amount
SELECT 
    product_name,
    price,
    quantity,
    price * quantity AS total
FROM order_items;

-- Calculate the discounted price
SELECT 
    product_name,
    original_price,
    discount_rate,
    original_price * (1 - discount_rate / 100) AS sale_price
FROM products;
▶ جرّب الكود

الناتج:

TEXT 📖 للعرض فقط
+--------------+-------+----------+-------+
| product_name | price | quantity | total |
+--------------+-------+----------+-------+
| iPhone       | 999   |        2 | 1998  |
| MacBook      | 1999  |        1 | 1999  |
+--------------+-------+----------+-------+


4. عوامل المقارنة

المشغل الوصف مثال
= يساوي WHERE id = 1
<> أو != لا يساوي WHERE status != 'deleted'
< أقل من WHERE age < 18
> أكبر من WHERE price > 100
<= أقل من أو يساوي WHERE score <= 60
>= أكبر من أو يساوي WHERE amount >= 1000
النطاق BETWEEN WHERE age BETWEEN 18 AND 30
IN القائمة WHERE status IN ('active', 'pending')
LIKE مطابقة تقريبية WHERE name LIKE 'J%'
IS NULL قيمة فارغة WHERE email IS NULL
IS NOT NULL غير فارغ WHERE email IS NOT NULL
<=> «آمن» يساوي NULL <=> NULL → 1

▶ مثال: استعلام النطاق BETWEEN

SQL
-- Check prices between 100 and 500
SELECT * FROM products WHERE price BETWEEN 100 AND 500;

-- Equivalent to
SELECT * FROM products WHERE price >= 100 AND price <= 500;

-- Query orders within a specific date range
SELECT * FROM orders WHERE order_date BETWEEN '2026-01-01' AND '2026-06-30';
▶ جرّب الكود

▶ مثال: استعلام قائمة IN

SQL
-- Query Orders with a Specific Status
SELECT * FROM orders WHERE status IN ('pending', 'paid', 'shipped');

-- Equivalent to
SELECT * FROM orders WHERE status = 'pending' OR status = 'paid' OR status = 'shipped';

-- Search for employees in a specific department
SELECT * FROM employees WHERE department_id IN (1, 3, 5, 7);
▶ جرّب الكود

▶ مثال: المطابقة التقريبية باستخدام LIKE

SQL
-- % Match any number of characters
SELECT * FROM users WHERE name LIKE 'J%';       -- Starts with J
SELECT * FROM users WHERE name LIKE '%son';     -- Ends with son
SELECT * FROM users WHERE name LIKE '%john%';   -- Contains john

-- _ Match a single character
SELECT * FROM users WHERE phone LIKE '138____1111'; -- Positions 4-7 can be any digit

-- ESCAPE Escape
SELECT * FROM files WHERE name LIKE '%\%%' ESCAPE '\\'; -- Contains %
▶ جرّب الكود

▶ مثال: مقارنة القيم NULL

SQL
-- NULL cannot be compared with =
SELECT * FROM users WHERE email = NULL;    -- Wrong, returns null
SELECT * FROM users WHERE email IS NULL;   -- Correct

-- NULL cannot be compared with !=
SELECT * FROM users WHERE email != NULL;   -- Wrong
SELECT * FROM users WHERE email IS NOT NULL; -- Correct

-- Safe equals <=>
SELECT NULL = NULL;    -- NULL (Uncertain)
SELECT NULL <=> NULL;  -- 1 (Determines if equal)
▶ جرّب الكود

5. العوامل المنطقية

المشغل الوصف مثال
AND «و» المنطقي WHERE a = 1 AND b = 2
OR «أو» المنطقي WHERE a = 1 OR b = 2
NOT النفي المنطقي WHERE NOT (status = 'deleted')
XOR أو الحصري WHERE a = 1 XOR b = 2

▶ مثال: الجمع بين «AND» و«OR»

SQL
-- AND: Both conditions must be met
SELECT * FROM employees 
WHERE department = 'Engineering' AND salary > 8000;

-- OR: Meets any one of the conditions
SELECT * FROM employees 
WHERE department = 'Sales' OR department = 'Marketing';

-- Combination: Note priority (AND > OR)
SELECT * FROM employees 
WHERE (department = 'Sales' OR department = 'Marketing')
  AND salary > 5000;
▶ جرّب الكود

▶ مثال: NOT (النفي)

SQL
-- NOT IN
SELECT * FROM products WHERE category_id NOT IN (1, 2, 3);

-- NOT BETWEEN
SELECT * FROM orders WHERE amount NOT BETWEEN 100 AND 500;

-- NOT LIKE
SELECT * FROM users WHERE email NOT LIKE '%@test.com';

-- NOT EXISTS
SELECT * FROM customers c
WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);
▶ جرّب الكود

6. عوامل العمليات البتية

المشغل الوصف مثال
& عملية «AND» على مستوى البتات SELECT 5 & 3; → 1
| عملية «أو» على مستوى البتات SELECT 5 | 3; → 7
^ عملية XOR على مستوى البتات SELECT 5 ^ 3; → 6
~ عملية «NOT» على مستوى البت SELECT ~5; → -6
<< الإزاحة إلى اليسار SELECT 1 << 3; → 8
>> الإزاحة إلى اليمين SELECT 8 >> 2; → 2

▶ مثال: تطبيقات العمليات على البتات

SQL
-- Permission system (Bit mask)
-- Read=1, Write=2, Execute=4
CREATE TABLE permissions (
    user_id INT,
    permission TINYINT
);

-- User has Read+Write permissions = 1|2 = 3
INSERT INTO permissions VALUES (1, 3);

-- Check for write permission (3 & 2 = 2, non-zero means "yes")
SELECT * FROM permissions WHERE permission & 2;
▶ جرّب الكود

7. أولوية العمليات الحسابية

من الأعلى إلى الأدنى:

الأولوية المشغل
1 ! (ليس)
2 - (علامة السالب)، ~ (ليس)
3 ^ (XOR)
4 *، /، DIV، %، MOD
5 +، -
6 <<، >>
7 &
8 |
9 =، <=>، <>، !=، <، <=، >، >=، LIKE، IN، BETWEEN
10 AND، &&
11 OR، ||، XOR
💡 نصيحة: إذا كنت غير متأكد من الأولوية، فاستخدم الأقواس () لتحديد ترتيب التنفيذ.



❓ أسئلة شائعة

س ما الفرق بين = و<=>؟
ج تُرجع = القيمة NULL عند مقارنتها بـ NULL، بينما تُرجع <=> القيمة 1 (مما يشير إلى التساوي) عند مقارنتها بـ NULL. <=> هو عامل تساوي آمن خاص بـ MySQL.
س أيهما أسرع، LIKE أم REGEXP؟
ج LIKE أسرع (يمكنه استخدام فهرس)، في حين أن REGEXP أكثر مرونة (يستخدم التعبيرات النمطية). استخدم LIKE للمطابقات البسيطة.
س ما هي أولوية العلامتين AND و OR؟
ج العلامة AND لها أولوية أعلى من العلامة OR. WHERE a=1 OR b=2 AND c=3 تعادل WHERE a=1 OR (b=2 AND c=3). يُنصح باستخدام الأقواس من أجل الوضوح.
س ما هي نتيجة أي عملية تتضمن القيمة NULL؟
ج أي عملية تتضمن القيمة NULL تسفر عن القيمة NULL. 1 + NULL = NULL، 'abc' || NULL = NULL.

📖 ملخص


📝 تمارين

  1. المسألة الأساسية (الصعوبة ⭐): اكتب استعلامًا للبحث عن المنتجات التي يتراوح سعر بيعها بين 100 و500، ومخزونها أكبر من 0، واسمها يحتوي على كلمة "phone".

  2. مشكلة متقدمة (درجة الصعوبة ⭐⭐): اكتب استعلامًا للبحث عن الطلبات التي تمت خلال الأيام السبعة الماضية، والتي يزيد مبلغها عن 200، وحالتها «مدفوعة» أو «مشحونة»، وعنوان البريد الإلكتروني للعميل غير فارغ.

  3. التحدي (مستوى الصعوبة: ⭐⭐⭐): صمم نظام أذونات يستخدم العمليات على مستوى البتات لتخزين والتحقق من أذونات القراءة والكتابة والتنفيذ الخاصة بالمستخدم.

Web-Tutorial.com

فريق Web-Tutorial التقني

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

100%