دستور DELETE در پایگاه  داده sql

تیم تحریریه 1403/10/06 0 46
لینک کوتاه https://zoheirsoftware.com/z/1e0a54e5b |
دستور DELETE در پایگاه  داده sql,دستور Multirow DELETE در SQL Server,انواع حذف در SQL Server

مقدمه دستور DELETE در پایگاه  داده sql

دستور DELETE یکی از دستورات اصلی زبان SQL است که برای حذف داده‌ها از جداول در یک پایگاه داده استفاده می‌شود.

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

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

دستور DELETE در SQL

دستور DELETE یکی از ابزارهای کلیدی برای مدیریت داده‌ها در SQL Server است.

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

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

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

DELETE FROM table_name
WHERE condition;

table_name: نام جدولی است که می‌خواهید رکوردهای آن را حذف کنید.

condition: شرطی است که مشخص می‌کند کدام رکوردها حذف شوند.

اگر شرط WHERE در دستور حذف استفاده نشود، تمام رکوردهای جدول حذف خواهند شد.

مثال:

فرض کنید جدولی با نام Employees داریم که شامل اطلاعات کارکنان است.

اگر بخواهید کارکنانی که سن آن‌ها بیش از 50 سال است را حذف کنید، از دستور زیر استفاده می‌کنید:

DELETE FROM Employees
WHERE Age > 50;

 

دستور DELETE در SQL

 

دستور Multirow DELETE در SQL Server

SQL Server به کاربران اجازه می‌دهد چندین رکورد را به صورت همزمان حذف کنند.

این کار با استفاده از شرایط مناسب در دستور WHERE انجام می‌شود.

مثال 1: حذف رکوردهای متعدد براساس شرط‌ها

فرض کنید می‌خواهید کارکنانی که یا بیش از 50 سال دارند یا در بخش "Sales" کار می‌کنند را حذف کنید:

DELETE FROM Employees
WHERE Age > 50 OR Department = 'Sales';

مثال 2: حذف رکوردها با استفاده از لیست‌ها

با استفاده از عملگر IN می‌توانید چند رکورد را براساس یک لیست حذف کنید:

DELETE FROM Employees
WHERE EmployeeID IN (101, 102, 103);

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

برای حذف تمام رکوردهای یک جدول می‌توانید از دستور DELETE بدون شرط WHERE استفاده کنید.

اما توجه داشته باشید که این کار بسیار خطرناک است زیرا تمامی داده‌ها حذف خواهند شد.

مثال:

DELETE FROM Employees;

برای حذف کل داده‌های جدول و همچنین بازنشانی شمارنده‌های هویت (identity columns)، بهتر است از دستور TRUNCATE استفاده کنید که در ادامه توضیح داده خواهد شد.

تفاوت DELETE و TRUNCATE

در SQL Server، هر دو دستور DELETE و TRUNCATE برای حذف رکوردها استفاده می‌شوند، اما تفاوت‌های کلیدی بین آن‌ها وجود دارد:

 

  • DELETE

    امکان استفاده از WHERE  دارد، سرعت نسبتاً کند دارد (با توجه به لاگ‌گذاری) ،بازنشانی Identity ندارد،Triggerها اجرا می‌شوند،نحوه حذف رکورد به رکورد است.
  • TRUNCATE

    امکان استفاده از WHERE  ندارد، سرعت سریع  دارد(زیرا لاگ‌گذاری حداقلی انجام می‌شود)،بازنشانی Identity دارد،Triggerها اجرا نمی‌شوند،نحوه حذف، حذف کامل داده‌ها در یک عملیات است.

 

مثال TRUNCATE

TRUNCATE TABLE Employees;

 

انواع حذف در SQL Server

  • حذف مستقیم

با استفاده از دستور DELETE رکوردها به صورت مستقیم از جدول حذف می‌شوند.

  • حذف وابسته

زمانی که یک رابطه FOREIGN KEY با گزینه ON DELETE CASCADE تنظیم شده باشد، حذف رکورد اصلی منجر به حذف رکوردهای وابسته می‌شود.

مثال:

CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    CustomerID INT FOREIGN KEY REFERENCES Customers(CustomerID) ON DELETE CASCADE
);

DELETE FROM Customers WHERE CustomerID = 1;
  • حذف مشروط

با استفاده از شروط خاص (WHERE)، رکوردهای خاصی حذف می‌شوند.

  • حذف تمام رکوردها

با حذف تمام داده‌ها از جدول (بدون شرط WHERE).

  • حذف فیزیکی و منطقی

حذف فیزیکی داده‌ها با دستور DELETE یا TRUNCATE انجام می‌شود، اما حذف منطقی به معنای تغییر وضعیت رکورد (مانند تنظیم یک ستون "IsDeleted") است.

 

انواع حذف در SQL Server

 

 

حذف داده‌ها با استفاده از JOIN

در SQL Server، می‌توانید از دستور DELETE به همراه JOIN برای حذف رکوردهایی که با داده‌های جدول دیگری مطابقت دارند، استفاده کنید.

مثال:

فرض کنید دو جدول به نام‌های Orders و Customers دارید.

اگر بخواهید تمام سفارش‌هایی که مشتری مربوطه آن‌ها در کشور "Germany" است را حذف کنید:

DELETE O
FROM Orders O
JOIN Customers C ON O.CustomerID = C.CustomerID
WHERE C.Country = 'Germany';

حذف داده‌ها با استفاده از Subquery

در برخی موارد، ممکن است بخواهید از یک زیرپرسش (Subquery) برای تعیین رکوردهایی که باید حذف شوند، استفاده کنید.

مثال:

فرض کنید می‌خواهید تمامی کارکنانی که در هیچ پروژه‌ای مشغول به کار نیستند را حذف کنید:

DELETE FROM Employees
WHERE EmployeeID NOT IN (
    SELECT EmployeeID
    FROM ProjectAssignments
);

 

 

🌟 آیا می‌خواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟

با دوره آموزشی SQL Server ما، شما می‌توانید به راحتی و با روشی عملی، تمام مهارت‌های لازم را یاد بگیرید!

این دوره به شما آموزش می‌دهد که چگونه داده‌ها را به بهترین شکل مدیریت کنید، گزارش‌های قدرتمند بسازید و به تحلیل‌های عمیق دست یابید.

با محتوای جذاب و پروژه‌های واقعی، شما نه تنها تئوری را یاد می‌گیرید، بلکه توانایی‌های عملی خود را نیز تقویت می‌کنید.

پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشن‌تر بردارید!

 همین حالا شروع کنید و به دنیای داده‌ها بپیوندید!

 

 

 

حذف داده‌ها با استفاده از محدودیت TOP

در SQL Server، می‌توانید با استفاده از کلمه کلیدی TOP تعداد مشخصی از رکوردها را حذف کنید.

مثال:

فرض کنید می‌خواهید فقط 10 رکورد اول از جدول Employees را حذف کنید:

DELETE TOP (10)
FROM Employees;

نکات مهم درباره DELETE

  • Transaction Management

عملیات DELETE می‌تواند داخل یک تراکنش قرار گیرد تا در صورت نیاز قابل بازگشت (ROLLBACK) باشد.

مثال:

BEGIN TRANSACTION;
DELETE FROM Employees WHERE Age > 50;
ROLLBACK;
  • Performance

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

مثال:

WHILE EXISTS (SELECT 1 FROM Employees WHERE Age > 50)
BEGIN
    DELETE TOP (1000) FROM Employees WHERE Age > 50;
END
  • Backup

پیش از اجرای دستورات حذف گسترده، همیشه از داده‌های خود نسخه پشتیبان تهیه کنید.

  • Triggerها

دستور DELETE می‌تواند باعث اجرای Triggerهای مرتبط با حذف شود.
بنابراین، اطمینان حاصل کنید که Triggerها به درستی تنظیم شده باشند.

 

نکات مهم درباره DELETE

مثال پروژه‌محور دستور DELETE در پایگاه  داده sql

مثال پروژه‌محور: مدیریت فروشگاه و حذف اطلاعات مربوط به محصولات منقضی‌شده

فرض کنید در یک فروشگاه آنلاین، جدولی به نام Products داریم که شامل اطلاعات محصولات است.

این جدول دارای ستون‌های زیر است:

  • ProductID (شناسه محصول)
  • ProductName (نام محصول)
  • Category (دسته‌بندی)
  • ExpirationDate (تاریخ انقضا)
  • Stock (موجودی انبار)

هدف: حذف محصولاتی که تاریخ انقضای آن‌ها گذشته است و موجودی انبار آن‌ها صفر است.

ساخت جدول و درج داده‌های نمونه

ابتدا جدول و داده‌های نمونه ایجاد می‌کنیم:

CREATE TABLE Products (
    ProductID INT PRIMARY KEY,
    ProductName NVARCHAR(100),
    Category NVARCHAR(50),
    ExpirationDate DATE,
    Stock INT
);

INSERT INTO Products (ProductID, ProductName, Category, ExpirationDate, Stock)
VALUES
(1, 'Milk', 'Dairy', '2024-01-01', 0),
(2, 'Cheese', 'Dairy', '2023-12-01', 5),
(3, 'Yogurt', 'Dairy', '2023-11-15', 0),
(4, 'Apple', 'Fruits', '2024-02-01', 10),
(5, 'Banana', 'Fruits', '2023-12-10', 0);


دستور DELETE برای حذف محصولات منقضی‌شده و بدون موجودی

اکنون دستور زیر را اجرا می‌کنیم تا محصولات منقضی‌شده و بدون موجودی از جدول حذف شوند:

 

DELETE FROM Products
WHERE ExpirationDate < GETDATE() AND Stock = 0;


توضیح دستور

ExpirationDate < GETDATE(): شرطی که محصولات با تاریخ انقضای قبل از امروز را انتخاب می‌کند.
Stock = 0: شرطی که محصولات بدون موجودی انبار را انتخاب می‌کند.
این دو شرط با AND ترکیب شده‌اند تا فقط رکوردهایی حذف شوند که هر دو شرط برقرار باشد.

دوره های مرتبط
آموزش Sql,آموزش sqlserver, آموزش جامع Sqlserver

آموزش پایگاه داده SqlServer

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

997,000 تومان

2.3k بازدید

ارسال دیدگاه

برای ارسال نظر لطفا ورود یا ثبت نام کنید.