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

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

Practical SQL Guide an Overview of Where to Start With SQL

ملخص

تظل SQL ضرورية لكل مطور في عام 2026 — ابدأ بـ SELECT و JOIN و GROUP BY، ثم انتقل إلى CTEs و window functions. توفر قواعد البيانات الحديثة مثل PostgreSQL 18 و 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 18 (الإصدار المستقر الحالي اعتباراً من مارس 2026)

لماذا: قاعدة بيانات علائقية عامة الأغراض واسعة الانتشار مع دعم كامل لـ SQL، و JSONB للبيانات شبه المهيكلة، وميزات مثل أنواع المصفوفات، والبحث في النصوص الكاملة، و(جديد في الإصدار 18) الإدخال/الإخراج غير المتزامن (async I/O) لعمليات المسح التسلسلي الأسرع، والأعمدة المولدة افتراضياً، و uuidv7(). تم إصدار PostgreSQL 18 في 25 سبتمبر 2025؛ ولا يزال الإصدار 17 مدعوماً إذا لم تقم منصتك بالترقية بعد.

-- مثال على استعلام JSONB: استخراج حقل، والتصفية بواسطة مفتاح متداخل
SELECT id, metadata->>'country' AS country
FROM users
WHERE metadata ? 'signup_date';  -- يعيد الصفوف حيث يحتوي الـ JSON على مفتاح 'signup_date' في المستوى الأعلى

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

SQLite

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

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

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

DuckDB

لماذا: قاعدة بيانات تحليلية عمودية مضمنة محسنة لـ OLAP (التقارير والتحليلات)، وليس OLTP (المعاملات). مصممة لتكون سريعة في عمليات التجميع والمسح على الملفات المحلية (Parquet، CSV، JSON). تعمل داخل العملية مثل SQLite ولكن بمحرك تخزين وتنفيذ يركز على التحليلات، وتدعم كلاً من قواعد البيانات على القرص وفي الذاكرة.

# وضع الذاكرة (تختفي البيانات عند خروج العملية)
duckdb :memory: "SELECT COUNT(*) FROM 'large_dataset.parquet';"

# أو دائمة: تكتب في ملف واحد على القرص
duckdb mydata.duckdb "SELECT COUNT(*) FROM 'large_dataset.parquet';"

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

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

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

منصة قواعد بيانات مدارة مبنية على Vitess (طبقة تقسيم MySQL التي تم تطويرها في الأصل في YouTube). تقدم PlanetScale خيارات MySQL و Postgres — وصل Postgres إلى التوفر العام في سبتمبر 2025. تشتهر بسير عمل التفرع (branching) لتغييرات المخطط (schema) (فروع قاعدة البيانات التي تحاكي فروع Git). تغيرت الأسعار بمرور الوقت (تم إيقاف الطبقة المجانية الأصلية Hobby في مارس 2024 وتبدأ الخطط الأساسية الآن برسوم شهرية منخفضة) — تحقق من planetscale.com/pricing لمعرفة الطبقة الأساسية الحالية.

pscale connect mydb main

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

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

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

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

مصادر التدريب (اختيار شخصي، بالترتيب الذي أقترح اتباعه تقريباً)

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

⚠ الأسعار تتغير باستمرار. القيم المذكورة أعلاه للتوضيح فقط وقد تكون قديمة. تأكد دائمًا من الأسعار الحالية مباشرة من المزود قبل اتخاذ قرارات التكلفة: Anthropic · OpenAI · Google Gemini · Google Vertex AI · AWS Bedrock · Azure OpenAI · Mistral · Cohere · Together AI · DeepSeek · Groq · Fireworks AI · Perplexity · xAI · Cursor · GitHub Copilot · Windsurf.

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

مسار التعلم

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

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

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

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

الخلاصة

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


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

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

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

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