اذهب إلى المحتوى

المرجع المتقدم إلى لغة SQL


جميل بيلوني

SQL أو لغة الاستعلامات البنيوية (Structured Query Language) هي لغة برمجة متخصصة تُستخدَم لمعالجة وإدارة قواعد البيانات. وتُنطق سي كويل (See-Quel). تعد اللغة القياسية لأنظمة إدارة قواعد البيانات (RDBMS)، وتُستخدم تعليمات وأوامر SQL لإجراء عمليات مباشرة على البيانات، مثل:

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

تاريخ SQL

طوّرت شركة IBM لغة SQL في بداية السبعينات بإسهام من بويس رايموند (Raymond Boyce) ودونالد شامبرلين (Donald Chamberlin)، وكانت تُسمى آنذاك SEQUEL. كان الهدف من تطويرها هو إدارة ومعالجة نظام R، وهو نظام شبه علائقي لمعالجة قواعد البيانات (quasi-relational database management system).

سنة 1986، اعتمدت كل من المنظمة الأمريكية للمقاييس (ANSI) والمنظمة الدولية للمقاييس (ISO) لغة SQL كمقياس مرجعي، وقد تعاقبت بعد ذلك 9 إصدارات جديدة من المعيار، سنوات: 1989 و 1992 و 1996 و 1999 و 2003 و 2006 و 2008 و 2011 و 2016.

ما هي أنظمة معالجة قواعد البيانات العلائقية RDBMS؟

أنظمة معالجة قواعد البيانات العلائقية (Relational Database Management System) هي برامج تُستخدَم لمعالجة وإدارة قواعد البيانات العلائقية (Relational Database)، وهي قواعد تخزِّن البيانات وفق بنية مهيكلة في جداول تتألف من صفوف وأعمدة لتسهيل الوصول إلى القيم المخزنة. لكل جدول مفتاح فريد يميز كل صف من الجدول. وتُسمى "علائقية" (relational) لأنّ القيم المُخزّنة في الجداول متعلقة ببعضها بعضًا.

تجري أنظمة قواعد البيانات العديد من المهام، مثل:

  • تأمين البيانات
  • إنشاء النسخ الاحتياطية
  • إدارة ومعالجة كميات ضخمة من البيانات
  • تصدير البيانات أو استيرادها
  • العمل على عدة جداول تزامنيا

هناك العديد من أنظمة معالجة قواعد البيانات، من أشهرها: Oracle و MySQL و Microsoft SQL Server و DB2. ورغم أنّ أكثرها تستخدم SQL، إلا أنّ لكل منها بعض الإضافات والصياغات الخاصة بها التي لا تُستخدم في الأنظمة الأخرى، بيْد أنّها تدعم جميعا الأوامر الأساسية للغة (SELECT و UPDATE و DELETE و INSERT و WHERE).

لماذا عليك تعلم SQL‎‎؟

إن كنت تتساءل عما إذا كانت SQL تستحق أن تتعلمها، فالنقاط التالية ستوضح لك بعض مزايا هذه اللغة:

  1. سهولة التعلم: لغة SQL سهلة موازنة مع بقية لغات البرمجة، ذلك أنّها مخصصة لغرض واحد، وهو معالجة البيانات
  2. معالجة البيانات الكبيرة: نحن نعيش في عصر الثورة الرقمية، ومن نتائج ذلك أنّ البيانات أصبحت متاحة بكميات ضخمة. ففي كل يوم تُنتج عدة تيرابايت من البيانات. بالطبع، يمكنك استخدام جداول البيانات العادية، مثل EXCEL وجداول جوجل، ولكنها مخصّصة لمعالجة كمية صغيرة أو متوسطة من البيانات. وهنا يأتي دور SQL، لأنها مصممة لمعالجة كميات ضخمة من البيانات بأداء وكفاءة عالية.
  3. تطوير الويب: SQL هي إحدى المهارات الضرورية لكل مبرمجي الواجهة الخلفية للخادم، لأنها تُستخدم لمعالجة واسترجاع البيانات المُخزّنة في الخادم، بما فيها بيانات المستخدمين.
  4. السرعة: لا تفعل SQL إلا شيئا واحدا فقط، وهو معالجة البيانات وإدارتها، وهي ممتازة فيما تفعله. فهي مُحسَّنة للدخول إلى البيانات بسرعة فائقة، ما يجعلها مثالية لتطبيقات الوقت الحقيقي.
  5. فرص العمل: هناك طلب كبير على مبرمجي SQL في القطاع الخاص، ويُتوقع أن يزداد هذا الطلب في السنوات القادمة، خصوصا في العالم العربي الذي يعرف ازدهارا سريعا للاقتصاد الرقمي في السنوات الأخيرة.
  6. الشهرة: في استطلاع stackoverflow لسنة 2019، حلت SQL في المرتبة الثالثة في قائمة أكثر تقنيات البرمجة استخداما من قبل المبرمجين على مستوى العالم. بعد جافاسكربت و HTML و CSS. إذ يستخدمها أكثر من نصف المبرمجين. هذا أمر طبيعي، لأنّ SQL هي إحدى أركان تقنيات الويب، ولا يمكن تطوير أي موقع ويب أو تطبيق بدون معرفة ولو بسيطة بها.
  7. مفتوحة المصدر: SQL مفتوحة المصدر، كما أنّ لديها مجتمعا كبيرا، إن اعترضتك مشكلة أثناء تعلم SQL، فيمكن أن تطرح سؤالك على stackoverflow أو في قسم الأسئلة في أكاديمية حسوب.

Stack Overflow Developer Survey 2019.png

المصدر

كيف أتعلم SQL؟

قد تسأل: كيف أتعلم SQL؟ شبكة الإنترنت غنية بالكتب والمراجع والمقالات عن SQL باللغة الإنجليزية، للأسف، من الصعب أن تجد محتوى عربيا عالي الجودة لتعلم SQL، أو أيّ مجال تقني آخر.

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

سلسلة "SQL للمحترفين"

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

هذه السلسلة ليست مثل غيرها من السلاسل والشروحات التي تشرح لغة SQL من البداية شرحًا مُبسَّطًا ومتسلسلًا وإنَّما تعتمد على مبدأ خير الكلام ما قل ودل في الشرح وترك الشيفرة تشرح نفسها بنفسها، فتحوي على كم كبير من الشيفرات بالموازنة مع الشرح. وُجِّهت هذه السلسلة لمن لديه معرفة بسيطة بلغة SQL، لذا يفضَّل أن تمتلك معرفة بلغة SQL لتستفيد أكبر استفادة منها وتقرأ الشيفرات وتفهمها وتتعلَّم منها. في هذه الحالة، ستساهم هذه السلسلة في رفع مستواك في لغة SQL وستُملِّكك مهارات متقدمة في استعمال لغة SQL بالإضافة إلى بعض الخدع والالتفافات المتقدمة أيضًا. قد تسأل نفسك، هل ينفع أن اقرأ السلسلة دون معرفة مسبقة بلغة SQL؟ سأقول، نعم، ولكن يجب أن تتحلى بالصبر في قراءة الشيفرة وتحليلها وفهمها والبحث عن أي موضوع لم تفهمه والسؤال عن شرح لأي شيفرة غامضة، إذ لن تجد كلامًا وشرحًا كبيرًا للمواضع التي تتحدث عنه السلسلة، كما أن تسلسل المواضيع فيها لا تراعي عدم امتلاك القارئ معرفة بلغة SQL، إذ رُتِّبت ترتيبًا عشوائيًا في العمل الأصلي.

بذكر ترتيب عناوين ومواضيع السلسلة، حاولت ترتيب عناوينها بأنسب شكل لتكون متدرِّجة في الصعوبة وحاولت جمع المواضيع المتشابهة في فصل واحد رغم تشرذمها وتفرقها في العمل الأصلي فلا تشبه النسخة العربية المترجمة النسخة الأجنبية مطلقًا، إذ حاولت أن تكون أفضل منها وأرجو أن نكون قد حققنا ذلك. فإن كنت على معرفة بأحد المواضيع، فلا تتخطاها بل اقرأها، فقد تمر معك إشارة لموضوع متقدم أو ملاحظة مهمة لم تكن تعرفها (تذكر أنَّ اسم الكتاب العربي ملاحظات متقدمة للعاملية بلغة SQL ;-) ). يمكنك أيضًا أن تقرأ السلسلة من أي قسم تريد فهي من الأساس غير مُرتَّبة ترتيبًا متدرجًا ومتسلسلًا كما أشرت إلى ذلك، رغم محاولتي في ترتيبها لك أنسب ترتيب من البداية للنهاية؛ أرجو لك قراءة ممتعة!

1. مدخل إلى SQL

1.jpg

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

2. جلب الاستعلامات عبر SELECT في SQL

2.jpg

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

3. التجميع والترتيب في SQL

3.jpg

تتحدث هذه المقالة عن كيفية استخدام العبارتين GROUP BY و ORDER BY لتجميع نتائج الاستعلامات في SQL وترتيبها. إضافة إلى التقنيات المُستخدمة لتصنيف النتائج وفق شروط معينة، وعدّ الصفوف في الجدول، والتنقيب عن البيانات أو ترتيبها بحسب عدة أعمدة.

4. تنفيذ تعليمات شرطية عبر CASE في SQL

4.jpg

تستعرض هذه المقالة العبارة CASE، والتي تُستخدم لكتابة الشيفرات الشرطية (if-then)، وعد الصفوف التي تحقق شرطا معينا، إضافة إلى كيفية استخدام CASE لتحديث البيانات، أو ترتيبها تصاعديا أو تنازليا.

5. البحث والتنقيب والترشيح في SQL

5.jpg

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

6. الدمج بين الجداول في SQL

6.jpg

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

7. تحديث الجداول في SQL

7.jpg

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

8. معالجة الأخطاء والتعديل على قواعد البيانات في SQL

8.jpg

تستعرض هذه المقالة كيفية معالجة الأخطاء باستخدام العبارة TRY / CATCH، وكيفية حساب الاتحاد (UNION) وبعض العمليات الأخرى التي تمكّن من تعديل قواعد البيانات، وإدراج بيانات جديدة في الجداول

9. حذف الجداول وقواعد البيانات في SQL

9.jpg

تتحدّث هذه المقالة عن كيفية حذف الجداول وقواعد البيانات (DROP و DELETE)، واقتطاع الجداول (TRUNCATE TABLE)، وكيفية استخدام الحذف المتفشي أو المتسلسل (Cascading Delete) في SQL.

10. مواضيع متقدمة في SQL

10.jpg

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

11. دوال التعامل مع البيانات في SQL

11.jpg

تستعرض هذه المقالة بعض أنواع الدوال، مثل الدوال التجميعية (Aggregate Functions) التي تُطبَّق على الصفوف، والدوال التحليلية (Analytic Functions) والدوال العددية ودوال النافذة (window function).

12. دوال التعامل مع النصوص في SQL

12.jpg

 تستعرض هذه المقالة مفهوم الدوال النصية String Functions، وهي دوال تُنفَّذ على قيم نصية، وتعيد إمّا قيمًا عددية أو قيمًا نصية. مثلًا، يمكن استخدام الدوال النصية لدمج البيانات، أو استخراج أجزاء من السلاسل النصية، أو موازنة السلاسل النصية أو تحويلها من الأحرف الكبيرة إلى الصغيرة، أو العكس.

13. التعبيرات الجدولية الشائعة Common Table Expressions

13.jpg

تستعرض هذه المقالة مفهوم التعبيرات الجدولية (Common Table Expressions) في SQL، والتي يمكن استخدامها مع الاستعلامات المؤقتة والعوديّة لتوليد سلاسل القيم وتسلق الأشجار (trees).

14. مواضيع متفرقة في SQL

14.jpg

تستعرض هذه المقالة مجموعة من المواضيع الإضافية في SQL، مثل المعارض (Views)، وكيفية كتابة التعليقات، وكيفية التعامل مع المفاتيح الخارجية (Foreign Keys) وإنشاء تسلسلات العناصر.

15. الاستعلامات الفرعية والإجراءات في SQL

15.jpg

تستعرض هذه المقالة بعض المواضيع المتقدمة عن تنفيذ الشيفرات في SQL، مثل الاستعلامات الفرعية (Subqueries)، وكتل التنفيذ، والإجراءات المُخزّنة، والزنادات (triggers)، وكيفية إنشاء المُعامَلات (transactions) وتنفيذها.

16. تصميم الجداول وترتيب تنفيذ الاستعلامات ومعلومات المخطط في SQL

16.jpg

تستعرض هذه المقالة عددا من مواضيع SQL المتفرقة، مثل كيفية تصميم جداول قواعد البيانات، واستخدام المرادفات، وكيفية استخلاص المعلومات المتعلقة بقاعدة البيانات عبر معلومات المخطط، والترتيب الذي تُنفّذ وفقه عبارات واستعلامات SQL التي من المفيد تعلمها والإلمام بها.

17. تنظيم وتأمين شيفرات SQL

17.jpg

تتحدث هذه المقالة عن أفضل الممارسات المُتعارف عليها بين المبرمجين، والتي تساعد على كتابة شيفرات SQL نظيفة وعالية المقروئية، وكذلك تأمين الشيفرات عبر التحوّط من أحد أشهر أنواع هجمات SQL، وهو حقن شيفرات SQL ‏(SQL Injection)‏‏.

دروس ومقالات إضافية

هذه بعض المقالات الإضافية التي يمكن أن تساعدك على ترسيخ فهمك لبعض مفاهيم SQL وقواعد البيانات.

مقدمة عن قواعد البيانات

مقدمة-عن-قواعد-البيانات.png

هذا هو المقال الأول من سلسلة دروس عن لغة الاستعلام البنائية Structured Query language، ويشرح مفهوم قواعد البيانات، وأنظمة إدارة قواعد البيانات، والجداول، وخصائص قواعد البيانات العلاقية.

أساسيّات لغة SQL

أساسيات-لغة-SQL.png

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

البيانات في SQL: أنواعها والقيود عليها

البيانات-في-SQL.png

يتطرق هذا المقال لأحد المفاهيم الأساسية في قواعد البيانات وفي لغة الاستعلامات SQL، وهو مفهوم القيود، إذ يعرض هذا المفهوم مع أمثلة عملية لتوضيحه. إضافة إلى عرض مفصَّل لمختلف أنواع البيانات المُستخدمة في قواعد البيانات.

التعامل مع البيانات (الإدخال، الحذف والتعديل) في SQL

التعامل-مع-البيانات-في-SQL.png

يشرح هذا المقال موضوع لغة التعامل مع البيانات Data Manipulation Language، سوف تملك في نهاية هذا المقال المعرفة اللازمة لإضافة سجلات بيانات إلى الجداول، وتعديلها، وحذفها باستخدام عبارات SQL الأساسية، مثل: UPDATE وINSERT وDELETE.

الاستعلام عن البيانات في SQL

الاستعلام-عن-البيانات-في-SQL.png

هذا المقال تتمة للمقال السابق، ستتعلم فيه إحدى أشهر عبارات لغة الاستعلام البنائية، وهي Select، يتكلم المقال عن كيفية صياغة هذه العبارة، وأشكالها، وكيفية ترشيح البيانات واختيار الأعمدة.

الفهارس Indexes في SQL

الفهارس-Indexes-في-SQL.png

يتناول هذا المقال موضوع الفهارس Indexes في SQL، وما تمثله في قاعدة البيانات، وما هي الفائدة منها، وكيفية استخدامها في شيفرات SQL.

العلاقات بين الجداول في SQL

العلاقات-بين-الجداول-في-SQL.png

SQL مُتخصَّصة أساسًا في قواعد البيانات العلائقية، لهذا فإنّ فهم موضوع العلاقات بين الجداول ضروري لكل مبرمج يريد احتراف هذه اللغة واستنفاذ إمكانياتها. ستتعلم في هذا المقال مفهوم العلاقات بين جداول قاعدة البيانات، وأنواع هذه العلاقات، وكيف تُمثَّل وتطبق بين الجداول.

تعلم لغة الاستعلام SQL بالأمثلة العملية

تعلم-لغة-الاستعلام-SQL-بالأمثلة-العملية.png

أفضل طريقة لتعلم أيّ لغة برمجة هي بتطبيق المعارف على أمثلة عملية. يشرح هذا الدرس المُصوّر أساسيات لغة الاستعلامات SQL عبر أمثلة عملية، وذلك باستخدام لوحة التحكم phpMyAdmin.

خاتمة

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

إن كنت مهتما بتعلم لغات برمجة أخرى، فيمكنك زيارة قسم البرمجة في الأكاديمية، أيضًا لا تنس زيارة موسوعة حسوب، التي تضم توثيقات الكثير من لغات البرمجة، بما في ذلك توثيق SQL. وفّقك الله تعالى.

تم التعديل في بواسطة جميل بيلوني


تفاعل الأعضاء

أفضل التعليقات

المقال يشير لعدم وجود مصادر عربية تشرح SQL.
هذا مرجع شامل لتعلم SQL بالعربية و من الصفر وصولاً لمستوى متقدم جداً.
https://harmash.com/sql
أيضاً يوجد مرجع أكاديمية حسوب (فيه أوامر SQL منظمة)
https://wiki.hsoub.com/SQL

أود التنبيه عن خطأ مطبعي و هو في عنوان الفقرة:"كيف أتعم SQL؟"
الكلمة الثانية يجب أن تكون "أتعلم" و ليس أتعم.

رابط هذا التعليق
شارك على الشبكات الإجتماعية



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...