القائمة الرئيسية

الصفحات

الدرس الثامن SQL

أهمية وضع الشروط في الإستعلامات

على الأغلب ستقوم بوضع شروط في أغلب الإستعلامات التي ستكتبها مستقبلاً و ذلك لأسباب عديدة أهمها تحديد البيانات التي تريد جلبها, حذفها أو التعديل عليها.

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

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

الرمز إستخدامه
= يستخدم هذا الرمز مع الأرقام و النصوص و التواريخ لتنفيذ الأمر في حال كانت القيم التي يتم مقارنتها متساوية.
!= يستخدم هذا الرمز مع الأرقام و النصوص و التواريخ لتنفيذ الأمر في حال كانت القيم التي يتم مقارنتها غير متساوية.
<> يستخدم هذا الرمز مع الأرقام و النصوص و التواريخ لتنفيذ الأمر في حال كانت القيم التي يتم مقارنتها غير متساوية.
> يستخدم هذا الرمز مع الأرقام و التواريخ لتنفيذ الأمر في حال كانت القيم التي يتم مقارنتها أكبر من قيمة محددة.
>= يستخدم هذا الرمز مع الأرقام و التواريخ لتنفيذ الأمر في حال كانت القيم التي يتم مقارنتها أكبر أو تساوي قيمة محددة.
< يستخدم هذا الرمز مع الأرقام و التواريخ لتنفيذ الأمر في حال كانت القيم التي يتم مقارنتها أصغر من قيمة محددة.
<= يستخدم هذا الرمز مع الأرقام و التواريخ لتنفيذ الأمر في حال كانت القيم التي يتم مقارنتها أصغر أو تساوي قيمة محددة.

في حال أردت وضع أكثر من شرط أو أكثر من خيار حتى تحدد ما إن كان سيتم تنفيذ الأوامر, يمكنك إستخدام الكلمات التالية.

الكلمة إستخدامها
AND نستخدم هذه الكلمة لتنفيذ الأمر في حال تحقق الشرط الموضوع قبلها و الشرط الموضوع بعدها.
هنا يجب أن يتحقق كلا الشرطين حتي يتم تنفيذ الأمر.
OR نستخدم هذه الكلمة لتنفيذ الأمر في حال تحقق الشرط الموضوع قبلها أو الشرط الموضوع بعدها.
هنا يكفي أن يتحقق إحدى الشرطين حتي يتم تنفيذ الأمر.
IN (value1, value2, ...) نستخدم هذه الكلمة لتنفيذ الأمر في حال كانت القيمة الموجود قبلها تساوي إحدى القيم الموضوع فيها.
BETWEEN value1 AND value2 نستخدم هذه الجملة لتنفيذ الأمر في حال كانت القيمة موجود بين قيمتين.

تجهيز قاعدة البيانات التي سنطبق عليها

قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash و تنشئ فيها جدول إسمه employees يحتوي على بيانات 10 موظفين.

الإستعلام

        -- سيتم حذفها harmash في حال كان يوجد بالأساس قاعدة بيانات إسمها
        DROP DATABASE IF EXISTS harmash;

        -- harmash هنا قمنا بإنشاء قاعدة بيانات جديدة إسمها
        CREATE DATABASE harmash;

        -- harmash هنا قمنا بتحديد أن أي إستعلام جديد سيتم تنفيذه على قاعدة البيانات
        USE harmash;

        -- يتألف من أربعة أعمدة employees هنا قمنا بإنشاء جدول جديد إسمه
        -- لأننا قمنا بتحديدها قبل إستدعاء هذا الأمر harmash سيتم إنشاء هذا الجدول بداخل قاعدة البيانات
        CREATE TABLE employees (
        id         INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
        first_name VARCHAR(50),
        last_name  VARCHAR(20),
        salary     DECIMAL(7,2)
        );

        -- هنا قمنا بإضافة 10 أسطر في الجدول, أي أضفنا معلومات 10 موظفين
        -- لاحظ أننا لم نحدد أسماء الأعمدة التي سنضع فيها البيانات لأننا قمنا بملئ جميع المعلومات
        -- في البداية هو حتى يكون عدد القيم الموضوعة يساوي عدد أعمدة الجدول null سبب وضع الكلمة
        -- ستقوم قاعدة البيانات بوضع رقم تعرفة مختلف لكل سطر null مكان الكلمة
        INSERT INTO employees VALUES (null, "Ahmad", "Alhazem", 800);
        INSERT INTO employees VALUES (null, "Rami", "Algharib", 750);
        INSERT INTO employees VALUES (null, "Said", "Alnaja", 900);
        INSERT INTO employees VALUES (null, "Noura", "Jamali", 845);
        INSERT INTO employees VALUES (null, "Amani", "Sarrouf", 1000);
        INSERT INTO employees VALUES (null, "Mhamad", "Harmush", 700);
        INSERT INTO employees VALUES (null, "Ahmad", "Asaadi", 850);
        INSERT INTO employees VALUES (null, "Mostafa", "Shawki", 920);
        INSERT INTO employees VALUES (null, "Jana", "Alkassem", 780);
        INSERT INTO employees VALUES (null, "Houssam", "Zahrani", 880);
      

بعد تنفيذ الإستعلام السابق في phpMyAdmin سيتم إنشاء قاعدة البيانات harmash و إنشاء الجدول employees بداخلها.
قم بالنقر على إسم قاعدة البيانات harmash من القائمة اليسرى حتى تبدأ بالتعامل معها و تطبيق ما ستتعلمه في هذا الدرس.

أمثلة حول جلب بيانات ضمن شروط محددة


المثال الأول

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

الآن, بما أن الشيء الوحيد الذي لا يمكن أن يتكرر في الجدول الذي نتعامل معه هو رقم التعرفة id يمكننا الإعتماد عليه للتمييز بين موظف و آخر.

الإستعلام التالي يجلب كل معلومات الموظف الذي يملك رقم id يساوي 6.

الإستعلام

        SELECT * FROM employees    -- employees أحضر جميع المعلومات المتوفرة في الجدول
        WHERE id = 6;              -- يساوي 6 id بشرط أن يكون كل سطر ستحضره يملك رقم
      

سنحصل على النتيجة التالية عند تنفيذ الإستعلام لأنه يوجد سطر واحد فقط في الجدول يملك رقم id يساوي 6.

id first_name last_name salary
6 Mhamad Harmush 700.00


المثال الثاني

الإستعلام التالي يجلب معلومات كل موظف يتلقى راتب أكبر أو يساوي 800 دولار.

الإستعلام

        SELECT * FROM employees    -- employees أحضر جميع المعلومات المتوفرة في الجدول
        WHERE salary >= 800;       -- أكبر أو يساوي 800 salary بشرط أن يكون كل سطر ستحضره يملك
      

سنحصل على النتيجة التالية عند تنفيذ الإستعلام, لاحظ أنه يوجد 7 موظفين راتبهم أعلى أو يساوي 800 دولار.

id first_name last_name salary
1 Ahmad Alhazem 800.00
3 Said Alnaja 900.00
4 Noura Jamali 845.00
5 Amani Sarrouf 1000.00
7 Ahmad Asaadi 850.00
8 Mostafa Shawki 920.00
10 Houssam Zahrani 880.00


المثال الثالث

الإستعلام التالي يجلب معلومات كل موظف يتلقى راتب أقل من 800 دولار.

الإستعلام

        SELECT * FROM employees    -- employees أحضر جميع المعلومات المتوفرة في الجدول
        WHERE salary < 800;        -- أكبرأقل من 800 salary بشرط أن يكون كل سطر ستحضره يملك
      

سنحصل على النتيجة التالية عند تنفيذ الإستعلام, لاحظ أنه يوجد 3 موظفين راتبهم أقل من 800 دولار.

id first_name last_name salary
2 Rami Algharib 750.00
6 Mhamad Harmush 700.00
9 Jana Alkassem 780.00


المثال الرابع

الإستعلام التالي يجلب معلومات كل موظف يتلقى راتب لا يساوي 800 دولار.

الإستعلام

        SELECT * FROM employees    -- employees أحضر جميع المعلومات المتوفرة في الجدول
        WHERE salary != 800;       -- لا يساوي 800 salary بشرط أن يكون كل سطر ستحضره يملك
      

يمكن كتابة الإستعلام بهذه الطريقة أيضاً.

        SELECT * FROM employees    -- employees أحضر جميع المعلومات المتوفرة في الجدول
        WHERE salary <> 800;       -- لا يساوي 800 salary بشرط أن يكون كل سطر ستحضره يملك
      

سنحصل على النتيجة التالية عند تنفيذ الإستعلام, لاحظ أنه يوجد 9 موظفين راتبهم لا يساوي 800 دولار.

id first_name last_name salary
2 Rami Algharib 750.00
3 Said Alnaja 900.00
4 Noura Jamali 845.00
5 Amani Sarrouf 1000.00
6 Mhamad Harmush 700.00
7 Ahmad Asaadi 850.00
8 Mostafa Shawki 920.00
9 Jana Alkassem 780.00
10 Houssam Zahrani 880.00


المثال الخامس

الإستعلام التالي يجلب معلومات كل موظف يتلقى راتب أعلى من 2000 دولار.

الإستعلام

        SELECT * FROM employees    -- employees أحضر جميع المعلومات المتوفرة في الجدول
        WHERE salary > 2000;       -- أعلى من 2000 salary بشرط أن يكون كل سطر ستحضره يملك
      

سنحصل على النتيجة التالية عند تنفيذ الإستعلام, لاحظ أنه لا يوجد أي موظف راتبه أعلى من 2000 دولار.

id first_name last_name salary


المثال السادس

الإستعلام التالي يجلب معلومات كل موظف يتلقى راتب أعلى من 800 دولار و إسمه 'Mhamad'.

الإستعلام

        SELECT * FROM employees                          -- employees أحضر جميع المعلومات المتوفرة في الجدول
        WHERE salary > 800 AND first_name = 'Mhamad';    -- 'Mhamad' يساوي first_name أعلى من 800 و يملك salary بشرط أن يكون كل سطر ستحضره يملك
      

سنحصل على النتيجة التالية عند تنفيذ الإستعلام, لاحظ أنه لا يوجد أي موظف راتبه أعلى من 800 دولار و إسمه 'Mhamad' بنفس الوقت.
ملاحظة: صحيح أنه يوجد موظف إسمه 'Mhamad' و لكن بما أن رابته أقل من 800 دولار لن يتم وضعه في الجدول.

id first_name last_name salary


المثال السابع

الإستعلام التالي يجلب معلومات كل موظف يتلقى راتب أعلى من 800 دولار أو إسمه 'Mhamad'.

الإستعلام

        SELECT * FROM employees                         -- employees أحضر جميع المعلومات المتوفرة في الجدول
        WHERE salary > 800 OR first_name = 'Mhamad';    -- 'Mhamad' يساوي first_name أعلى من 800 أو يملك salary بشرط أن يكون كل سطر ستحضره يملك
      

سنحصل على النتيجة التالية عند تنفيذ الإستعلام, لاحظ أنه يوجد 6 موظفين رابتهم أعلى من 800 دولار و يوجد موظف راتبه أقل من 800 دولار و لكن إسمه 'Mhamad' لهذا تم وضعه معهم في الجدول.

id first_name last_name salary
3 Said Alnaja 900.00
4 Noura Jamali 845.00
5 Amani Sarrouf 1000.00
6 Mhamad Harmush 700.00
7 Ahmad Asaadi 850.00
8 Mostafa Shawki 920.00
10 Houssam Zahrani 880.00


المثال الثامن

الإستعلام التالي يجلب معلومات كل موظف يتلقى راتب يساوي 800 أو 850 أو 900 دولار.

الإستعلام

        SELECT * FROM employees             -- employees أحضر جميع المعلومات المتوفرة في الجدول
        WHERE salary IN (800, 850, 900);    -- يساوي 800 أو 850 أو 900 salary بشرط أن يكون كل سطر ستحضره يملك
      

سنحصل على النتيجة التالية عند تنفيذ الإستعلام, لاحظ أنه يوجد 3 موظفين راتبهم أقل من 800 دولار.

id first_name last_name salary
1 Ahmad Alhazem 800.00
3 Said Alnaja 900.00
7 Ahmad Asaadi 850.00


المثال التاسع

الإستعلام التالي يجلب معلومات كل موظف يتلقى راتب بين 800 و 900 دولار.

الإستعلام

        SELECT * FROM employees              -- employees أحضر جميع المعلومات المتوفرة في الجدول
        WHERE salary BETWEEN 800 AND 900;    -- على الأقل 800 و على الأكثر 900 salary بشرط أن يكون كل سطر ستحضره يملك
      

يمكن كتابة الإستعلام بهذه الطريقة أيضاً.

        SELECT * FROM employees                   -- employees أحضر جميع المعلومات المتوفرة في الجدول
        WHERE salary >= 800 AND salary <= 900;    -- على الأقل 800 و على الأكثر 900 salary بشرط أن يكون كل سطر ستحضره يملك
      

سنحصل على النتيجة التالية عند تنفيذ الإستعلام, لاحظ أنه يوجد 3 موظفين راتبهم أقل من 800 دولار.

id first_name last_name salary
1 Ahmad Alhazem 800.00
3 Said Alnaja 900.00
4 Noura Jamali 845.00
7 Ahmad Asaadi 850.00
10 Houssam Zahrani 880.00

مفهوم ترتيب البيانات

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

في SQL يمكنك ترتيب البيانات التي نجلبها بشكل تصاعدي ( Ascending ) أو تنازلي ( Descending ) سواء كنت تتعامل مع بيانات نصية أو رقمية. فمثلاً تستطيع ترتيب نتيجة الإستعلام نسبة لرواتب الموظفين من الأصغر إلى الأكبر, و ترتيب أسماء الموظفين بشكل أبجدي من الألف إلى الياء و هكذا.

لتحديد الطريقة التي سيتم فيها ترتيب البيانات التي نجلبها بواسطة الأمر SELECT نضع الكلمة ORDER BY في نهاية الإستعلام و نضع بعدها إسم العامود أو الأعمدة التي نريد ترتيب السطور على أساسها.

إفتراضياً الكلمة ORDER BY ترتب السطور بشكل تصاعدي. إذا أردت ترتيب السطور بشكل تنازلي يجب أن تضيف الكلمة DESC في النهاية.


الشكل العام لإستخدامه

      SELECT column1, column2, ...
      FROM table_name
      ORDER BY column1, column2, ... ASC|DESC; 
    

  • بعد الكلمة SELECT نضع أسماء الأعمدة التي سيتم إرجاع قيمها في الإستعلام.

  • مكان الكلمة table_name نضع إسم الجدول الذي سنجلب البيانات منه.

  • بعد الكلمة ORDER BY نضع إسم العامود أو الأعمدة التي سيتم ترتيب السطور على أساسها.

  • في النهاية نضع الكلمة DESC إذا أردنا ترتيب البيانات بشكل تنازلي و نضع ASC إذا أردنا ترتيب بشكل تصاعدي.

تجهيز قاعدة البيانات التي سنطبق عليها

قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash و تنشئ فيها جدول إسمه employees يحتوي على بيانات 10 موظفين.

الإستعلام

        -- سيتم حذفها harmash في حال كان يوجد بالأساس قاعدة بيانات إسمها
        DROP DATABASE IF EXISTS harmash;

        -- harmash هنا قمنا بإنشاء قاعدة بيانات جديدة إسمها
        CREATE DATABASE harmash;

        -- harmash هنا قمنا بتحديد أن أي إستعلام جديد سيتم تنفيذه على قاعدة البيانات
        USE harmash;

        -- يتألف من ستة أعمدة employees هنا قمنا بإنشاء جدول جديد إسمه
        -- لأننا قمنا بتحديدها قبل إستدعاء هذا الأمر harmash سيتم إنشاء هذا الجدول بداخل قاعدة البيانات
        CREATE TABLE employees (
        id         INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
        first_name VARCHAR(50),
        last_name  VARCHAR(20),
        is_married BOOLEAN,
        salary     DECIMAL(7,2),
        birthday   Date
        );

        -- هنا قمنا بإضافة 10 أسطر في الجدول, أي أضفنا معلومات 10 موظفين
        -- لاحظ أننا لم نحدد أسماء الأعمدة التي سنضع فيها البيانات لأننا قمنا بملئ جميع المعلومات
        -- في البداية هو حتى يكون عدد القيم الموضوعة يساوي عدد أعمدة الجدول null سبب وضع الكلمة
        -- ستقوم قاعدة البيانات بوضع رقم تعرفة مختلف لكل سطر null مكان الكلمة
        INSERT INTO employees VALUES (null, "Ahmad", "Alhazem", false, 800, "1990-10-23");
        INSERT INTO employees VALUES (null, "Rami", "Algharib", false, 750, "1992-05-08");
        INSERT INTO employees VALUES (null, "Said", "Alnaja", true, 900, "1988-07-12");
        INSERT INTO employees VALUES (null, "Noura", "Jamali", false, 845, "1994-12-04");
        INSERT INTO employees VALUES (null, "Amani", "Sarrouf", true, 1000, "1991-10-27");
        INSERT INTO employees VALUES (null, "Mhamad", "Harmush", false, 700, "1993-11-12");
        INSERT INTO employees VALUES (null, "Ahmad", "Asaadi", true, 850, "1995-03-10");
        INSERT INTO employees VALUES (null, "Mostafa", "Shawki", true, 920, "1990-02-14");
        INSERT INTO employees VALUES (null, "Jana", "Alkassem", false, 780, "1991-08-12");
        INSERT INTO employees VALUES (null, "Houssam", "Zahrani", true, 880, "1985-09-20");
      

بعد تنفيذ الإستعلام السابق في phpMyAdmin سيتم إنشاء قاعدة البيانات harmash و إنشاء الجدول employees بداخلها.
قم بالنقر على إسم قاعدة البيانات harmash من القائمة اليسرى حتى تبدأ بالتعامل معها و تطبيق ما ستتعلمه في هذا الدرس.


البيانات التي قمنا بإضافتها بشكل إفتراضي في الجدول employees.

id first_name last_name is_married salary birthday
1 Ahmad Alhazem 0 800.00 1990-10-23
2 Rami Algharib 0 750.00 1992-05-08
3 Said Alnaja 1 900.00 1988-07-12
4 Noura Jamali 0 845.00 1994-12-04
5 Amani Sarrouf 1 1000.00 1991-10-27
6 Mhamad Harmush 0 700.00 1993-11-12
7 Ahmad Asaadi 1 850.00 1995-03-10
8 Mostafa Shawki 1 920.00 1990-02-14
9 Jana Alkassem 0 780.00 1991-08-12
10 Houssam Zahrani 1 880.00 1985-09-20

أمثلة حول ترتيب البيانات التي يتم جلبها


المثال الأول

الإستعلام التالي يجلب كل معلومات الموظفين مع ترتيب الأسطر بشكل تصاعدي نسبةً لرواتب الموظفين.
أي سيتم عرض الموظف الذي ينال الراتب الأدنى في الأول, و الموظف الذي ينال الراتب الأعلى في الأخير.

الإستعلام

        SELECT * FROM employees    -- employees أحضر جميع المعلومات المتوفرة في الجدول
        ORDER BY salary;           -- salary قم بترتيب الأسطر بشكل تصاعدي على حسب قيمة الحقل
      

يمكن كتابة وضع الكلمة ASC في نهاية الإستعلام و لكن لا داعي لذلك لأنه إفتراضياً سيتم ترتيبهم بشكل تصاعدي.

        SELECT * FROM employees    -- employees أحضر جميع المعلومات المتوفرة في الجدول
        ORDER BY salary ASC;       -- salary قم بترتيب الأسطر بشكل تصاعدي على حسب قيمة الحقل
      

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

id first_name last_name is_married salary birthday
6 Mhamad Harmush 0 700.00 1993-11-12
2 Rami Algharib 0 750.00 1992-05-08
9 Jana Alkassem 0 780.00 1991-08-12
1 Ahmad Alhazem 0 800.00 1990-10-23
4 Noura Jamali 0 845.00 1994-12-04
7 Ahmad Asaadi 1 850.00 1995-03-10
10 Houssam Zahrani 1 880.00 1985-09-20
3 Said Alnaja 1 900.00 1988-07-12
8 Mostafa Shawki 1 920.00 1990-02-14
5 Amani Sarrouf 1 1000.00 1991-10-27


المثال الثاني

الإستعلام التالي يجلب كل معلومات الموظفين مع ترتيب الأسطر بشكل تنازلي نسبةً لرواتب الموظفين.
أي سيتم عرض الموظف الذي ينال الراتب الأعلى في الأول, و الموظف الذي ينال الراتب الأدنى في الأخير.

الإستعلام

        SELECT * FROM employees    -- employees أحضر جميع المعلومات المتوفرة في الجدول
        ORDER BY salary DESC;      -- salary قم بترتيب الأسطر بشكل تنازلي على حسب قيمة الحقل
      

سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
نلاحظ أنه تم ترتيب جميع الأسطر بشكل تنازلي بناءاً على القيم الموضوعة في العامود salary.

id first_name last_name is_married salary birthday
5 Amani Sarrouf 1 1000.00 1991-10-27
8 Mostafa Shawki 1 920.00 1990-02-14
3 Said Alnaja 1 900.00 1988-07-12
10 Houssam Zahrani 1 880.00 1985-09-20
7 Ahmad Asaadi 1 850.00 1995-03-10
4 Noura Jamali 0 845.00 1994-12-04
1 Ahmad Alhazem 0 800.00 1990-10-23
9 Jana Alkassem 0 780.00 1991-08-12
2 Rami Algharib 0 750.00 1992-05-08
6 Mhamad Harmush 0 700.00 1993-11-12


المثال الثالث

الإستعلام التالي يجلب كل معلومات الموظفين مع ترتيب الأسطر بشكل تصاعدي نسبةً لتاريخ ميلاد الموظفين.
أي سيتم عرض الموظف الأكبر سناً في الأول, و الموظف الأصغر سناً في الأخير.

الإستعلام

        SELECT * FROM employees    -- employees أحضر جميع المعلومات المتوفرة في الجدول
        ORDER BY birthday;         -- birthday قم بترتيب الأسطر بشكل تصاعدي على حسب قيمة الحقل
      

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

id first_name last_name is_married salary birthday
10 Houssam Zahrani 1 880.00 1985-09-20
3 Said Alnaja 1 900.00 1988-07-12
8 Mostafa Shawki 1 920.00 1990-02-14
1 Ahmad Alhazem 0 800.00 1990-10-23
9 Jana Alkassem 0 780.00 1991-08-12
5 Amani Sarrouf 1 1000.00 1991-10-27
2 Rami Algharib 0 750.00 1992-05-08
6 Mhamad Harmush 0 700.00 1993-11-12
4 Noura Jamali 0 845.00 1994-12-04
7 Ahmad Asaadi 1 850.00 1995-03-10


المثال الرابع

الإستعلام التالي يجلب كل معلومات الموظفين مع ترتيب الأسطر بشكل تصاعدي نسبةً لإسم لأسماء الموظفين.
أي سيتم عرض الموظف على حسب الترتيب الأبجدي لأحرف أسمائهم.

الإستعلام

        SELECT * FROM employees    -- employees أحضر جميع المعلومات المتوفرة في الجدول
        ORDER BY first_name;       -- first_name قم بترتيب الأسطر بشكل تصاعدي على حسب قيمة الحقل
      

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

id first_name last_name is_married salary birthday
1 Ahmad Alhazem 0 800.00 1990-10-23
7 Ahmad Asaadi 1 850.00 1995-03-10
5 Amani Sarrouf 1 1000.00 1991-10-27
10 Houssam Zahrani 1 880.00 1985-09-20
9 Jana Alkassem 0 780.00 1991-08-12
6 Mhamad Harmush 0 700.00 1993-11-12
8 Mostafa Shawki 1 920.00 1990-02-14
4 Noura Jamali 0 845.00 1994-12-04
2 Rami Algharib 0 750.00 1992-05-08
3 Said Alnaja 1 900.00 1988-07-12


المثال الخامس

الإستعلام التالي يجلب كل معلومات الموظفين مع ترتيب الأسطر بشكل تصاعدي نسبةً لإسم الحالة الإجتماعية أولاً (متزوج أم لا) بعدها يتم ترتيبهم من جديد نسبة لراتبهم من الأعلى إلى الأدنى.
أي سيتم عرض الموظف على حسب قيم العامود is_married بشكل تصاعدي و من ثم قيم العامود salary بشكل تنازلي.

الإستعلام

        SELECT * FROM employees                   -- employees أحضر جميع المعلومات المتوفرة في الجدول
        ORDER BY is_married ASC, salary DESC;     -- salary و من ثم ترتيبهم بشكل تنازلي على حسب قيمة الحقل is_married قم بترتيب الأسطر بشكل تصاعدي على حسب قيمة الحقل
      

سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
نلاحظ أنه تم ترتيب جميع الأسطر بشكل تصاعدي بناءاً على القيم الموضوعة في العامود is_married بشكل تصاعدي أولاً.
بعدها تم ترتيب القيم الموضوعة في العامود salary بشكل تنازلي و لكن تم ترتيبها بداخل كل قسم يملك نفس قيمة is_married على حدا.

id first_name last_name is_married salary birthday
4 Noura Jamali 0 845.00 1994-12-04
1 Ahmad Alhazem 0 800.00 1990-10-23
9 Jana Alkassem 0 780.00 1991-08-12
2 Rami Algharib 0 750.00 1992-05-08
6 Mhamad Harmush 0 700.00 1993-11-12
5 Amani Sarrouf 1 1000.00 1991-10-27
3 Said Alnaja 1 900.00 1988-07-12
8 Mostafa Shawki 1 920.00 1990-02-14
10 Houssam Zahrani 1 880.00 1985-09-20
7 Ahmad Asaadi 1 850.00 1995-03-10


المثال الخامس

الإستعلام التالي يجلب كل معلومات الموظفين مع ترتيب الأسطر بشكل تصاعدي نسبةً للنص الذي ينتج عن دمج الحقلين first_name و last_name.
أي سيتم عرض إسم الموظف و إسم عائلته في حقل واحد و على أساسه سيتم ترتيب الأسطر.

الإستعلام

        SELECT                                                    -- هنا سنقوم بتحديد أسماء الأعمدة التي سنجلب منها البيانات
        id AS 'Id',                                           -- Id إلى id هنا قمنا بتغير إسم العامود
        CONCAT(first_name, ' ', last_name) AS 'Full Name',    -- Full Name و وضعهما في عامود إسمه last_name و first_name هنا قمنا بدمج العامودين
        salary AS 'Salary'                                    -- Salary إلى salary هنا قمنا بتغير إسم العامود
        FROM
        employees                                             -- هنا قمنا بتحديد إسم الجدول الذي سنجلب منه المعلومات
        ORDER BY
        CONCAT(first_name, ' ', last_name);                   -- Full Name هنا قمنا بترتيب أسطر الجدول بناءاً على نفس القيم التي سيتم دمجها في الجدول
      

سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
نلاحظ أنه تم ترتيب جميع الأسطر بشكل تصاعدي بناءاً على القيم الموضوعة في العامود Full Name.

id Full Name salary
1 Ahmad Alhazem 800.00
7 Ahmad Asaadi 850.00
5 Amani Sarrouf 1000.00
10 Houssam Zahrani 880.00
9 Jana Alkassem 780.00
6 Mhamad Harmush 700.00
8 Mostafa Shawki 920.00
4 Noura Jamali 845.00
2 Rami Algharib 750.00
3 Said Alnaja 900.00