INSERT SELECT (INSERT SELECT)
«INSERT SELECT (INSERT SELECT)» داده ها را از یک جدول برمی دارد و در جدول دیگر وارد می کند. «ساب کوئری (Subquery)» همان کوئری داخل کوئری است. این دستور برای کپی منظم داده هاست؛ مثلا انتقال دانش آموزان ممتاز به جدول افتخارات.
سینتکس INSERT SELECT: کپی همه ستون ها
INSERT INTO table2
SELECT *
FROM table1
WHERE condition;
سینتکس INSERT SELECT: کپی ستون های مشخص
INSERT INTO table2 (column1, column2, column3)
SELECT column1, column2, column3
FROM table1
WHERE condition;
مثال های INSERT SELECT
کپی نام، شهر، کشور از Suppliers به Customers
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country
FROM Suppliers;
پر کردن همه ستون ها از Suppliers
INSERT INTO Customers (
CustomerName,
ContactName,
Address,
City,
PostalCode,
Country
)
SELECT
SupplierName,
ContactName,
Address,
City,
PostalCode,
Country
FROM Suppliers;
کپی فقط تأمین کنندگان آلمانی
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country
FROM Suppliers
WHERE Country = 'Germany';
نکته: نوع داده ستون های مبدا و مقصد باید «سازگار» باشد. همچنین رکوردهای قبلیِ جدول مقصد دست نخورده می مانند.
گام های عملی
- جدول مبدا و مقصد را مشخص کن.
- ستون های هم نام یا هم نوع را انتخاب کن.
- WHERE بزن تا داده درست منتقل شود.
- دستور INSERT SELECT را اجرا کن.
- نتیجه را با SELECT بررسی کن.
لینک های داخلی مفید
- ANY و ALL برای مقایسه با زیرکوئری ها.
- EXISTS برای چکِ وجود رکورد مرتبط.
- گروه بندی (GROUP BY) برای جمع بندی قبل از انتقال.
جمع بندی سریع
- INSERT SELECT داده را بین جداول کپی می کند.
- نوع داده ها باید سازگار باشد.
- WHERE داده هدف را محدود می کند.
- رکوردهای قبلی مقصد تغییر نمی کنند.
- پس از اجرا، نتیجه را بررسی کن.