انتقل إلى محتوى الدرس

Copying Query Results INSERT SELECT نسخ النتائج بـ INSERT SELECT

تعلّم العمليات متعددة الجداول INSERT SELECT و UPDATE JOIN و DELETE JOIN في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
8 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

بدلاً من سحب آلاف الصفوف إلى ذاكرة التطبيق البرمجي ثم إعادة إدراجها صفاً تلو الآخر، تنقل صيغة INSERT INTO ... SELECT مخرجات أي استعلام SELECT (بما في ذلك الاستعلامات المترابطة عبر JOIN) وتدرجها مباشرةً داخل الجدول الهدف في محرك قاعدة البيانات:

  • التطابق الموضعي للأعمدة: اذكر دائماً أسماء الأعمدة المستهدفة صراحةً بعد INSERT INTO وطابق عددها وأنواع بياناتها مع قائمة SELECT بالترتيب.
  • الاستغناء عن كلمة VALUES: عند الإدراج من استعلام، تحل جملة SELECT محل جملة VALUES (...) بالكامل.
مخطط العمليات متعددة الجداول INSERT SELECT و UPDATE JOIN و DELETE JOIN في MySQL 8
SQL
-- Populate shipping_labels from paid orders joined with customers
INSERT INTO shipping_labels (order_id, recipient_name, city, created_at)
SELECT
  o.order_id,
  u.full_name,
  u.city,
  o.order_date
FROM orders AS o
INNER JOIN users AS u ON o.user_id = u.user_id
WHERE o.status = 'paid';