**شرح مفصل عن MySQL INSERT SELECT**
تعد قاعدة البيانات MySQL واحدة من أبرز قواعد البيانات العلائقية المستخدمة في تطوير التطبيقات والأنظمة. من بين العمليات الأساسية التي يتم تنفيذها في MySQL هي عمليات الإدراج (INSERT) والاستعلام (SELECT). وعندما ندمج هاتين العمليتين، [شركة برمجة مصرية] نحصل على طريقة قوية ومرنة لإدراج البيانات المستخرجة من استعلام في جدول آخر أو حتى في نفس الجدول. تُعرف هذه العملية باسم “INSERT SELECT”.
ما هو INSERT SELECT؟
إن INSERT SELECT هو تعبير يستخدم في MySQL لنسخ البيانات من جدول (أو جداول) واستخدامها لإدراجها في جدول آخر. يتيح لك هذا التعبير نقل البيانات بشكل ديناميكي بناءً على شروط محددة، دون الحاجة إلى استخراج البيانات يدويًا وإدراجها يدويًا.
البنية الأساسية لـ INSERT SELECT
INSERT INTO target_table (column1, column2, ...)
SELECT column1, column2, ...
FROM source_table
WHERE condition;
– **target_table**: هو الجدول الذي سيتم إدراج البيانات فيه.
– **source_table**: هو الجدول الذي يتم جلب البيانات منه.
– **column1, column2, …**: الأعمدة التي سيتم نسخها وإدراجها. يجب أن يتوافق عدد وترتيب الأعمدة المحددة في SELECT مع تلك المحددة في INSERT INTO.
– **condition**: شرط لاختيار البيانات من الجدول المصدر.
مثال 1: نسخ بيانات من جدول إلى آخر
لنفترض أن لدينا جدولين: `employees` و `employees_backup`. نريد نسخ جميع البيانات من جدول `employees` إلى `employees_backup`.
INSERT INTO employees_backup (id, name, position, salary)
SELECT id, name, position, salary
FROM employees;
مثال 2: نسخ بيانات استنادًا إلى شرط محدد
لنفترض أننا نريد نسخ الموظفين الذين يتقاضون راتبًا يزيد عن 5000 فقط إلى جدول النسخ الاحتياطي.
INSERT INTO employees_backup (id, name, position, salary)
SELECT id, name, position, salary
FROM employees
WHERE salary > 5000;
مثال 3: إدراج بيانات محسوبة
يمكن أيضًا استخدام INSERT SELECT لإدراج بيانات محسوبة. لنفترض أننا نريد نسخ الأسماء والرواتب مع زيادة الرواتب بنسبة 10%.
INSERT INTO employees_backup (name, salary)
SELECT name, salary * 1.10
FROM employees;
مثال 4: استخدام INSERT SELECT مع JOIN
لنفترض أن لدينا جدولين: `orders` و `customers`، ونريد إدراج تفاصيل الطلبات مع أسماء العملاء في جدول ثالث يسمى `order_details`.
INSERT INTO order_details (order_id, customer_name, order_date)
SELECT o.id, c.name, o.date
FROM orders o
JOIN customers c ON o.customer_id = c.id;
المزايا
1. **الكفاءة**: يتيح لك INSERT SELECT معالجة البيانات دفعة واحدة بدلاً من استخدام حلقات لإدراج كل سجل على حدة.
2. **التكامل**: يمكنك دمج البيانات من جداول متعددة باستخدام JOIN [شركة برمجة مصرية] في جملة SELECT.
3. **الديناميكية**: يمكنك إدراج بيانات تعتمد على شروط محددة، مما يوفر مرونة أكبر في إدارة البيانات.
الخاتمة
يعد INSERT SELECT أداة قوية في MySQL تتيح لك نسخ وإدراج البيانات بين الجداول بكفاءة ومرونة. باستخدام هذه التقنية، يمكنك تبسيط عمليات إدارة البيانات وتحقيق نتائج دقيقة وفعالة. سواء كنت تقوم بعمل نسخ احتياطية للبيانات أو دمج جداول متعددة، فإن INSERT SELECT يوفر لك الوسيلة المثلى لتحقيق أهدافك.
