logo

بنود SQL

  • تساعدنا جملة SQL في استرداد مجموعة أو حزم من السجلات من الجدول.
  • تساعدنا جملة SQL على تحديد شرط على الأعمدة أو سجلات الجدول.

الجمل المختلفة المتوفرة في لغة الاستعلام الهيكلية هي كما يلي:

  1. حيث الشرطية
  2. المجموعة حسب البند
  3. وجود بند
  4. الترتيب حسب البند

دعونا نرى كل جملة واحدة تلو الأخرى مع مثال. سوف نستخدم قاعدة بيانات MySQL لكتابة الاستعلامات في الأمثلة.

1. أين البند

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

جملة WHERE مع استعلام SELECT

يتم استخدام رمز النجمة مع جملة WHERE في استعلام SELECT لاسترداد كافة قيم الأعمدة لكل سجل من الجدول.

بناء جملة حيث مع استعلام تحديد لاسترداد كافة قيم الأعمدة لكل سجل من جدول:

 SELECT * FROM TABLENAME WHERE CONDITION; 

إذا أردنا فقط استرداد الأعمدة الانتقائية وفقًا للمتطلبات، فسنستخدم بناء الجملة أدناه:

 SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION; 

خذ بعين الاعتبار جدول الموظفين الذي يحتوي على البيانات التالية:

معرف_E اسم مرتب مدينة تعيين تاريخ_الانضمام عمر
1 ساكشي كوماري 50000 مومباي مدير المشروع 2021-06-20 24
2 Tejaswini Naik 75000 دلهي مهندس نظم 2019-12-24 23
3 أنوجا شارما 40000 جايبور مدير 2021-08-15 26
4 أنوشكا تريباثي 90000 مومباي مختبري البرمجيات 2021-06-13 24
5 روشا جاجتاب 45000 بنغالور مدير المشروع 2020-08-09 23
6 روتوجا ديشموخ 60000 بنغالور مدير 2019-07-17 26
7 صوت بافيسكار 55000 جايبور مهندس نظم 2021-10-10 24
8 هناك الشيخ 45000 بيون مهندس برمجيات 2020-09-10 26
9 سواتي كوماري 50000 بيون مختبري البرمجيات 2021-01-01 25
10 مايوري باتل 60000 مومباي مدير المشروع 2020-10-02 24
أحد عشر Simran Khanna 45500 كولهابور الموارد البشرية 2019-01-02 26
12 شيفاني واغ 50500 دلهي مطور برامج 2016-09-10 25
13 كيران ماهيشواري 50000 ناشيك الموارد البشرية 12-12-2013 23
14 تيجال جاين 40000 دلهي مدير المشروع 2017-11-10 25
خمسة عشر Mohini Shah 38000 بيون مطور برامج 2019-03-05 عشرين

مثال 1:

اكتب استعلامًا لاسترداد جميع سجلات الموظف الذي يكون راتب الموظف فيه أكبر من 50000.

استفسار:

 mysql> SELECT * FROM employees WHERE Salary > 50000; 

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

سوف تحصل على الإخراج التالي:

بنود SQL

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

مثال 2:

اكتب استعلامًا لتحديث سجل الموظف وقم بتعيين الاسم المحدث كـ 'Harshada Sharma' حيث يكون اسم مدينة الموظف هو جايبور.

استفسار:

 mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur'; 

بنود SQL

سيؤدي الاستعلام أعلاه إلى تحديث اسم الموظف إلى 'هارشادا شارما'، حيث مدينة الموظف هي جايبور.

للتحقق من تحديث السجلات أم لا، سنقوم بتشغيل استعلام تحديد.

 mysql> SELECT * FROM employees; 

بنود SQL

يوجد سجل واحد فقط في جدول الموظف حيث مدينة الموظف هي 'جايبور'. معرف السجل هو 3، وهو ما يفي بالشرط المحدد. وبالتالي، وفقًا للشرط المحدد، تم الآن تغيير اسم الموظف بمعرف الموظف 3 إلى 'هارشادا شارما'.

مثال 3:

اكتب استعلامًا لحذف سجل موظف حيث يكون تاريخ انضمام الموظف هو '12-12-2013'.

استفسار:

 mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12'; 

بنود SQL

سيؤدي الاستعلام أعلاه إلى حذف تفاصيل الموظف الذي تاريخ انضمامه هو '12-12-2013'.

للتحقق من نتائج الاستعلام أعلاه، سنقوم بتنفيذ استعلام التحديد.

جافا مقارنة السلسلة
 mysql> SELECT *FROM employees; 

بنود SQL

يوجد سجل واحد فقط في جدول الموظف حيث يكون تاريخ انضمام الموظف هو '12-12-2013'. معرف السجل هو 13، وهو ما يفي بالشرط المحدد. وبالتالي، وفقًا للشرط المحدد، يتم الآن حذف الموظف بمعرف الموظف 13 من جدول الموظف.

2. المجموعة حسب البند

يتم استخدام جملة Group By لترتيب أنواع مماثلة من السجلات في المجموعات في لغة الاستعلام الهيكلية. يتم استخدام جملة التجميع حسب في لغة الاستعلام الهيكلية مع بيان التحديد. يتم وضع المجموعة حسب الجملة بعد عبارة المكان في عبارة SQL. يتم استخدام جملة Group By خصيصًا مع الدالة التجميعية، أي max ()، min ()، avg ()، sum ()، count () لتجميع النتيجة بناءً على عمود واحد أو أكثر.

بناء جملة جملة Group By:

 SELECT * FROM TABLENAME GROUP BY COLUMNNAME; 

سيحدد بناء الجملة أعلاه جميع البيانات أو السجلات من الجدول، ولكنه سيرتب كل تلك البيانات أو السجلات في المجموعات بناءً على اسم العمود الوارد في الاستعلام.

بناء جملة Group By مع الوظائف التجميعية:

 SELECT COLUMNNAME1, Aggregate_FUNCTION (COLUMNNAME) FROM TABLENAME GROUP BY COLUMNNAME; 

دعونا نفهم جملة Group By بمساعدة الأمثلة.

خذ بعين الاعتبار جدول الموظفين الذي يحتوي على البيانات التالية:

معرف_E اسم مرتب مدينة تعيين تاريخ_الانضمام عمر
1 ساكشي كوماري 50000 مومباي مدير المشروع 2021-06-20 24
2 Tejaswini Naik 75000 دلهي مهندس نظم 2019-12-24 23
3 أنوجا شارما 40000 جايبور مدير 2021-08-15 26
4 أنوشكا تريباثي 90000 مومباي مختبري البرمجيات 2021-06-13 24
5 روشا جاجتاب 45000 بنغالور مدير المشروع 2020-08-09 23
6 روتوجا ديشموخ 60000 بنغالور مدير 2019-07-17 26
7 صوت بافيسكار 55000 جايبور مهندس نظم 2021-10-10 24
8 هناك الشيخ 45000 بيون مهندس برمجيات 2020-09-10 26
9 سواتي كوماري 50000 بيون مختبري البرمجيات 2021-01-01 25
10 مايوري باتل 60000 مومباي مدير المشروع 2020-10-02 24
أحد عشر Simran Khanna 45500 كولهابور الموارد البشرية 2019-01-02 26
12 شيفاني واغ 50500 دلهي مطور برامج 2016-09-10 25
13 كيران ماهيشواري 50000 ناشيك الموارد البشرية 12-12-2013 23
14 تيجال جاين 40000 دلهي مدير المشروع 2017-11-10 25
خمسة عشر Mohini Shah 38000 بيون مطور برامج 2019-03-05 عشرين

مثال 1:

اكتب استعلامًا لعرض كافة سجلات جدول الموظفين مع تجميع النتائج بناءً على عمود العمر.

استفسار:

 mysql> SELECT * FROM employees GROUP BY Age; 

سيعرض الاستعلام أعلاه جميع سجلات جدول الموظفين ولكن مجمعة حسب عمود العمر.

سوف تحصل على الإخراج التالي:

بنود SQL

مثال 2:

قم بكتابة استعلام لعرض كافة سجلات جدول الموظفين مجمعة حسب الوظيفة والراتب.

استفسار:

 mysql> SELECT * FROM employees GROUP BY Salary, Designation; 

سيعرض الاستعلام أعلاه جميع سجلات جدول الموظفين ولكن مجمعة حسب عمود الراتب والتعيين.

سوف تحصل على الإخراج التالي:

بنود SQL

أمثلة على جملة Group By باستخدام الوظائف التجميعية

مثال 1:

اكتب استعلامًا لسرد عدد الموظفين الذين يعملون في تعيين معين وقم بتجميع النتائج حسب تعيين الموظف.

استفسار:

 mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation; 

سيعرض الاستعلام أعلاه التعيين مع عدد الموظفين العاملين على هذا التعيين. سيتم تجميع كل هذه النتائج حسب عمود التعيين.

سوف تحصل على الإخراج التالي:

بنود SQL

وفقًا للمخرجات المتوقعة، يتم عرض التعيين مع عدد الموظفين المعنيين.

مثال 2:

اكتب استعلامًا لعرض مجموع راتب الموظف حسب المدينة مجمعة حسب عمر الموظف.

استفسار:

 mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City; 

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

سوف تحصل على الإخراج التالي:

بنود SQL

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

3. وجود بند:

عندما نحتاج إلى وضع أي شروط على عمود الجدول، نستخدم جملة WHERE في SQL. ولكن إذا أردنا استخدام أي شرط في عمود في جملة Group By في ذلك الوقت، فسنستخدم جملة HAVING مع جملة Group By لشروط العمود.

بناء الجملة:

 TABLENAME GROUP BY COLUMNNAME HAVING CONDITION; 

خذ بعين الاعتبار جدول الموظفين الذي يحتوي على البيانات التالية:

معرف_E اسم مرتب مدينة تعيين تاريخ_الانضمام عمر
1 ساكشي كوماري 50000 مومباي مدير المشروع 2021-06-20 24
2 Tejaswini Naik 75000 دلهي مهندس نظم 2019-12-24 23
3 أنوجا شارما 40000 جايبور مدير 2021-08-15 26
4 أنوشكا تريباثي 90000 مومباي مختبري البرمجيات 2021-06-13 24
5 روشا جاجتاب 45000 بنغالور مدير المشروع 2020-08-09 23
6 روتوجا ديشموخ 60000 بنغالور مدير 2019-07-17 26
7 صوت بافيسكار 55000 جايبور مهندس نظم 2021-10-10 24
8 هناك الشيخ 45000 بيون مهندس برمجيات 2020-09-10 26
9 سواتي كوماري 50000 بيون مختبري البرمجيات 2021-01-01 25
10 مايوري باتل 60000 مومباي مدير المشروع 2020-10-02 24
أحد عشر Simran Khanna 45500 كولهابور الموارد البشرية 2019-01-02 26
12 شيفاني واغ 50500 دلهي مطور برامج 2016-09-10 25
13 كيران ماهيشواري 50000 ناشيك الموارد البشرية 12-12-2013 23
14 تيجال جاين 40000 دلهي مدير المشروع 2017-11-10 25
خمسة عشر Mohini Shah 38000 بيون مطور برامج 2019-03-05 عشرين

مثال 1:

اكتب استعلامًا لعرض اسم الموظفين والراتب والمدينة التي يزيد فيها الحد الأقصى لراتب الموظف عن 40000 وقم بتجميع النتائج حسب التعيين.

استفسار:

 mysql> SELECT Name, City, MAX (Salary) AS Salary FROM employees GROUP BY Designation HAVING MAX (Salary) > 40000; 

سوف تحصل على الإخراج التالي:

بنود SQL

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

مثال 2:

قم بكتابة استعلام لعرض اسم الموظفين والمنصب حيث يكون مجموع راتب الموظف أكبر من 45000 وتجميع النتائج حسب المدينة.

استفسار:

 mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000; 

سوف تحصل على الإخراج التالي:

بنود SQL

يُظهر الإخراج أعلاه اسم الموظف وتعيينه وراتبه. مجموع الراتب أكبر من 45000 مجمعة حسب المدينة. (يتم وضع الموظفين الذين لديهم مدن متشابهة في مجموعة واحدة ويتم وضع الموظفين الذين لديهم مدينة مختلفة غير متشابهة بشكل منفصل).

4. الترتيب حسب البند

عندما نريد فرز أي شيء في SQL، نستخدم جملة ORDER BY. ستساعدنا عبارة ORDER BY في SQL على فرز البيانات بناءً على العمود المحدد في الجدول. وهذا يعني أنه سيتم فرز جميع البيانات المخزنة في العمود المحدد الذي نقوم بتنفيذ جملة ORDER BY عليه. سيتم عرض قيم الأعمدة المقابلة بالتسلسل الذي حصلنا فيه على القيم في الخطوة السابقة.

كما نعلم جميعًا، فإن الفرز يعني إما بالترتيب التصاعدي أو الترتيب التنازلي. بنفس الطريقة، يقوم ORDER BY CLAUSE بفرز البيانات بترتيب تصاعدي أو تنازلي وفقًا لمتطلباتنا. سيتم فرز البيانات بترتيب تصاعدي كلما الكلمة الأساسية ASC يتم استخدامه مع ORDER by جملة، و الكلمة المفتاحية DESC سيتم فرز السجلات بترتيب تنازلي.

افتراضيًا، سيتم إجراء الفرز في SQL باستخدام جملة ORDER BY بترتيب تصاعدي إذا لم نذكر ترتيب الفرز.

قبل الانتقال إلى مثال جملة ORDER BY لفرز السجلات، سنلقي نظرة أولاً على بناء الجملة بحيث يكون من السهل علينا استعراض المثال.

بناء جملة جملة ORDER BY بدون الكلمة الأساسية asc وdesc:

 SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME; 

بناء جملة جملة ORDER BY للفرز بترتيب تصاعدي:

 SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC; 

بناء جملة جملة ORDER BY للفرز بترتيب تنازلي:

 SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC; 

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

معرف_E اسم مرتب مدينة تعيين تاريخ_الانضمام عمر
1 ساكشي كوماري 50000 مومباي مدير المشروع 2021-06-20 24
2 Tejaswini Naik 75000 دلهي مهندس نظم 2019-12-24 23
3 أنوجا شارما 40000 جايبور مدير 2021-08-15 26
4 أنوشكا تريباثي 90000 مومباي مختبري البرمجيات 2021-06-13 24
5 روشا جاجتاب 45000 بنغالور مدير المشروع 2020-08-09 23
6 روتوجا ديشموخ 60000 بنغالور مدير 2019-07-17 26
7 صوت بافيسكار 55000 جايبور مهندس نظم 2021-10-10 24
8 هناك الشيخ 45000 بيون مهندس برمجيات 2020-09-10 26
9 سواتي كوماري 50000 بيون مختبري البرمجيات 2021-01-01 25
10 مايوري باتل 60000 مومباي مدير المشروع 2020-10-02 24
أحد عشر Simran Khanna 45500 كولهابور الموارد البشرية 2019-01-02 26
12 شيفاني واغ 50500 دلهي مطور برامج 2016-09-10 25
13 كيران ماهيشواري 50000 ناشيك الموارد البشرية 12-12-2013 23
14 تيجال جاين 40000 دلهي مدير المشروع 2017-11-10 25
خمسة عشر Mohini Shah 38000 بيون مطور برامج 2019-03-05 عشرين

مثال 1:

اكتب استعلامًا لفرز السجلات بالترتيب التصاعدي لتعيين الموظف من جدول الموظفين.

استفسار:

 mysql> SELECT * FROM employees ORDER BY Designation; 

هنا في استعلام SELECT، يتم تطبيق عبارة ORDER BY على العمود 'Designation' لفرز السجلات، لكننا لم نستخدم الكلمة الأساسية ASC بعد جملة ORDER BY للفرز بترتيب تصاعدي. لذا، افتراضيًا، سيتم فرز البيانات بترتيب تصاعدي إذا لم نحدد كلمة رئيسية تصاعدية.

سوف تحصل على الإخراج التالي:

بنود SQL

وفقًا للمخرجات المتوقعة، يتم عرض السجلات بترتيب تصاعدي لتعيين الموظف.

مثال 2:

قم بكتابة استعلام لعرض اسم الموظف وراتبه بالترتيب التصاعدي لراتب الموظف من جدول الموظفين.

استفسار:

متى خرج ويندوز 7
 mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC; 

هنا في استعلام SELECT، يتم تطبيق عبارة ORDER BY على عمود 'الراتب' لفرز السجلات. لقد استخدمنا الكلمة الأساسية ASC لفرز راتب الموظف بترتيب تصاعدي.

سوف تحصل على الإخراج التالي:

بنود SQL

يتم عرض كافة السجلات بالترتيب التصاعدي لراتب الموظف.

مثال 3:

اكتب استعلامًا لفرز البيانات بترتيب تنازلي لاسم الموظف المخزن في جدول الموظفين.

استفسار:

 mysql> SELECT * FROM employees ORDER BY Name DESC; 

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

سوف تحصل على الإخراج التالي:

بنود SQL

يتم عرض كافة السجلات بترتيب تنازلي لاسم الموظف.