1. INSERT INTO SELECT:

ده بيُستخدم علشان تنقل بيانات من جدول لجدول تاني موجود بالفعل. يعني لو عندك جدولين، وعايز تنقل بيانات من جدول لجدول تاني، بتستخدمه.

الطريقة:

  • بنستخدمه لما نكون عايزين إدخال البيانات من جدول إلى جدول تاني موجود بالفعل.
  • بنكتب الاستعلام ده:
INSERT INTO table2 (column1, column2, column3)
SELECT column1, column2, column3
FROM table1
WHERE condition;

إزاي بيشتغل؟:

  • بتحدد في البداية اسم الجدول اللي هتدخل فيه البيانات (table2) والأعمدة اللي هتدخلي فيها البيانات.
  • بعدين بتكتب استعلام SELECT اللي هيسحب البيانات من جدول تاني (table1) ويختار الأعمدة اللي هتدخلها في الجدول التاني.

ملاحظات:

  • الجدول اللي هتنقل البيانات ليه موجود مسبقًا، يعني لازم يكون في نفس الجدول.
  • بتم إدخال البيانات فقط، مش بتخلق جدول جديد.

مثال:

لو عندك جدول اسمه students وعايز تنقل الطلاب اللي فيهم درجات عالية لجدول تاني اسمه high_scores، هتكتب حاجة زي دي:

INSERT INTO high_scores (student_name, grade)
SELECT student_name, grade
FROM students
WHERE grade > 90;

2. SELECT INTO:

ده بيُستخدم علشان إنشاء جدول جديد ونقل البيانات ليه في نفس الوقت. يعني لو عندك بيانات وعايز تنقلها لجدول جديد بالكامل، بتستخدمه.

الطريقة:

  • بنستخدمه لما نكون عايزين نسخ البيانات من جدول موجود لإنشاء جدول جديد.
  • بتكتب الاستعلام بالشكل ده:
SELECT column1, column2, column3
INTO new_table
FROM old_table
WHERE condition;

إزاي بيشتغل؟:

  • أول حاجة، بُتحدد البيانات اللي عايز تسحبها من الجدول القديم.
  • بعدين، بتكتب INTO علشان تنشئ جدول جديد (new_table) وتنسخ فيه البيانات.

ملاحظات:

  • الجدول الجديد بيتنشئ تلقائيًا، ما فيش حاجة لازم تكتبها علشان تعمل هيكل الجدول.
  • مش بتهتم بتحديد الأعمدة اللي عايز تضيفها زي في INSERT INTO SELECT، لأن الجدول الجديد هيتخلق تلقائيًا.

مثال:

لو عندك جدول اسمه employees وعايز تعمل جدول جديد اسمه top_employees وتنسخ فيه الموظفين اللي رواتبهم عالية، هتكتب:

SELECT name, salary
INTO top_employees
FROM employees
WHERE salary > 5000;

هنا هيتم إنشاء جدول جديد اسمه top_employees في نفس الوقت اللي البيانات هتتنسخ ليه.


الفرق الأساسي بين الاثنين:

  • الـINSERT INTO SELECT: بيضيف بيانات لجدول موجود مسبقًا.
  • الـSELECT INTO: بيعمل جدول جديد تمامًا وبيضيف فيه البيانات.

لو عندك جدول موجود وعايز تضيف له بيانات من جدول تاني، استخدم INSERT INTO SELECT. لو عايز تنشئ جدول جديد من بيانات جدول تاني، استخدم SELECT INTO.

هل ده وضح لك الفرق؟