📞 02166056460

دستور Delete در sql

9 / 10
از 3 کاربر
بازگشت به لیست مقالات » | چهارشنبه 15 مهر 1405 در ساعت 21 و 55 دقیقه | نظرات کاربران ( 4 )

دستور DELETE در SQL؛ آموزش حذف رکورد از جدول

💡آشنایی با حذف داده‌ها

دستور DELETE در SQL برای حذف یک یا چند رکورد از جدول پایگاه داده استفاده می‌شود. این دستور در مدیریت داده‌ها کاربرد زیادی دارد؛ برای مثال، می‌توان با آن اطلاعات آزمایشی را پاک کرد، رکوردهای نامعتبر را حذف کرد یا داده‌ای را که دیگر نیازی به آن نیست از جدول بیرون برد. استفاده نادرست از دستور حذف ممکن است باعث از دست رفتن اطلاعات مهم شود، بنابراین بهتر است پیش از اجرا، شرط حذف را بررسی کنید.

📘کاربرد دستور DELETE

دستور Delete در SQL برای حذف اطلاعات یک رکورد یا گروهی از رکوردها در جدول بانک اطلاعاتی به کار می‌رود. از دستور delete باید با دقت استفاده شود، زیرا بازگرداندن رکوردهای حذف شده همیشه ساده نیست و ممکن است به نسخه پشتیبان یا سازوکارهای بازیابی پایگاه داده نیاز داشته باشد.

ساختار پایه دستور حذف

🧩الگوی کلی

ساختار رایج دستور DELETE شامل نام جدول و یک شرط اختیاری است. شرط WHERE مشخص می‌کند کدام رکوردها باید حذف شوند. این نمونه، فقط رکوردهایی را حذف می‌کند که مقدار ستون مشخص شده با مقدار مورد نظر برابر باشد:

DELETE FROM table_name
WHERE some_column = some_value;
⚠️نکته مهم درباره WHERE

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

حذف یک رکورد با شناسه مشخص

🔎حذف بر اساس شناسه

برای پاک کردن یک رکورد با شناسه مشخص، می‌توان از ستون شناسه در شرط WHERE استفاده کرد. اگر جدول Person دارای رکوردی با شناسه 16 باشد، دستور زیر فقط همان رکورد را هدف می‌گیرد:

DELETE FROM Person
WHERE ID = 16;
🧠نوع داده و مقدار شرط

در مثال بالا، فرض شده است که ID یک ستون عددی است؛ به همین دلیل مقدار 16 بدون کوتیشن نوشته می‌شود. اگر ستون شناسه از نوع متنی باشد، مقدار باید در کوتیشن قرار بگیرد؛ برای نمونه، شرط WHERE ID = '16'. استفاده از نوع مقدار متناسب با تعریف ستون، از خطاهای اجرایی و مقایسه‌های ناخواسته جلوگیری می‌کند.

حذف رکوردهایی که چند شرط دارند

🧷ترکیب شرط‌ها

برای محدودتر کردن عملیات حذف، می‌توان چند شرط را با AND یا OR ترکیب کرد. در نمونه زیر، تنها رکوردی حذف می‌شود که هم وضعیت آن غیرفعال باشد و هم تاریخ آخرین فعالیتش پیش از تاریخ تعیین شده قرار بگیرد. پیش از اجرا، توجه کنید که پرانتزگذاری و منطق شرط‌ها نتیجه را تغییر می‌دهد.

DELETE FROM Users
WHERE Status = 'Inactive'
  AND LastActive < '2024-01-01';

حذف همه رکوردهای جدول و تفاوت DELETE با حذف جدول

🗂️پاک کردن محتوا، نه ساختار جدول

این امکان وجود دارد که بدون حذف خود جدول، همه رکوردهای درون آن را پاک کنید. برای این کار دستور DELETE را بدون شرط WHERE اجرا می‌کنند. در نمونه زیر تمام اطلاعات جدول Person حذف می‌شود، اما نام جدول و ساختار ستون‌های آن باقی می‌ماند:

⚠️حذف تمام رکوردهای Person
DELETE FROM Person;
🚨درباره DELETE *

در برخی آموزش‌های قدیمی ممکن است شکل Delete را برای پاک کردن تمام رکوردها ببینید. این شکل، نحو استاندارد و قابل اتکای دستور حذف در SQL نیست و در بسیاری از سامانه‌های مدیریت پایگاه داده پذیرفته نمی‌شود. برای حذف همه رکوردها از شکل روشن و رایج DELETE FROM table_name; استفاده کنید و پیش از اجرا مطمئن شوید که واقعا قصد پاک کردن تمام داده‌ها را دارید.

دستور نتیجه نکته
DELETE FROM Person WHERE ID = 16; حذف رکوردهای مطابق شرط برای حذف هدفمند مناسب است.
DELETE FROM Person; حذف همه رکوردها جدول باقی می‌ماند؛ شرطی وجود ندارد.
DROP TABLE Person; حذف خود جدول ساختار جدول نیز حذف می‌شود.

تفاوت DELETE، TRUNCATE و DROP

⚖️انتخاب دستور مناسب

DELETE، TRUNCATE و DROP همگی می‌توانند در پاک‌سازی داده‌ها یا ساختار پایگاه داده مطرح شوند، اما نتیجه یکسانی ندارند. DELETE برای پاک کردن رکوردهای انتخابی یا همه رکوردهای جدول به کار می‌رود؛ TRUNCATE معمولا برای خالی کردن سریع جدول استفاده می‌شود و DROP خود جدول را حذف می‌کند. جزئیات رفتاری، از جمله امکان بازگردانی و اثر بر شمارنده‌های شناسه، بسته به سامانه پایگاه داده و تنظیمات آن متفاوت است.

ویژگی DELETE TRUNCATE DROP
حذف بخشی از رکوردها بله، با WHERE معمولا خیر خیر
حذف همه رکوردها بله بله جدول و داده‌ها حذف می‌شوند
باقی ماندن ساختار جدول بله بله خیر
کاربرد معمول حذف کنترل شده رکوردها خالی کردن جدول حذف کامل جدول

۵ نکته مهم پیش از اجرای دستور DELETE

1

شرط را جداگانه آزمایش کنید. پیش از حذف، همان شرط WHERE را در یک دستور SELECT به کار ببرید تا ببینید چه رکوردهایی انتخاب می‌شوند. این کار ساده احتمال پاک کردن اطلاعات اشتباه را کاهش می‌دهد.

2

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

3

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

4

محدوده حذف را بدانید. شرط‌های ترکیبی، مقدارهای NULL، تاریخ‌ها و تفاوت‌های حروف ممکن است نتیجه را تغییر دهند. بررسی تعداد رکوردهای انتخاب شده و بازبینی نمونه داده‌ها کمک می‌کند محدوده عملیات روشن باشد.

5

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

بررسی رکوردها با SELECT پیش از حذف

✅اول مشاهده، بعد حذف

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

SELECT *
FROM Users
WHERE Status = 'Inactive';

اجرای امن حذف در تراکنش

🔐تراکنش برای کنترل نتیجه

در سامانه‌هایی که تراکنش‌ها را پشتیبانی می‌کنند، می‌توان عملیات حذف را در تراکنش اجرا کرد، نتیجه را بررسی کرد و سپس تغییرات را تایید یا لغو کرد. دستورهای دقیق و رفتار تراکنش‌ها در پایگاه‌های داده مختلف ممکن است تفاوت داشته باشد؛ بنابراین این نمونه را با مستندات سامانه مورد استفاده تطبیق دهید.

BEGIN TRANSACTION;

DELETE FROM Person
WHERE ID = 16;

-- بررسی نتیجه، سپس یکی از دو دستور را اجرا کنید:
COMMIT;
-- یا در صورت نیاز:
-- ROLLBACK;

خطاهای رایج هنگام استفاده از DELETE

  • فراموش کردن WHERE: در این حالت همه رکوردهای جدول حذف می‌شوند. پیش از اجرا، مطمئن شوید حذف کامل واقعا هدف شماست.
  • نوشتن شرط نادرست: اشتباه در نام ستون، مقدار یا عملگر می‌تواند رکوردهای دیگری را هدف بگیرد. شرط را با SELECT آزمایش کنید.
  • استفاده از کوتیشن نامتناسب: مقدار متنی معمولا در کوتیشن قرار می‌گیرد، اما مقدار عددی بسته به نوع ستون بدون کوتیشن نوشته می‌شود.
  • نادیده گرفتن ارتباط بین جدول‌ها: کلیدهای خارجی ممکن است حذف را متوقف کنند یا بر اساس تنظیمات، رکوردهای وابسته را نیز تحت تاثیر قرار دهند.
  • تصور بازگشت قطعی داده‌ها: امکان بازگردانی به نوع پایگاه داده، تراکنش فعال، تنظیمات و وجود نسخه پشتیبان بستگی دارد.
🌱DELETE در پروژه‌های وب

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

جمع بندی: استفاده درست از دستور DELETE در SQL

📝خلاصه کاربردی

دستور DELETE راهی استاندارد برای حذف رکوردها از جدول است. برای حذف محدود، شرط WHERE را دقیق بنویسید؛ برای خالی کردن جدول، نبودن شرط را آگاهانه انتخاب کنید و آن را با حذف ساختار جدول اشتباه نگیرید. بررسی شرط با SELECT، تهیه نسخه پشتیبان و استفاده سنجیده از تراکنش‌ها، خطر از دست رفتن ناخواسته داده‌ها را کمتر می‌کند. در نتیجه، دستور DELETE در SQL زمانی ایمن و موثر است که محدوده حذف و پیامد اجرای آن از پیش روشن باشد.

سوالات متداول دستور DELETE در SQL

دستور DELETE در SQL چه کاری انجام می‌دهد؟

این دستور یک یا چند رکورد را از جدول حذف می‌کند. شرط WHERE محدوده رکوردهایی را که باید حذف شوند تعیین می‌کند؛ اگر شرط نوشته نشود، تمام رکوردهای جدول هدف قرار می‌گیرند.

اگر دستور DELETE را بدون WHERE اجرا کنم چه می‌شود؟

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

آیا DELETE FROM table_name * دستور درستی است؟

این شکل، نحو استاندارد و قابل اتکای SQL برای حذف رکوردها نیست. برای حذف رکوردهای جدول از DELETE FROM table_name و در صورت نیاز از شرط WHERE استفاده کنید.

تفاوت DELETE و DROP TABLE چیست؟

DELETE رکوردها را پاک می‌کند و ساختار جدول را نگه می‌دارد؛ اما DROP TABLE خود جدول را همراه با ساختار آن حذف می‌کند. این دو دستور کاربرد و پیامد متفاوتی دارند.

چطور قبل از حذف مطمئن شوم رکوردهای درست انتخاب شده‌اند؟

همان شرط WHERE را ابتدا در یک دستور SELECT اجرا و خروجی آن را بازبینی کنید. پس از تایید رکوردهای انتخاب شده، می‌توانید شرط مشابه را در دستور DELETE به کار ببرید.

ارسال نظر و نظرات ثبت شده
امیر :
0 0
سلام وقت بخیر. شما نوشتید: ( امکان بازگرداندن رکورد های حذف شده به این راحتی ها نیست !) یعنی چی؟ یعنی میخوایید بگید میشه رکورد های حذف شده رو برگردوند؟ یعنی امکانپذیره؟ اگه آره چطور؟
احسان صفری :
4 0
خداوند همه رفتگانت رو بیامرزه واقعا دمت گرم
morteza :
7 2
آیا میشه فقط محتوای یک سطر وستون مشخص (مثل دیتای مزبوط به نام خانوادگی از ردیف دوم) را حذف کرد؟
مدیریت : با دستور update میتوان این عمل را انجام داد
mahdi :
6 2
سلام دوست عزیز خسته نباشید آقا اگر من بخواهم چند تا تبیل با یک کلیک پا کنم چه کاری بکنم یعنی میخواهم وقتی دکمه حذف میزنم تیبل پستز و ایمیلز ها و چند تاچیز دیگه پاک بشه تحقیق کردم delete from (blogs,cats,bcomments,posts) به این نتیجه رسیدم ولی کارمو انجام نمیده شما کدی بلدی که چند تا رکورد چند تیبل را با هم بشود حذف کرد ممنون میشوم جواب بدهید
مدیریت : با stored procedure این کار به راحتی قابل انجام است. مقاله ی آنرا به زودی قرار می دهیم
سایر مقالات
دستور Delete در sql دستور DELETE در SQL؛ آموزش حذف رکورد از جدول 💡آشنایی با حذف داده‌ها دستور DELETE در ...
دستور Update در sql دستور Update در SQL چیست و چه کاربردی دارد؟ 💡آشنایی با به روزرسانی داده ها دستور Update در ...
دستور Insert در sql دستور Insert در اسکیوال برای افزودن رکورد به جدول به کار می رود. در این راهنما با شیوه نوشتن دستور، ...
دستور مرتب سازی Order By در sql دستور ORDER BY در SQL چیست و چه کاربردی دارد؟ 💡مرتب سازی خروجی کوئری دستور ORDER BY در SQL ...
دستور Group By در sql آموزش SQL دستور GROUP BY در SQL؛ آموزش گروه بندی و مثال کاربردی یاد بگیرید داده ها را ...
دستور شرطی Having در sql دستور Having در SQL برای فیلتر کردن نتیجه گروه بندی و اعمال شرط روی مقادیر محاسبه شده با توابعی مانن ...
عملگر های And و Or در SQL آموزش SQL عملگرهای AND و OR در SQL؛ راهنمای ترکیب شرط ها با مثال های کاربردی، تفاوت AND و ...
دستور شرطی WHERE در sql دستور WHERE در SQL چیست و چه کاربردی دارد؟ 🔎فیلتر کردن نتیجه ها دستور WHERE در SQL برای تعی ...
دستور SELECT DISTINCT در sql دستور SELECT DISTINCT در SQL چیست و چه کاربردی دارد؟ 💡آشنایی با حذف تکرارها در پایگاه داده، ...
دستور SELECT در sql دستور SELECT در SQL چیست و چه کاربردی دارد؟ 💡آشنایی با بازیابی داده ها دستور SELECT در SQL ...
دسته بندی
جستجو
⏳ در حال پردازش...
لطفا صبر کنید