0Pricing
SQL Academy · درس

INSERT مع صفوف متعددة

أدرج صفًا واحدًا أو عدة صفوف بعبارة واحدة، واستخدم INSERT ... SELECT لنسخ البيانات بين الجداول.

INSERT مع صفوف متعددة درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.

INSERT لصف واحد

يسمّي الشكل الأبسط الأعمدة ويزوّدها بالقيم:

INSERT INTO users (email, full_name)
VALUES ('alice@example.com', 'Alice Adams');

INSERT لصفوف متعددة

أدرج صفوفًا متعددة في عبارة واحدة. وهذا أسرع من تنفيذ العديد من عمليات ذهاب وإياب:

INSERT INTO users (email, full_name) VALUES
  ('alice@example.com', 'Alice Adams'),
  ('bob@example.com',   'Bob Brown'),
  ('carol@example.com', 'Carol Chen');

لماذا تكون الصفوف المتعددة أسرع

عدد أقل من جولات الذهاب والإياب إلى قاعدة البيانات، وعدد أقل من دورات التحليل والتخطيط، وتفريغ واحد لـ WAL. عند الإدراج المجمع لمئات الصفوف، تكون صيغة multi-VALUES أسرع من الإدراج صفًا تلو الآخر بمقدار يتراوح بين 5 و10 أضعاف.

القيم الافتراضية

احذف العمود من القائمة لاستخدام قيمته DEFAULT (أو NULL):

INSERT INTO orders (user_id, total)
VALUES (1, 99.50);
-- id, created_at, status filled by DEFAULTs

DEFAULT صريح

أو استخدم الكلمة المفتاحية DEFAULT:

INSERT INTO orders (id, user_id, total, status)
VALUES (DEFAULT, 1, 99.50, DEFAULT);

RETURNING

استرجع أعمدة الصفوف المُدرجة من دون تنفيذ استعلام ثانٍ (في PostgreSQL):

INSERT INTO users (email, full_name)
VALUES ('alice@example.com', 'Alice Adams')
RETURNING id, created_at;

INSERT … SELECT

انسخ الصفوف أو حوّلها من جدول آخر:

INSERT INTO archive_orders (id, user_id, total)
SELECT id, user_id, total
FROM orders
WHERE created_at < NOW() - INTERVAL '5 years';

التحميل المجمع باستخدام COPY

عند التعامل مع عشرات الآلاف من الصفوف أو أكثر، استخدم الأمر COPY، فهو أسرع مسار بفارق كبير:

COPY users (email, full_name) FROM '/tmp/users.csv' (FORMAT csv, HEADER true);

-- Or from STDIN in a client:
COPY users (email, full_name) FROM STDIN;
 alice@example.com\tAlice
 bob@example.com\tBob
 \.

تجنّب الإدراج ضمن معاملات كبيرة من دون سبب

المعاملة الواحدة = كتلة ذرّية واحدة. إذا فشل استيراد يضم مليون صف في منتصفه، فسيُلغى كل شيء بالتراجع. قد تحتاج إلى ذلك أحيانًا، وقد تفضّل أحيانًا تقسيم العملية إلى دفعات من 10 آلاف صف.

نصائح لتحسين أداء INSERT

عند تنفيذ عمليات إدراج كبيرة:

  • احذف الفهارس الثانوية، ثم أدرج البيانات وأعد إنشاء الفهارس
  • عطّل المشغلات / عمليات التحقق من المفاتيح الخارجية إذا كان ذلك آمنًا
  • استخدم COPY متى أمكن
  • اضبط maintenance_work_mem لإعادة إنشاء الفهارس

تمهيد لمعالجة التعارضات

لإجراء «إدراج إذا كان الصف جديدًا، وإلا فتحديثه»، استخدم INSERT ... ON CONFLICT، وسنتناوله في الدرس التالي.

مراجعة

الأمر INSERT واضح ومباشر؛ وتغطي صيغتا multi-row VALUES وINSERT … SELECT الحالات اليومية. تتجنب RETURNING جولات الذهاب والإياب الإضافية. وللبيانات المجمعة، استخدم COPY.

اختبار سريع

ما أسرع طريقة لتحميل 100,000 صف من ملف CSV إلى PostgreSQL؟

الأسئلة الشائعة

هل درس «INSERT مع صفوف متعددة» مجاني؟

نعم — نص درس «INSERT مع صفوف متعددة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.

ماذا ستتعلم في «INSERT مع صفوف متعددة»؟

أدرج صفًا واحدًا أو عدة صفوف بعبارة واحدة، واستخدم INSERT ... SELECT لنسخ البيانات بين الجداول. تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟

لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «INSERT مع صفوف متعددة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟

نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. INSERT مع صفوف متعددة
  2. UPSERT: ON CONFLICT DO UPDATE (PostgreSQL)
  3. UPDATE مع FROM وتحديثات بأسلوب JOIN
  4. DELETE مع USING وأنماط آمنة
← العودة إلى SQL Academy