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
.
هل ده وضح لك الفرق؟