تقوم جملة SQL INSERT INTO SELECT بنسخ البيانات من جدول وإدراجها في جدول آخر.
تتطلب العبارة INSERT INTO SELECT تطابق أنواع البيانات في الجداول المصدر والهدف.
ينسخ كل الأعمدة من جدول إلى آخر:
INSERT INTO table2
SELECT *
FROM table1
WHERE condition
ينسخ بعض الأعمدة فقط من جدول إلى آخر:
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition
سنستخدم في هذا البرنامج التعليمي نموذج قاعدة البيانات الشهير "Northwind".
يوجد أدناه نموذج من الجدول "Customers" ("العملاء"):
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
والعينة من الجدول "Suppliers" ("الموردون"):
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country | Phone |
---|---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK | (171) 555-2222 |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA | (100) 555-4822 |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA | (313) 555-5735 |
4 | Tokyo Traders | Yoshi Nagase | 9-8 Sekimai Musashino-shi | Tokyo | 100 | Japan | (03) 3555-5011 |
5 | Cooperativa de Quesos 'Las Cabras' | Antonio del Valle Saavedra | Calle del Rosal 4 | Oviedo | 33007 | Spain | (98) 598 76 54 |
ينسخ استعلام SQL التالي "Suppliers" ("الموردون") إلى "Customers" ("العملاء") (ستحتوي الأعمدة التي لم يتم ملؤها بالبيانات على NULL):
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country
FROM Suppliers
نسخة أخرى من استعلام SQL تنسخ البيانات من جدول "الموردين" إلى "العملاء" (تملأ كل الأعمدة):
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country
FROM Suppliers
ينسخ بيان SQL التالي الموردين الألمان فقط إلى جدول العملاء:
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country
FROM Suppliers
WHERE Country = 'Germany'