INSERT INTO SELECT (INSERT INTO SELECT)
«کپی داده با INSERT INTO SELECT» یعنی از یک جدول بخوانیم و در جدول دیگر وارد کنیم. «کپی داده (Data Copy)» یعنی ستون های انتخابی را جابه جا کنیم. این روش سریع و امن تر از اسکریپت دستی است.
INSERT INTO SELECT چیست؟
دستور INSERT INTO SELECT داده ها را از یک جدول می خواند و سپس همان ها را داخل جدول مقصد درج می کند. نام و ترتیب ستون ها باید هماهنگ باشند.
نمونه 1: کپی برخی ستون ها
چند ستون انتخاب می کنیم و همان ها را وارد می کنیم. ستون های خالی NULL می شوند.
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers;
نمونه 2: کپی همه ستون های هدف
اینجا ستون های مقصد کامل پر می شوند. ترتیب باید دقیقاً یکی باشد.
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROM Suppliers;
نمونه 3: کپی با شرط WHERE
فقط رکوردهای لازم را منتقل کن؛ مثل فیلتر کشور آلمان.
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers
WHERE Country = 'Germany';
گام های عملی
- جدول مبدا و مقصد را مشخص کن.
- ستون های منطبق را ردیف کن.
- SELECT را با فیلتر لازم بنویس.
- INSERT INTO SELECT را اجرا کن.
- تعداد ردیف های درج شده را بررسی کن.
نکته: ترتیب و نوع داده ستون ها باید سازگار باشد؛ خطا نگیری.
هشدار: قبل از اجرا روی دیتابیس اصلی، روی نسخه تستی امتحان کن.
پیوندهای مرتبط
برای درج مستقیم مقادیر، صفحه INSERT INTO را ببین. همچنین برای فیلترهای چندگانه، اپراتور IN مفید است. جستجوی گروهی را در GROUP BY دنبال کن.
جمع بندی سریع
- INSERT INTO SELECT داده را جابه جا می کند.
- ستون ها باید هم تراز و هم نوع باشند.
- با WHERE فقط رکوردهای لازم را ببر.
- قبل از اجرا، روی تست امتحان کن.