Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ورقة SQL المرجعية

آخر تحديث

الاستعلام عن البيانات (SELECT)

جوهر SQL: قراءة الصفوف من جدول واحد أو أكثر.

العمليةالصياغة
تحديد كل الأعمدةSELECT * FROM users;
تحديد أعمدة معيّنةSELECT id, name FROM users;
إعادة تسمية عمود (اسم مستعار)SELECT name AS full_name FROM users;
القيم المميّزةSELECT DISTINCT country FROM users;
تحديد عدد الصفوفSELECT * FROM users LIMIT 10;
التخطّي ثم التحديد (الترقيم)SELECT * FROM users LIMIT 10 OFFSET 20;
عدّ الصفوفSELECT COUNT(*) FROM users;

تصفية الصفوف (WHERE)

تضييق نطاق الصفوف التي يُرجعها الاستعلام.

العمليةالصياغة
المساواة / المقارنةWHERE age >= 18
شروط متعددةWHERE age >= 18 AND country = 'US'
أيّ من الشرطينWHERE role = 'admin' OR role = 'owner'
ضمن مجموعةWHERE country IN ('US', 'CA', 'MX')
ضمن نطاقWHERE price BETWEEN 10 AND 50
مطابقة النمطWHERE email LIKE '%@gmail.com'
فارغ / غير فارغWHERE deleted_at IS NULL
النفيWHERE status NOT IN ('archived')

الترتيب والتجميع

العمليةالصياغة
ترتيب تصاعدي (افتراضي)ORDER BY created_at
ترتيب تنازليORDER BY created_at DESC
الترتيب حسب أعمدة متعددةORDER BY country, name DESC
تجميع الصفوفSELECT country, COUNT(*) FROM users GROUP BY country;
تصفية المجموعاتGROUP BY country HAVING COUNT(*) > 100

عمليات الربط (Joins)

دمج الصفوف من جدولين على أساس عمود متطابق.

نوع الربطما يُرجعهالصياغة
INNER JOINالصفوف المتطابقة في كلا الجدولين فقطFROM orders o INNER JOIN users u ON o.user_id = u.id
LEFT JOINكل صفوف الجدول الأيسر + المتطابقات (قيم فارغة لغير ذلك)FROM users u LEFT JOIN orders o ON o.user_id = u.id
RIGHT JOINكل صفوف الجدول الأيمن + المتطابقاتFROM orders o RIGHT JOIN users u ON o.user_id = u.id
FULL OUTER JOINكل الصفوف من كلا الجانبينFROM a FULL OUTER JOIN b ON a.id = b.a_id
CROSS JOINكل التركيبات الممكنة (الضرب الديكارتي)FROM sizes CROSS JOIN colors
الربط الذاتيجدول مرتبط بنفسهFROM employees e JOIN employees m ON e.manager_id = m.id

دوال التجميع

حساب قيمة واحدة عبر مجموعة من الصفوف.

الدالةوظيفتها
COUNT(*)عدد الصفوف
COUNT(col)عدد القيم غير الفارغة
SUM(col)مجموع عمود رقمي
AVG(col)القيمة المتوسطة
MIN(col) / MAX(col)أصغر / أكبر قيمة
STRING_AGG(col, ',')دمج القيم في سلسلة نصية (Postgres؛ GROUP_CONCAT في MySQL)

دوال النوافذ

الحساب عبر مجموعة من الصفوف دون دمجها في صف واحد.

الدالةالصياغة
رقم الصفROW_NUMBER() OVER (ORDER BY score DESC)
الترتيب (مع فجوات)RANK() OVER (PARTITION BY country ORDER BY score DESC)
الترتيب الكثيفDENSE_RANK() OVER (ORDER BY score DESC)
المجموع التراكميSUM(amount) OVER (ORDER BY created_at)
الصف السابق / التاليLAG(score) OVER (ORDER BY date), LEAD(score) OVER (...)

تعديل البيانات (INSERT و UPDATE و DELETE)

العمليةالصياغة
إدراج صفINSERT INTO users (name, email) VALUES ('Ada', 'ada@x.com');
إدراج عدة صفوفINSERT INTO users (name) VALUES ('Ada'), ('Alan');
تحديث الصفوفUPDATE users SET active = true WHERE id = 1;
حذف الصفوفDELETE FROM users WHERE active = false;
الإدراج أو التحديث (Postgres/SQLite)INSERT ... ON CONFLICT (email) DO UPDATE SET name = EXCLUDED.name;

تعريف الجداول (DDL)

العمليةالصياغة
إنشاء جدولCREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL);
إضافة عمودALTER TABLE users ADD COLUMN age INTEGER;
حذف عمودALTER TABLE users DROP COLUMN age;
حذف جدولDROP TABLE users;
إنشاء فهرسCREATE INDEX idx_users_email ON users (email);
مفتاح خارجيFOREIGN KEY (user_id) REFERENCES users (id)

كل جملة وعبارة وعملية ربط في SQL قد تحتاجها، على صفحة واحدة. ورقة SQL المرجعية هذه هي مرجع سريع للاستعلام عن البيانات العلائقية وتعديلها - عبارات SELECT، وأنواع JOIN الأربعة، والتجميع، و DDL و DML التي تستخدمها لإنشاء الجداول وتحديثها.

الصياغة هنا هي صياغة ANSI SQL القياسية وتعمل في PostgreSQL و MySQL و SQLite و SQL Server ما لم يُذكر خلاف ذلك. انسخ ما تحتاجه، أو جرّب كل استعلام مباشرة في playground الخاص بـ SQL - دون الحاجة إلى تثبيت أي قاعدة بيانات.

الأسئلة الشائعة حول ورقة SQL المرجعية

هل ورقة SQL المرجعية هذه مجانية؟
نعم. ورقة SQL المرجعية هذه مجانية تمامًا، دون الحاجة إلى التسجيل. أضِفها إلى المفضلة وارجع إليها متى احتجت إلى البحث عن عبارة أو عملية ربط أو دالة.
هل تعمل مع MySQL و PostgreSQL و SQLite؟
نعم في الغالب. صياغة SELECT و WHERE و JOIN و GROUP BY و DDL الموضّحة هنا هي صياغة ANSI SQL القياسية وتعمل بالطريقة نفسها في MySQL و PostgreSQL و SQLite و SQL Server. تختلف بعض الميزات المتقدمة باختلاف اللهجة - الإدراج أو التحديث (upsert) ودمج النصوص هما الأكثر شيوعًا - وتُشير تلك الصفوف إلى الفرق.
ما الفرق بين INNER JOIN و LEFT JOIN؟
يُرجع INNER JOIN الصفوف التي لها مطابقة في كلا الجدولين فقط. أمّا LEFT JOIN فيُرجع كل صف من الجدول الأيسر (الأول)، مع ملء القيمة NULL لأعمدة الجدول الأيمن عندما لا توجد مطابقة - وهذا مفيد عندما تريد كل المستخدمين حتى لو لم يكن لدى بعضهم طلبات.
هل يمكنني التدرّب على أوامر SQL هذه عبر الإنترنت؟
نعم. افتح playground الخاص بـ SQL لتشغيل أيّ استعلام من هذه الورقة المرجعية على قاعدة بيانات حقيقية في متصفحك - دون الحاجة إلى تثبيت أي شيء. وعندما ترغب في تعلّم منظّم، تأخذك دورة SQL التفاعلية المجانية من Coddy من SELECT إلى عمليات الربط ودوال النوافذ خطوة بخطوة.
هل هذه الورقة المرجعية مناسبة للمبتدئين؟
نعم. إنها مرتّبة من العمليات الأكثر شيوعًا (الاستعلام والتصفية) وصولًا إلى العمليات المتقدمة (دوال النوافذ)، بحيث يمكنك استخدام الأقسام العلوية من اليوم الأول والتدرّج إلى البقية.
Coddy programming languages illustration

تعلّم SQL مع Coddy

ابدأ الآن