دستور DELETE در SQL برای حذف رکوردهای موجود در یک جدول استفاده میشود. این دستور یکی دیگر از دستورات CRUD (ایجاد، خواندن، بهروزرسانی، حذف) در SQL است که برای مدیریت دادهها در پایگاههای داده به کار میرود.
اجزای دستور DELETE:
- DELETE FROM: کلمه کلیدی که نشان میدهد میخواهید رکوردها را حذف کنید.
- table_name: نام جدولی که میخواهید رکوردهای آن را حذف کنید.
- WHERE (condition): (اختیاری) شرطی را تعیین میکند که مشخص میکند کدام رکوردها باید حذف شوند.
مثال:
فرض کنید جدول زیر را برای ذخیره اطلاعات سفارشات داریم:
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT NOT NULL,
order_date DATE NOT NULL,
total_amount DECIMAL(۱۰,۲) NOT NULL
);
برای حذف سفارش با شناسه ۱ دستور زیر را اجرا میکنیم:
DELETE FROM orders
WHERE id = ۱;
نکات:
- در صورتی که از شرط
WHERE
استفاده نکنید، تمام رکوردهای جدول حذف میشوند. این کار را با احتیاط انجام دهید زیرا ممکن است منجر به از دست رفتن اطلاعات مهم شود. - حذف رکوردها عملیاتی است که قابل بازگشت نیست، بنابراین توصیه میشود قبل از اجرای هر دستور DELETE، از اطلاعات خود نسخه پشتیبان تهیه کنید.
مثال ۲:
- حذف تمام سفارشات مربوط به مشتری با شناسه ۵:
DELETE FROM orders
WHERE customer_id = ۵;
- حذف تمام سفارشات با مبلغ کل کمتر از ۱۰۰:
DELETE FROM orders
WHERE total_amount < ۱۰۰;
مقایسه با دستور TRUNCATE TABLE:
دستور دیگری به نام TRUNCATE TABLE
برای حذف دادهها از جدول وجود دارد. با اینکه هر دو دستور DELETE و TRUNCATE برای حذف دادهها استفاده میشوند، تفاوتهایی بین آنها وجود دارد:
- TRUNCATE TABLE یک دستور DDL (زبان تعریف داده) است، در حالی که DELETE یک دستور DML (زبان دستکاری داده) است.
TRUNCATE TABLE
تمام رکوردها را از جدول حذف میکند و فضای اشغال شده توسط آنها را آزاد میکند. این عمل بسیار سریع است، اما قابل بازگشت نیست.- دستور DELETE به شما امکان میدهد رکوردها را به صورت انتخابی بر اساس یک شرط حذف کنید. این کار کندتر از
TRUNCATE TABLE
است، اما انعطافپذیری بیشتری را ارائه میدهد.
مثال ۳
فرض کنید جدول زیر را برای ذخیره اطلاعات محصولات داریم:
CREATE TABLE products (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(۲۵۵) NOT NULL,
category VARCHAR(۵۰) NOT NULL,
price DECIMAL(۱۰,۲) NOT NULL,
quantity INT NOT NULL
);
مثال ۱: حذف محصولی با شناسه ۵
DELETE FROM products
WHERE id = ۵;
مثال ۲: حذف تمام محصولات موجود در دسته “پوشاک”
DELETE FROM products
WHERE category = "پوشاک";
مثال ۳: حذف تمام محصولات با قیمت کمتر از ۵۰
DELETE FROM products
WHERE price < ۵۰;
مثال ۴: حذف محصولات با موجودی صفر
DELETE FROM products
WHERE quantity = ۰;
مثال ۵: حذف محصولات با نام “محصول X” و “محصول Y”
DELETE FROM products
WHERE name IN ("محصول X", "محصول Y");
نکته:
- در مثالهای بالا، فقط رکوردهای خاصی از جدول حذف شدهاند.
- قبل از اجرای هر دستور DELETE، از اطلاعات خود نسخه پشتیبان تهیه کنید.