دليل SQL العملي: نظرة عامة حول من أين تبدأ مع SQL

تم التحديث: ٢٧ مارس ٢٠٢٦

Practical SQL Guide an Overview of Where to Start With SQL

ملخص

تظل SQL ضرورية لكل مطور في عام 2026 — ابدأ بـ SELECT و JOIN و GROUP BY، ثم انتقل إلى CTEs و window functions. توفر قواعد البيانات الحديثة مثل PostgreSQL 17 و SQLite و DuckDB مقايضات مختلفة؛ بينما تبسط المنصات السحابية (Supabase، Neon، PlanetScale) عملية الاستضافة. تدرب باستخدام أدوات تفاعلية مثل SQLZoo ومشكلات قواعد البيانات في LeetCode لبناء الثقة بسرعة.

لغة SQL لم تمت — بل أصبحت أكثر أهمية من أي وقت مضى. البيانات تعيش في قواعد البيانات، و SQL هي الطريقة التي تطرح بها الأسئلة على تلك البيانات. سواء كنت تبني API خلفية، أو تحلل مقاييس الأعمال، أو تنافس في أدوار هندسة البيانات، فإن إتقان SQL أمر غير قابل للتفاوض. يختصر هذا الدليل الطريق: ابدأ من هنا، وتعلم بهذا الترتيب، وتدرب على قواعد بيانات حقيقية. لا تحتاج لأن تكون DBA (مسؤول قواعد بيانات)؛ بل تحتاج إلى التفكير في المجموعات وفهم تخطيط الاستعلام (query planning).

الجزء 1: أساسيات SQL (ابدأ من هنا)

SELECT و WHERE

الأساس: جلب الصفوف التي تطابق شرطاً معيناً.

SELECT id, name, email FROM users WHERE created_at > '2026-01-01';

المفهوم الأساسي: تعيد SQL مجموعة من الصفوف. فكر في المجموعات، وليس في الحلقات التكرارية (loops).

JOIN: دمج الجداول

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

SELECT u.name, p.title, p.published_at
FROM users u
INNER JOIN posts p ON u.id = p.user_id
WHERE p.published_at > '2026-01-01';

أنواع JOIN:

  • INNER JOIN: الصفوف المتطابقة فقط (الأكثر شيوعاً)
  • LEFT JOIN: جميع الصفوف من الجدول الأيسر، والصفوف المتطابقة من الأيمن
  • FULL OUTER JOIN: جميع الصفوف من كلا الجدولين
  • CROSS JOIN: الضرب الديكارتي (نادراً ما يُحتاج إليه)

خطأ شائع: نسيان جملة ON يؤدي لإنشاء cross join.

GROUP BY والتجميع (Aggregation)

تلخيص البيانات عبر المجموعات.

SELECT category, COUNT(*) as post_count, AVG(views) as avg_views
FROM posts
GROUP BY category
HAVING COUNT(*) > 5;

الدوال الأساسية: COUNT, SUM, AVG, MIN, MAX

HAVING مقابل WHERE:

  • WHERE تصفي الصفوف قبل التجميع
  • HAVING تصفي المجموعات بعد التجميع

الجزء 2: SQL المستوى المتوسط

CTEs (تعبيرات الجدول الشائعة)

تقسيم الاستعلامات المعقدة إلى خطوات مقروءة باستخدام جمل WITH.

WITH recent_posts AS (
  SELECT id, title, author_id FROM posts WHERE created_at > '2026-01-01'
),
top_authors AS (
  SELECT author_id, COUNT(*) as post_count
  FROM recent_posts
  GROUP BY author_id
  ORDER BY post_count DESC
  LIMIT 5
)
SELECT u.name, ta.post_count
FROM top_authors ta
JOIN users u ON u.id = ta.author_id;

الميزة على الاستعلامات الفرعية (subqueries): أكثر قابلية للقراءة، أسهل في تصحيح الأخطاء، وغالباً ما تعطي أداءً أفضل.

Window Functions

إجراء حسابات عبر "نوافذ" من الصفوف دون تقليص المجموعات.

SELECT
  category,
  title,
  views,
  ROW_NUMBER() OVER (PARTITION BY category ORDER BY views DESC) as rank_in_category
FROM posts;

دوال window الشائعة: ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD, SUM() OVER

تتجنب window functions عمليات self-joins وتجعل استعلامات التحليل فعالة.

الاستعلامات الفرعية (Subqueries)

جمل SELECT متداخلة (أقل أناقة من CTEs، ولكن من المهم معرفتها).

SELECT * FROM posts WHERE author_id IN (
  SELECT id FROM users WHERE signup_date > '2025-01-01'
);

قواعد بيانات حديثة يجب معرفتها

PostgreSQL 17 (اعتباراً من مارس 2026)

لماذا: المعيار الذهبي لقواعد البيانات العلائقية العامة. دعم كامل لـ SQL، و JSONB للبيانات شبه المنظمة، وميزات متقدمة مثل أنواع المصفوفات والبحث في النصوص الكاملة.

-- مثال على استعلام JSONB
SELECT id, metadata->>'country' as country FROM users
WHERE metadata->'signup_date' ? 'date';

الاستضافة: إدارة ذاتية، أو منصات سحابية (Supabase، Neon، AWS RDS، DigitalOcean)

SQLite

لماذا: قاعدة بيانات مدمجة تُستخدم في كل مكان — المتصفحات، تطبيقات الهاتف، الأنظمة المدمجة. لا تحتاج لإعداد، وتعتمد على الملفات.

sqlite3 mydb.db "SELECT * FROM users LIMIT 5;"

المقايضة: قيد الكاتب الواحد يجعلها غير مناسبة للخلفيات البرمجية ذات التزامن العالي، لكنها مثالية للتطوير المحلي والتطبيقات الصغيرة.

DuckDB

لماذا: قاعدة بيانات تحليلية في الذاكرة (In-memory) محسنة لـ OLAP (التقارير والتحليلات)، وليس OLTP (المعاملات). سريعة جداً لعمليات التجميع والمسح.

duckdb :memory: "SELECT COUNT(*) FROM large_dataset.parquet;"

حالة الاستخدام: تحليل البيانات المحلي، أدوات التحليل، خطوط أنابيب البيانات (data pipelines).

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

Supabase

PostgreSQL + API REST يتم إنشاؤه تلقائياً + اشتراكات في الوقت الفعلي. رائعة للنماذج الأولية السريعة.

const { data } = await Supabase
.from('posts')
.select('*')
.eq('author_id', userId);

Neon

PostgreSQL بدون خادم (Serverless) مع توسع تلقائي. ادفع مقابل ما تستخدمه فقط.

psql postgres://neon-user:password@ep-example.us-east-1.neon.tech/dbname

PlanetScale

MySQL بدون خادم (نسخة متوافقة). سير عمل يشبه GitHub لتغييرات المخطط (schema).

pscale connect mydb main

SQL في هندسة البيانات والتحليلات

تستخدم خطوط أنابيب البيانات الحديثة SQL بكثافة:

  • dbt (أداة بناء البيانات): كتابة نماذج SQL، وتتولى dbt معالجة التبعيات والاختبار.
  • Apache Airflow: مخططات (DAGs) تنفذ استعلامات SQL وفق جداول زمنية.
  • Looker, Tableau: مبنية فوق SQL للاستعلام من مستودعات البيانات.
  • Apache Spark SQL: SQL موزعة عبر مجموعات بيانات ضخمة.

إذا كنت تسعى للعمل في هندسة البيانات، فإن SQL هي لغتك الأولى.

مصادر التدريب (مرتبة حسب الفعالية)

المصدر الأفضل لـ الوقت السعر
SQLZoo الأساسيات بشكل تفاعلي 5-10 ساعات مجاني
LeetCode Database التحضير للمقابلات، صعوبة متوسطة فأعلى +20 ساعة توجد خطة مجانية
Mode Analytics سيناريوهات تحليلية حقيقية 10-15 ساعة مجاني
DataCamp SQL Track منهج دراسي منظم +20 ساعة مدفوع (~30 دولار/شهر)
Stratascratch مشكلات بيانات من شركات حقيقية متغير مدفوع (~25 دولار/شهر)

النهج الموصى به: ابدأ بـ SQLZoo (أسبوع واحد)، ثم مشكلات LeetCode المتوسطة (2-3 أسابيع)، ثم حاول تنفيذ مشروع حقيقي واحد (+4 أسابيع).

مسار التعلم

  1. الأسبوع 1: إتقان SELECT و WHERE و JOIN (عبر SQLZoo)
  2. الأسبوع 2: GROUP BY و HAVING و ORDER BY
  3. الأسبوع 3: الاستعلامات الفرعية و CTEs
  4. الأسبوع 4: Window functions والاستعلامات التحليلية
  5. الأسبوع 5+: إعداد قاعدة بيانات سحابية وتشغيل استعلامات حقيقية على بيانات حقيقية

الانتقال من التمارين إلى البيانات الحقيقية أمر بالغ الأهمية. منصات التدريب تكون بياناتها نظيفة؛ أما بيانات الإنتاج فهي أكثر فوضوية.

الأخطاء الشائعة

  • استعلامات N+1: جلب قائمة، ثم تكرار الحلقة لجلب التفاصيل لكل عنصر. استخدم JOIN بدلاً من ذلك.
  • فقدان الفهارس (Indexes): تعمل الاستعلامات بشكل جيد على الجداول الصغيرة ولكنها تتباطأ بشدة عند وصول الصفوف لـ +10 مليون. أضف فهارس على الأعمدة التي يتم تصفيتها بشكل متكرر.
  • تجنب NULL: مقارنات NULL تستخدم IS NULL، وليس = NULL.
  • تجاهل خطط التنفيذ (Execution plans): استخدم EXPLAIN لمعرفة ما إذا كان الاستعلام يمسح الجدول بالكامل أو يستخدم فهرساً.

الخلاصة

لغة SQL يمكن تعلمها في أسابيع وليس شهور. ابدأ بالأساسيات، وتدرب على مشكلات حقيقية، ثم اختر منصة قاعدة بيانات تناسب حالة استخدامك. سواء كنت مطور خلفية برمجية يدمج قواعد البيانات، أو محلل بيانات، أو مهندس بيانات، فإن كفاءة SQL تتضاعف فوائدها مع الوقت. اقضِ وقتاً هنا — إنها واحدة من المهارات ذات أعلى عائد على الاستثمار (ROI) في تطوير البرمجيات لعام 2026.


نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.