انتقال للمقال

لغة SQL وأهميتها في إدارة قواعد البيانات

السلام عليكم ورحمة الله وبركاته

وقت القراءة: ≈ 5 دقائق

المقدمة

أظننا سنبدأ رحلة جديدة وسلسلة جديدة عن الـ SQL

عندما تبدأ الحديث عن قواعد البيانات، فإن أول ما يتبادر إلى الذهن هى لغة الـ SQL
تقريبًا كل تطبيق أو موقع ويب تستخدمه يوميًا يعتمد على قواعد البيانات
وهذا بديهي لأن الـ SQL هي اللغة التي تسمح لنا بالتعامل مع هذه البيانات بطريقة منظمة
سواء بتخزين البيانات، وكيفية تخزينها والشروط التي يجب أن تتوفر فيها
وتوفر لنا وسيلة للاستعلام عن البيانات واسترجاعها وهو ما نسميه بالـ Query
وتسمح لنا بإجراء عمليات على البيانات مثل الإضافة والتحديث والحذف
وأيضًا ربط أكثر من جدول معًا


في هذه السلسلة من المقالات، سنأخذك في رحلة شاملة لتعلم لغة الـ SQL
وسأحاول أن اشرحها وأبسطها لك قدر الإمكان

ما هي لغة الـ SQL ؟

أولًا الـ SQL هي اختصار لـ Structured Query Language
وعندما تتأمل في الاسم، ستجد أنه يصف ثلاثة أشياء رئيسية:

  • Structured: تعني أن البيانات منظمة في جداول ولها قواعد محددة وصارمة في بعض الأحيان
  • Query: تعني الاستعلام، أي أنك تستطيع طرح أسئلة على البيانات واسترجاع المعلومات التي تحتاجها وغالبًا سيكون هذا الجزء الأكثر استخدامًا في الـ SQL وهو ما ستتعلمه ونستفيض فيه في هذه السلسلة
  • Language: تعني أنها لغة، بالتالي لها syntax أو قواعد كتابة خاصة بها بالتالي يسهل فهمها والتعامل معها

عندنا تسألني عن ما هي الأمور التي يمكنك القيام بها باستخدام SQL
فالإجابة ستكون أنه في حالة أنك تريد التعامل مع قواعد البيانات، فإنك ستستخدم SQL للقيام بالآتي:

  • قراءة البيانات من قاعدة البيانات بإستخدام أمر يدعى SELECT
  • إضافة بيانات جديدة بإستخدام أمر يدعى INSERT
  • تحديث البيانات الموجودة بإستخدام أمر يدعى UPDATE أو ALTER
  • حذف البيانات غير المرغوب فيها بإستخدام أمر يدعى DELETE أو DROP
  • إنشاء جداول وقواعد بيانات جديدة بإستخدام أمر يدعى CREATE
  • إدارة أذونات المستخدمين والأمان بإستخدام أوامر خاصة بذلك

بالطبع يوجد أووامر أخرى كثيرة في SQL، ولكن هذه هي الأساسيات التي ستحتاجها في البداية

مثال بسيط

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

Employees Table
+----+--------+--------------+--------+
| id | name   | country_name | salary |
+----+--------+--------------+--------+
| 10 | Ahmed  | Egypt        | 3500   |
| 20 | Ali    | Egypt        | 4500   |
| 30 | Yehia  | Palestine    | 7000   |
| 40 | Omar   | Egypt        | 8000   |
| 50 | Ismail | Palestine    | 5000   |
+----+--------+--------------+--------+

عندما تتعامل مع SQL فأنت ستتعامل مع جداول مثل هذا الجدول
وكل جدول يحتوي على أعمدة وصفوف
وكل عمود يمثل خانات توصف البيانات مثل id, name, country_name, salary
وكل صف يمثل سجلًا أو بيانات موظف

لو قلت لك أنني أريد أسماء الموظفين الذين يعيشون في مصر ومرتبهم أكبر من 5000 جنيه،

سأكتب لك query على جدول الموظفين السابق يقوم بتنفيذ المطلوب

SELECT name, salary FROM employees
WHERE salary > 5000 AND country_name = 'Egypt';

أعلم أنك قد لا تفهم ما كتبته الآن، ولكن لا تقلق كل شيء سيأتي في وقته
لكن بمجرد النظر ومعرفتك البسيطة باللغة الانجليزية، هل تستطيع على الاقل فهم ما الذي يحدث هنا؟

لدينا هنا أمر SELECT والذي يعني اختار ثم يليه name, salary أي انه هنا يحدد الأعمدة name و salary
ثم يليه FROM employees هنا يحضر البيانات من جدول الموظفين

لذا عندما تقرأ SELECT name, salary FROM employees هنا كأنه يقول لك "اختر لي أسماء الموظفين ومرتباتهم من جدول الموظفين"
هنا في السؤال كنا نريد أسماء الموظفين الذين يعيشون في مصر ومرتبهم أكبر من 5000 جنيه
لذا ستجد WHERE salary > 5000 AND country_name = 'Egypt' وهو تماما ما يعني "حيث أن مرتب الموظف أكبر من 5000 ويعيش في مصر"

بمعنى أن الأمر الذي كتبناه للتو وهو SELECT name, salary FROM employees WHERE salary > 5000 AND country_name = 'Egypt';
قراءته بكل سهولة "اختر لي أسماء الموظفين ومرتباتهم من جدول الموظفين حيث أن مرتبهم أكبر من 5000 ويعيشون في مصر"

هذا من أحد الأمور التي تجعل لغة الـ SQL سهلة وبسيطة
أنك حتى ولو لم تكن تعرفها، يمكنك أن تفهم ما يحدث بمجرد النظر إلى الأمر

أنواع قواعد البيانات المختلفة - DBMS

عليك أن تعرف أن هناك شيء يدعى DBMS أو Database Management System
وهي مجموعة من الأنظمة التي بنيت على الـ SQL لتسهل عليك التعامل مع قواعد البيانات
سواء بجعل الـ SQL أسهل وأسرع وحتى أكثر أمانًا
وتضيف أحيانًا أوامر مختلفة وأمورًا جديدة زائدة على الـ SQL الأصلي
أو حتى لكي تكون متخصص في نوع معين من قواعد البيانات أو في استخدامات محددة

ومن أشهر هذه الأنظمة:

  • MySQL: وهو نظام مفتوح المصدر ويعتبر من أكثر الأنظمة استخدامًا في العالم، ويستخدم في العديد من التطبيقات والمواقع
    يمكنك القول أنه النظام الشعبي الأكثر استخدامًا في عالم قواعد البيانات
  • PostgreSQL: وهو نظام مفتوح المصدر أيضًا ويتميز بقوته ومرونته، ويستخدم في التطبيقات التي تتطلب معالجة بيانات معقدة
    يعتبر الخيار المفضل للمشاريع الكبيرة والمعقدة، يمكنك تخيله كالأخ الأكبر لـ MySQL الذي يرتدي بدلة رسمية
  • SQLite: وهو نظام خفيف ومناسب للتطبيقات الصغيرة
    ويستخدم بشكل شائع في تطبيقات الهواتف المحمولة أو في الـ Frontend أو التطبيقات التي لا تحتاج إلى Backend
    لأنه يمكن تضمينه في التطبيق نفسه ولا يحتاج إلى Server
    لا داعي لأن أشبه بأنه الأخ الأصغر لـ MySQL الذي لا يحتاج إلى الكثير من المتطلبات
  • ... وهناك العديد من الأنظمة الأخرى مثل Microsoft SQL Server و Oracle Database وغيرها

الـ SQL له Standard

الـ SQL بحد ذاتها هي لغة لها معيار موحد أي SQL Standard
وهذا يعني أن هناك مجموعة من الأوامر والقواعد التي يجب أن تتواجد في أي DBMS يدعم الـ SQL
لكن كل نظام قد يضيف ميزات أو أوامر خاصة به
وهذا بديهي لأنك لو أردت أن تنشيء نظامًا جديدًا لإدارة قواعد البيانات لكي يخدم شيء معين أو غرض معين
فأنت يجب عليك أولًا دعم الأمور الأساسية في الـ SQL Standard
ثم بعد ذلك يمكنك إضافة ميزات جديدة أو أوامر خاصة بك

وهذا ما تفعله الأنظمة المختلفة مثل MySQL و PostgreSQL و SQLite
وكل نظام له ميزاته الخاصة التي تجعله مناسبًا لأغراض معينة أو لمشاريع محددة
لكن كلها تدعم الـ SQL Standard بشكل أساسي وتدعم الأوامر الأساسية التي ستتعلمها في هذه السلسلة مثل SELECT, INSERT, UPDATE, DELETE, CREATE, DROP وغيرها

ما الذي ستتعلمه في هذه السلسلة ؟

في هذه السلسلة، سأقوم بتغطية العديد من المواضيع المتعلقة بلغة الـ SQL

  • أوامر متعلقة بالـ Database: لتعرف كيف تنشيء قاعدة بيانات جديدة وتحذفها وتعدل عليها ومن هذه الأوامر CREATE DATABASE, DROP DATABASE وغيرها
  • أوامر متعلقة بالـ Table: لتتعلم كيف تنشيء جدولًا جديدًا، تحذفه، تعدل عليه، ومن هذه الأوامر CREATE TABLE, DROP TABLE, ALTER TABLE وغيرها
  • أساسيات الـ SQL: سنبدأ من الصفر ونتعلم الأساسيات مثل SELECT, INSERT, UPDATE, DELETE وغيرها
  • التعمق في الـ SELECT: حيث سنستعرض كيفية استخدام SELECT بشكل متقدم، مثل استخدام JOIN لربط الجداول معًا، واستخدام GROUP BY و ORDER BY لتنظيم البيانات
  • التعامل مع الدوال: مثل COUNT, SUM, AVG وغيرها من الدوال التي تساعدك في إجراء عمليات حسابية على البيانات
  • التعامل مع الـ View: حيث سنتعلم كيف تنشئ View لعرض البيانات بطريقة معينة دون الحاجة إلى إنشاء جدول جديد
  • وأمور متعددة سواء بسيطة أو متقدمة مثل التعامل مع الـ Transactions, Indexes, وغيرها

ملحوظة: أوامر الـ SQL يمكننا كتابتها lowercase أو UPPERCASE أو حتى camelCase
لذا يمكنك كتابة الأمر SELECT بأي من هذه الطرق وستظل النتيجة كما هي
لكن المتعارف عليه هو كتابة الأوامر بـ UPPERCASE للتفريق بينها وبين أسماء الجداول والأعمدة التي عادة ما تكون بـ lowercase أو camelCase