📞 02166056460

دستور SELECT INTO در sql

10 / 10
از 1 کاربر
بازگشت به لیست مقالات » | پنجشنبه 30 مهر 1405 در ساعت 15 و 22 دقیقه | نظرات کاربران ( 0 )
آموزش SQL

دستور SELECT INTO در SQL؛ آموزش ساخت جدول و نسخه پشتیبان

یاد بگیرید چطور داده ها را با شرط یا بدون شرط به یک جدول جدید منتقل کنید.

دستور SELECT INTO در SQL راهی برای ساخت یک جدول جدید از داده های انتخاب شده در جدول یا جدول های دیگر است. با این دستور می توانید از یک جدول نسخه پشتیبان بسازید، رکوردهای مورد نیاز را آرشیو کنید یا نتیجه یک پرس وجو را در جدولی جداگانه ذخیره کنید.

در این راهنما، ساختار دستور، نمونه های کاربردی، نکات مهم و خطاهای رایج را بررسی می کنیم. اگر در کنار توسعه پایگاه داده به خدمات طراحی سایت هم نیاز دارید، می توانید اطلاعات بیشتر را در این لینک ببینید.

۵ نکته مهم درباره دستور SELECT INTO در SQL

۰۱

۱. دستور SELECT INTO چه کاری انجام می دهد؟

SELECT INTO داده های برگشتی از یک دستور SELECT را در یک جدول جدید قرار می دهد. در بسیاری از سامانه های پایگاه داده، جدول مقصد هنگام اجرای موفق دستور ساخته می شود؛ بنابراین لازم نیست پیش از اجرای پرس وجو، ساختار جدول جدید را جداگانه ایجاد کنید.

برای مثال، اگر جدول Persons اطلاعات افراد را نگه داری کند، می توانید با انتخاب همه ستون ها، یک جدول تازه به نام Persons_Backup بسازید. جدول جدید شامل داده های انتخاب شده است و برای نگه داری یک کپی مستقل از اطلاعات می تواند کاربرد داشته باشد.

این دستور برای افزودن داده به جدولی که از قبل وجود دارد طراحی نشده است. اگر جدول مقصد از قبل ساخته شده و قصد دارید ردیف های تازه ای به آن اضافه کنید، معمولاً باید از INSERT INTO ... SELECT استفاده کنید. انتخاب دستور مناسب به این بستگی دارد که می خواهید جدول تازه بسازید یا داده را به جدول موجود اضافه کنید.

۰۲

۲. ساختار پایه دستور SELECT INTO

در ساده ترین حالت، ابتدا ستون هایی را که می خواهید انتخاب کنید می نویسید، سپس نام جدول مقصد و در پایان جدول مبدا را مشخص می کنید. شکل کلی دستور به این صورت است:

SELECT column_name(s)
INTO new_table_name
FROM old_table_name;

عبارت SELECT مشخص می کند چه داده هایی انتخاب شوند، INTO نام جدول جدید را تعیین می کند و FROM منبع داده را معرفی می کند. نقطه ویرگول برای پایان دستور در بسیاری از محیط ها رایج است، هرچند قواعد دقیق ممکن است با سامانه پایگاه داده تفاوت داشته باشد.

اگر به همه ستون های جدول مبدا نیاز دارید، می توانید از ستاره استفاده کنید. برای کدهای واقعی بهتر است، به ویژه در برنامه های مهم، نام ستون های لازم را به طور صریح بنویسید؛ چون با تغییر ساختار جدول مبدا، استفاده از ستاره ممکن است نتیجه ای متفاوت از انتظار شما ایجاد کند.

۰۳

۳. انتخاب ستون ها و رکوردهای مورد نیاز

لازم نیست تمام ستون های جدول مبدا را به جدول جدید منتقل کنید. با مشخص کردن نام ستون ها، می توانید ساختار خروجی را محدودتر و متناسب با نیاز گزارش یا آرشیو نگه دارید. این روش خوانایی پرس وجو را بهتر می کند و از انتقال داده های غیرضروری جلوگیری می کند.

برای نمونه، کد زیر فقط نام خانوادگی و نام افراد را از جدول Persons به جدول تازه منتقل می کند:

SELECT LastName, FirstName
INTO Persons_Backup
FROM Persons;

برای محدود کردن ردیف ها نیز می توانید از شرط WHERE استفاده کنید. مثلاً اگر فقط رکوردهای مربوط به یک شهر لازم باشند، شرط را به پرس وجو اضافه کنید. توجه داشته باشید که مقدار شرط باید با نوع داده و قواعد نوشتاری پایگاه داده شما سازگار باشد.

SELECT LastName, FirstName
INTO Persons_Backup
FROM Persons
WHERE City = 'Sandnes';
۰۴

۴. استفاده برای نسخه پشتیبان و آرشیو

یکی از کاربردهای شناخته شده SELECT INTO، ساخت کپی از داده های یک جدول است. برای مثال، می توانید داده های جدول Persons را در جدولی با نام Persons_Backup قرار دهید. این کپی برای آزمایش، گزارش گیری یا نگه داری یک تصویر از داده ها در زمان اجرای دستور مفید است.

SELECT *
INTO Persons_Backup
FROM Persons;

همین روش می تواند برای آرشیو بخشی از داده ها هم به کار برود. به جای انتقال تمام رکوردها، شرطی بنویسید تا فقط ردیف های لازم وارد جدول آرشیو شوند. برای مثال، می توان داده های مربوط به یک بازه زمانی یا وضعیت مشخص را جدا کرد؛ البته نام ستون و قالب شرط باید مطابق ساختار واقعی پایگاه داده باشد.

ساخت یک جدول پشتیبان با این دستور به تنهایی جایگزین راهکار کامل پشتیبان گیری از پایگاه داده نیست. نسخه ایجادشده فقط شامل نتیجه پرس وجوی شماست و ممکن است تنظیمات، ایندکس ها، محدودیت ها، تریگرها یا سایر اجزای جدول مبدا را در بر نگیرد. برای بازیابی کامل، از سازوکار پشتیبان گیری متناسب با سامانه خود استفاده کنید.

💾

نسخه پشتیبان

کپی داده های انتخاب شده در جدولی تازه برای بررسی یا نگه داری.

📦

آرشیو رکوردها

انتقال بخشی از داده ها با استفاده از شرط های مناسب.

📊

جدول گزارش

ذخیره نتیجه یک پرس وجو در جدولی جداگانه.

۰۵

۵. انتخاب داده از چند جدول

SELECT INTO می تواند نتیجه یک پرس وجوی چندجدولی را نیز در جدول تازه ذخیره کند. برای این کار، جدول ها را با یک عبارت پیوند مانند INNER JOIN به هم متصل می کنید و ستون های خروجی را در بخش SELECT مشخص می کنید.

در نمونه زیر، نام خانوادگی از جدول Persons و شماره سفارش از جدول Orders انتخاب می شوند. شرط پیوند تعیین می کند کدام ردیف های دو جدول با هم تطبیق دارند:

SELECT Persons.LastName, Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.P_Id = Orders.P_Id;

پیش از اجرای چنین پرس وجویی، مطمئن شوید که ستون های مورد استفاده برای پیوند، ارتباط مورد انتظار را دارند. اگر یک فرد چند سفارش داشته باشد، ممکن است در نتیجه چند ردیف برای همان فرد ایجاد شود. این رفتار لزوماً خطا نیست، اما باید با هدف جدول خروجی هماهنگ باشد.

مطالعه بیشتر

آموزش تکمیلی دستور SELECT INTO

برای مرور صفحه مرتبط با این دستور، از لینک زیر استفاده کنید.

مشاهده آموزش SELECT INTO ←

نکات اجرایی و خطاهای رایج

۰۶

جدول مقصد را پیش از اجرا بررسی کنید

در کاربرد رایج SELECT INTO، جدول تازه هنگام اجرای دستور ساخته می شود. اگر جدولی با همان نام از قبل وجود داشته باشد، دستور ممکن است با خطا روبه رو شود. پیش از اجرای دوباره یک اسکریپت، وجود جدول مقصد را بررسی کنید و برای حذف یا جایگزینی آن تصمیم آگاهانه بگیرید.

در محیط عملیاتی، حذف یک جدول برای رفع خطا می تواند موجب از دست رفتن اطلاعات شود. ابتدا مطمئن شوید جدول مقصد صرفاً خروجی موقت یا نسخه قابل بازسازی است. در صورت نیاز به حفظ داده های قبلی، روش انتقال به جدول موجود یا نام گذاری جداگانه را بررسی کنید.

۰۷

تفاوت SELECT INTO و INSERT INTO SELECT

تفاوت اصلی این دو دستور در جدول مقصد است. SELECT INTO معمولاً یک جدول جدید می سازد و نتیجه انتخاب را در آن قرار می دهد؛ اما INSERT INTO ... SELECT داده ها را به جدولی اضافه می کند که از قبل وجود دارد.

برای نمونه، وقتی جدول مقصد از قبل تعریف شده و می خواهید رکوردهای تازه را به آن بیفزایید، از الگوی زیر استفاده می شود. ترتیب و سازگاری ستون های انتخابی با ستون های مقصد اهمیت دارد:

INSERT INTO Persons_Backup (LastName, FirstName)
SELECT LastName, FirstName
FROM Persons
WHERE City = 'Sandnes';

اگر هدف ساخت جدول جدید از خروجی پرس وجو باشد، SELECT INTO ساده تر است. اگر هدف افزودن داده به جدول موجود باشد، INSERT INTO ... SELECT گزینه مناسب تری است. در هر دو حالت، بهتر است ستون ها را صریح بنویسید تا تغییرات بعدی ساختار، نتیجه را غافلگیرکننده نکند.

۰۸

پشتیبان گیری در پایگاه داده دیگر

در برخی نسخه ها یا سامانه های پایگاه داده، امکان تعیین مقصدی در پایگاه داده دیگر با نحو ویژه وجود دارد. نمونه زیر از ساختاری استفاده می کند که در بعضی آموزش های SQL و محیط های سازگار دیده می شود؛ اما این قالب در همه سامانه ها یکسان نیست و نباید بدون بررسی مستندات موتور پایگاه داده استفاده شود.

SELECT *
INTO Persons_Backup IN 'Backup.mdb'
FROM Persons;

پیش از انتقال میان پایگاه های داده، مجوز دسترسی، مسیر مقصد، قالب فایل و تفاوت های نحوی موتور مبدا و مقصد را بررسی کنید. اگر سیستم شما از عبارت بالا پشتیبانی نمی کند، ممکن است لازم باشد از روش های انتقال داده، ابزارهای وارد کردن و صادر کردن یا قابلیت های اختصاصی همان سامانه استفاده کنید.

۰۹

نوع داده، نام ستون و کیفیت خروجی

ساختار جدول حاصل معمولاً از عبارت انتخابی و داده های خروجی تاثیر می پذیرد. اگر در پرس وجو از عبارت محاسباتی، تبدیل نوع یا نام مستعار استفاده می کنید، بررسی کنید که نام و نوع ستون های تولیدشده برای استفاده بعدی مناسب باشد.

برای مثال، ستون های دارای نام های تکراری در یک پرس وجوی چندجدولی ممکن است نیاز به نام مستعار داشته باشند. همچنین، انتقال داده ها به تنهایی تضمین نمی کند که تمام ویژگی های طراحی جدول مبدا، مانند کلید اصلی، ایندکس یا محدودیت ها، عیناً در جدول تازه بازسازی شوند.

پس از ساخت جدول، می توانید تعریف آن را در ابزار مدیریت پایگاه داده بررسی کنید. برای جدول هایی که قرار است بخشی از برنامه اصلی باشند، بهتر است ساختار مورد انتظار را آگاهانه تعریف و ویژگی های لازم را جداگانه اعمال کنید.

جدول مقایسه روش های انتقال داده

روش کاربرد اصلی وضعیت جدول مقصد نکته مهم
SELECT INTO ساخت جدول تازه از نتیجه پرس وجو معمولاً هنگام اجرا ایجاد می شود وجود جدول هم نام را بررسی کنید
INSERT INTO ... SELECT افزودن نتیجه پرس وجو به جدول باید از قبل وجود داشته باشد ستون های مبدا و مقصد باید سازگار باشند
ابزار پشتیبان گیری پایگاه داده تهیه نسخه پشتیبان برای بازیابی بر اساس تنظیمات ابزار برای پشتیبان گیری کامل مناسب تر است

نمونه های SELECT INTO در یک نگاه

نیاز بخش اصلی دستور نتیجه مورد انتظار
انتقال تمام ستون ها SELECT * INTO NewTable FROM SourceTable ساخت جدول تازه از داده های انتخابی
انتقال چند ستون مشخص SELECT ColumnA, ColumnB INTO NewTable FROM SourceTable ساخت جدول با خروجی محدودتر
انتقال رکوردهای شرطی SELECT ... INTO NewTable FROM SourceTable WHERE Condition ساخت جدول از ردیف های منطبق با شرط
ترکیب چند جدول SELECT ... INTO NewTable FROM TableA JOIN TableB ON ... ساخت جدول از نتیجه پیوند

جمع بندی نکات کاربردی

۱۰

پیش از اجرای دستور چه چیزهایی را بررسی کنیم؟

قبل از اجرای SELECT INTO، هدف جدول جدید را مشخص کنید و تصمیم بگیرید که به همه ستون ها نیاز دارید یا فقط بخشی از آن ها. سپس شرط های انتخاب و پیوند جدول ها را بازبینی کنید تا داده های ناخواسته وارد خروجی نشوند.

در محیط حساس، ابتدا دستور را در محیط آزمایشی یا روی مجموعه داده محدود بررسی کنید. نام جدول مقصد، حجم تقریبی خروجی و دسترسی های لازم را هم در نظر بگیرید. این کار احتمال خطا و ایجاد جدول های ناخواسته را کاهش می دهد.

✅

ستون های لازم

نام ستون های مورد نیاز را به جای انتخاب بی هدف همه ستون ها مشخص کنید.

🔍

شرط های دقیق

عبارت WHERE و شرط پیوند را با هدف خروجی تطبیق دهید.

🛡️

جدول مقصد

وجود نام مقصد و پیامد جایگزینی یا حذف جدول را بررسی کنید.

مزایای SELECT INTO

انتقال داده با کنترل بیشتر

از ساخت جدول تا آرشیو هدفمند
۰۱
ساخت جدول

ایجاد مقصد تازه

ذخیره خروجی پرس وجو در جدولی جدید.

۰۲
انتخاب

تعیین ستون ها

انتقال ستون های مورد نیاز به خروجی.

۰۳
فیلتر

محدود کردن ردیف ها

استفاده از شرط برای انتخاب داده های هدف.

۰۴
پیوند

ترکیب جدول ها

ساخت خروجی از چند منبع داده مرتبط.

۰۵
آرشیو

نگه داری انتخابی

جدا کردن داده های لازم برای بررسی یا گزارش.

۱۱

نتیجه گیری

دستور SELECT INTO در SQL برای ساخت جدول تازه از نتیجه یک پرس وجو به کار می رود و می تواند انتقال همه ستون ها، انتخاب چند ستون، فیلتر رکوردها و ترکیب داده های چند جدول را ساده کند. با این حال، جدول ساخته شده را نباید بدون بررسی معادل یک نسخه پشتیبان کامل پایگاه داده دانست.

برای استفاده مطمئن، جدول مقصد و ساختار خروجی را بررسی کنید، ستون های مورد نیاز را صریح بنویسید و شرط ها را با دقت تنظیم کنید. اگر قصد افزودن داده به جدولی موجود را دارید، به جای SELECT INTO از INSERT INTO ... SELECT استفاده کنید. انتخاب درست روش، نتیجه قابل پیش بینی تری برای کار با داده ها فراهم می کند.

برای کار با داده ها، دستور مناسب را انتخاب کنید

از SELECT INTO برای ساخت جدول تازه استفاده کنید و پیش از اجرا، داده های انتخابی و مقصد را بررسی کنید.

مرور دوباره آموزش ←

سوالات متداول دستور SELECT INTO در SQL

دستور SELECT INTO در SQL چه کاربردی دارد؟

این دستور نتیجه یک پرس وجوی SELECT را در یک جدول جدید ذخیره می کند. از آن می توان برای ساخت جدول خروجی، تهیه کپی از داده های انتخاب شده یا آرشیو بخشی از رکوردها استفاده کرد.

آیا SELECT INTO داده ها را به جدول موجود اضافه می کند؟

کاربرد رایج SELECT INTO ساخت جدول جدید است. برای افزودن داده ها به جدولی که از قبل وجود دارد، معمولاً باید از INSERT INTO ... SELECT استفاده کنید و سازگاری ستون های مبدا و مقصد را بررسی کنید.

چطور فقط چند ستون را با SELECT INTO انتقال دهیم؟

نام ستون های مورد نیاز را پس از SELECT بنویسید، سپس نام جدول تازه را پس از INTO و جدول مبدا را پس از FROM مشخص کنید. این کار خروجی را به ستون های انتخاب شده محدود می کند.

آیا SELECT INTO یک نسخه پشتیبان کامل از پایگاه داده می سازد؟

خیر. این دستور داده های انتخاب شده را در جدول تازه قرار می دهد، اما لزوماً همه اجزای پایگاه داده یا ویژگی های جدول مبدا را کپی نمی کند. برای پشتیبان گیری کامل، از ابزار متناسب با سامانه پایگاه داده استفاده کنید.

اگر جدول مقصد از قبل وجود داشته باشد چه اتفاقی می افتد؟

بسته به سامانه پایگاه داده، اجرای دستور ممکن است با خطا مواجه شود؛ زیرا SELECT INTO معمولاً برای ساخت جدول تازه به کار می رود. پیش از اجرا، وجود جدول مقصد را بررسی کنید و از حذف یا جایگزینی ناخواسته داده ها جلوگیری کنید.

ارسال نظر و نظرات ثبت شده
سایر مقالات
دستور ISNULL در اس کیو ال آموزش SQL دستور ISNULL در SQL؛ آموزش کاربرد، تفاوت‌ها و مثال‌ها یاد بگیرید مقدار ...
مقدار Null در اس کیو ال آموزش پایگاه داده مقدار Null در SQL چیست و چگونه از آن استفاده کنیم؟ تفاوت مقدار تهی با رش ...
دستور SELECT INTO در sql آموزش SQL دستور SELECT INTO در SQL؛ آموزش ساخت جدول و نسخه پشتیبان یاد بگیرید چطور داده ها ...
عملگر UNION در اسکیوال آموزش SQL دستور UNION در SQL؛ راهنمای ترکیب نتایج جداول نحوه استفاده از UNION و UNION ALL ...
دستور FULL JOIN در sql آموزش SQL دستور FULL JOIN در SQL؛ آموزش کامل با مثال ترکیب همه سطرهای دو جدول، حتی وقتی بر ...
دستور RIGHT JOIN در sql راهنمای SQL دستور RIGHT JOIN در SQL؛ آموزش، مثال و کاربردها نحوه نمایش همه رکوردهای جدول س ...
دستور LEFT JOIN در sql آموزش SQL دستور LEFT JOIN در SQL؛ آموزش کاربرد و مثال با حفظ همه رکوردهای جدول سمت چپ، داد ...
دستور INNER JOIN در sql آموزش SQL دستور INNER JOIN در SQL؛ آموزش کاربرد و مثال یاد بگیرید چگونه داده‌های مرتب ...
دستورات پیوند و Join در SQL آموزش پایگاه داده SQL JOIN چیست؟ راهنمای تفاوت انواع دستورهای پیوند آشنایی با INNER JOIN، ...
Alias در اس کیو ال آموزش SQL Alias در SQL چیست و چگونه از آن استفاده کنیم؟ راهنمای نام گذاری موقت ستون ها و ج ...
عملگر BETWEEN در شرطهای sql آموزش SQL عملگر BETWEEN در SQL؛ آموزش استفاده از بازه ها کاربرد، ساختار، مثال ها و نکات مه ...
عملگر In در شرط های sql آموزش SQL عملگر IN در SQL چیست و چگونه از آن استفاده کنیم؟ راهنمای کاربردی بررسی چند مقدار ...
علامت های شرطی در Like علامت های شرطی در LIKE و کاربرد آن ها در SQL 💡آشنایی با جستجوی الگویی هنگام جستجو در پایگ ...
عملگر Like در SQL عملگر LIKE در SQL چیست و چه کاربردی دارد؟ 🔎جست وجوی الگو در داده ها عملگر LIKE در SQL برا ...
دستور شرطی Top در SQL دستور TOP در SQL چیست و چه کاربردی دارد؟ 💡آشنایی با محدود کردن خروجی دستور TOP در SQL برای ...
دسته بندی
جستجو
⏳ در حال پردازش...
لطفا صبر کنید