البرمجة

دليل شامل لفهم SQL

مقدمة إلى SQL: لغة الاستعلامات البنيوية

في عصر البيانات الضخمة الذي نعيشه اليوم، أصبحت القدرة على إدارة وتخزين البيانات من أساسيات أي تطبيق أو نظام، سواء كان في الشركات الكبرى أو الأنظمة الصغيرة. وقد ظهرت العديد من الطرق لتخزين البيانات واسترجاعها، إلا أن SQL (Structured Query Language) تظل واحدة من أبرز لغات الاستعلام التي تُستخدم للتفاعل مع قواعد البيانات العلائقية.

SQL هي لغة استعلامات بنيوية تُستخدم لإدارة البيانات المخزنة في قواعد البيانات العلائقية. وعلى الرغم من وجود العديد من أنظمة إدارة قواعد البيانات المختلفة، مثل MySQL و PostgreSQL و Microsoft SQL Server و Oracle Database، فإن جميع هذه الأنظمة تدعم SQL بشكل أساسي، مما يجعلها لغة معيارية للتفاعل مع البيانات.

مفهوم SQL واستخداماتها

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

تاريخ SQL

تعود نشأة SQL إلى السبعينيات من القرن الماضي، عندما كان البحث العلمي في مجال قواعد البيانات يهدف إلى إنشاء لغة قياسية للتفاعل مع قواعد البيانات العلائقية. تم تطوير SQL في البداية بواسطة شركة IBM في عام 1974، وكانت تعرف في ذلك الوقت باسم SEQUEL (Structured English Query Language). لكن في 1986، اعتمدت اللجنة الأمريكية للمعايير (ANSI) SQL كلغة قياسية للإجراءات المتعلقة بقواعد البيانات العلائقية، ومن هنا بدأ استخدامها على نطاق واسع.

العناصر الأساسية للغة SQL

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

1. أوامر تعريف البيانات (Data Definition Language – DDL)

تستخدم أوامر DDL لتعريف هيكل البيانات داخل قاعدة البيانات. وهي تشمل:

  • CREATE: لإنشاء جداول جديدة أو قواعد بيانات جديدة.

    sql
    CREATE TABLE الموظفين ( ID INT PRIMARY KEY, الاسم VARCHAR(100), الوظيفة VARCHAR(100), الراتب DECIMAL(10, 2) );
  • ALTER: لتعديل هيكل جدول موجود بالفعل، مثل إضافة أو حذف عمود.

    sql
    ALTER TABLE الموظفين ADD تاريخ_الالتحاق DATE;
  • DROP: لحذف الجداول أو قواعد البيانات.

    sql
    DROP TABLE الموظفين;

2. أوامر التحكم في البيانات (Data Manipulation Language – DML)

تستخدم أوامر DML للتفاعل مع البيانات داخل الجداول. تشمل الأوامر الرئيسية:

  • SELECT: لاسترجاع البيانات من جدول معين. هذه هي الأداة الأكثر استخدامًا في SQL، حيث يمكنك استرجاع بيانات محددة أو بيانات كلها.

    sql
    SELECT الاسم, الراتب FROM الموظفين WHERE الوظيفة = 'مدير';
  • INSERT: لإضافة بيانات جديدة إلى جدول.

    sql
    INSERT INTO الموظفين (ID, الاسم, الوظيفة, الراتب) VALUES (1, 'أحمد علي', 'مدير', 5000.00);
  • UPDATE: لتحديث بيانات موجودة في جدول.

    sql
    UPDATE الموظفين SET الراتب = 5500.00 WHERE ID = 1;
  • DELETE: لحذف بيانات من جدول.

    sql
    DELETE FROM الموظفين WHERE ID = 1;

3. أوامر التحكم في المعاملات (Transaction Control Language – TCL)

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

  • COMMIT: لحفظ التغييرات التي تم إجراؤها على قاعدة البيانات.

    sql
    COMMIT;
  • ROLLBACK: للتراجع عن التغييرات الأخيرة التي تم إجراؤها في المعاملة الحالية.

    sql
    ROLLBACK;
  • SAVEPOINT: لتحديد نقطة في المعاملة يمكن العودة إليها باستخدام ROLLBACK.

    sql
    SAVEPOINT نقطة_التراجع;

4. أوامر التحكم في الوصول إلى البيانات (Data Control Language – DCL)

تستخدم أوامر DCL للتحكم في الوصول إلى قاعدة البيانات وتحديد الأذونات. وتشمل:

  • GRANT: لمنح الأذونات للمستخدمين.

    sql
    GRANT SELECT, INSERT ON الموظفين TO 'user1';
  • REVOKE: لسحب الأذونات من المستخدمين.

    sql
    REVOKE SELECT ON الموظفين FROM 'user1';

أنواع البيانات في SQL

تعتمد SQL على نوع البيانات لتحديد نوع المعلومات التي يمكن تخزينها في الجداول. تشمل أنواع البيانات الأكثر استخدامًا:

  • INT: للأعداد الصحيحة.

  • VARCHAR: للنصوص.

  • DATE: للتواريخ.

  • DECIMAL: للأرقام العشرية.

  • BOOLEAN: للبيانات المنطقية (صحيح أو خطأ).

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

في SQL، يتم تخزين البيانات في الجداول، وكل جدول يحتوي على صفوف و أعمدة. الصفوف تمثل السجلات، بينما الأعمدة تمثل خصائص البيانات. على سبيل المثال، في جدول الموظفين، قد يحتوي الجدول على الأعمدة مثل “الاسم”، “الوظيفة”، “الراتب”، بينما كل صف يمثل موظفًا مختلفًا.

في قواعد البيانات العلائقية، يمكن إنشاء علاقات بين الجداول باستخدام المفاتيح الأساسية (Primary Keys) والمفاتيح الأجنبية (Foreign Keys). على سبيل المثال، يمكن ربط جدول الموظفين بجدول الأقسام عن طريق إدراج مفتاح أجنبي في جدول الموظفين يشير إلى قسم معين في جدول الأقسام.

sql
CREATE TABLE الأقسام ( ID INT PRIMARY KEY, اسم_القسم VARCHAR(100) ); CREATE TABLE الموظفين ( ID INT PRIMARY KEY, الاسم VARCHAR(100), قسم_ID INT, FOREIGN KEY (قسم_ID) REFERENCES الأقسام(ID) );

الاستعلامات المعقدة في SQL

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

1. الانضمام بين الجداول (JOIN)

يتم استخدام JOIN لربط جداول متعددة واسترجاع البيانات منها بناءً على علاقات محددة بين الأعمدة.

  • INNER JOIN: يعرض فقط السجلات التي لها تطابق في كلا الجدولين.

    sql
    SELECT الموظفين.الاسم, الأقسام.اسم_القسم FROM الموظفين INNER JOIN الأقسام ON الموظفين.قسم_ID = الأقسام.ID;
  • LEFT JOIN: يعرض جميع السجلات من الجدول الأيسر، مع تطابقات من الجدول الأيمن إذا كانت موجودة.

    sql
    SELECT الموظفين.الاسم, الأقسام.اسم_القسم FROM الموظفين LEFT JOIN الأقسام ON الموظفين.قسم_ID = الأقسام.ID;

2. التجميع (GROUP BY)

تستخدم عبارة GROUP BY لتجميع السجلات حسب عمود معين، مما يسمح بتطبيق الدوال التجميعية مثل SUM و COUNT.

sql
SELECT قسم_ID, COUNT(*) AS عدد_الموظفين FROM الموظفين GROUP BY قسم_ID;

3. الترتيب (ORDER BY)

يمكن استخدام ORDER BY لترتيب النتائج بترتيب تصاعدي أو تنازلي بناءً على أحد الأعمدة.

sql
SELECT الاسم, الراتب FROM الموظفين ORDER BY الراتب DESC;

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

تعد أداء الاستعلامات واحدة من أهم القضايا عند العمل مع SQL، حيث أن الاستعلامات المعقدة يمكن أن تؤثر على سرعة استرجاع البيانات. من أجل تحسين الأداء، يمكن اتخاذ عدة تدابير مثل:

  1. استخدام الفهارس (Indexes): لتسريع البحث عن البيانات.

  2. تحليل خطط التنفيذ (Execution Plans): لمعرفة كيفية تنفيذ الاستعلامات وتحليل أدائها.

  3. تقليل عدد الاستعلامات الفرعية: عند كتابة استعلامات معقدة.

خلاصة

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