دستور delete در sql ( حذف کردن در Sql)

با نام و یاد خداوند. سلام خدمت کاربران گرامی
در جلسه  قبل با دستور update  آشنا شدیم. در این جلسه قصد داریم تا شما را با  دستور delete در sql  آشنا کنیم .

دو تا جدول به نام های Student و Course داشتیم . ابتدا با استفاده از دستور select  اطلاعات جداول خود را مشاهده می کنیم.

select *
from Student

خروجی جدول student:

دستور join در SQL -تصویر 1

select *
from Course

خروجی جدول Course:

دستور join در SQL -تصویر 2

نحوه استفاده از دستور delete در Sql

برای حذف کردن  یک سطر یا record (رکورد ) از جدول ، از دستور delete استفاده می کنیم .

delete

from  نام جدول

where  (مقدار آی دی ‘ = نام ستونی که مقادیرش تکراری نیست (فیلد آی دی

نکته: در هنگام نوشتن دستور delete  حتما باید مشخص کنید که کدام سطر را می خواهید حذف  کنید اگر خط سومی یعنی دستور where  را اجرا نکنید تمام سطر های جدولتان حذف می شود .

مثال: می خواهیم  رکوردی  با آی دی 2040  را حذف کنیم ؟ ابتدا مشخصات دانش آموزی با آی دی 2040 را مشاهده  می کنیم .

دستور delete در sql - رکورد

برای حذف یک رکورد  طبق دستورات زیر عمل می کنیم .

delete
from student
where id=’2040′

دستور delete در sql - کوئری

عملیات با موفقیت انجام شد .

باز جدول student را مشاهده می  کنیم تا تغییرات را مشاهده کنیم  .

دستور delete در sql - نتیجه جدول student

مشاهده می کنیم که رکورد ی با آی دی  2040 از جدول حذف شده است .

نکته1: هنگام استفاده از دستورdelete می توانید از عملگرهای And) و ( Or که برای ترکیب شرط ها در دستور Where می باشند  استفاده کنید . و همچنین می توانید از عملگر   in  (این عملگر به شما اين امکان را مي دهد که چندين مقدار را در عبارت Where  مشخص کنيد)نیز استفاده کنید.

 

مثال :می خواهیم  رکوردی  با آی دی 2040,2034,2031   را حذف کنیم  ؟برای حذف چند رکورد بهتر است  از عمگر in  استفاده کنید.

delete
from student
where id in(‘2040′ ,’2034′,’2031’)

کوئری را اجرا می کنیم .

با پیغام خطا مواجه می شویم .این پیغام بیان کننده ی این است که جدول course  با جدول  student  با یک کلید خارجی(FOREIGN KEY) در ارتباط می باشد . در واقع داده ای درون جدول course  می باشد که وابسطه به داده ای در جدول  student  است .

نکته2: ستون   FOREIGN KEY  در واقع برای ارتباط و لینک شدن دو تا جدول است  . و وقتی دو تا جدول با هم در ارتباط باشند اگر در جدولمان اطلاعات وابسطه ای وجود داشته باشد اجازه ی حذف کردن آن رکورد را به ما نمی دهد چون با حذف آن رکورد . اطلاعاتی که در جدول دیگر دارد نمی داند برای چه کسی می باشد  .

به سراغ جدول course   می رویم :

دستور delete در sql - نتیجه

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

delete
from student
where id in(‘2040′ ,’2039’)

کوئری را اجرا می کنیم .

دستور delete در sql - کوئری delete

عملیات با موفقیت انجام شد .

دستور delete در sql - نتیجه اجرا

مشاهده می کنیم که رکوردهایی با آی دی 2039 و 2040 حذف شده است .

نکته 3 :در نکته دومی گفته بودم که وقتی دو تا جدول با هم در ارتباط می باشند اگر در جدولمان اطلاعات وابسطه ای وجود داشته باشد اجازه ی حذف کردن آن رکورد را به ما نمی دهد.حال اگر بخواهیم آن رکورد را  با تمام اطلاعات وابسطه اش حذف کنیم چه باید کرد؟

 برای حذف این موارد راهکاری وجود دارد .

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

دستور delete در sql - دیاگرام دیتابیس

توجه: اگرهنوز دیاگرامی ایجاد نکرده اید و مشکل در اضافه کردن دیاگرام دارید  می توانید آموزش جلسه اول (بخش آموزش ارتباط دادن بین جداول)  را مطالعه کنید.

دستور delete در sql - دیاگرام جدول ها

بعد از باز کردن یا ایجاد کردن دیاگرام مورد نظرتان ، روی خط ارتباطی که بین دو جدول است راست کلیک کرده و یا کلید ترکیبی Alt + Enter  را بزنید .طبق تصویر زیر :

دستور delete در sql - خطوط بین دیاگرام

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

دستور delete در sql - دیاگرام

زیر شاخه ی UPDATE Specifiction   INSERT And  را انتخاب کنید .این گزینه  داخل شاخه ی Database Designer  قرار دارد.دو تا گزینه بنام های  Delete Rule  و Update Rule  داخل این زیر شاخه وجود دارد . که مقدار آن بطور پیش فرض روی  No Action  می باشد  . مقدار آن را به Cascade (به معنای آبشاری ) تغییر دهید. و دیاگرام را حتما ذخیره کنید .

دستور delete در sql - دیاگرام

بعد از انجام دادن این مراحل ، حالا اگر بخواهید رکوردی از جدول student   حذف شود بدون آنکه به شما اروری بدهد می توانید آن رکورد را حذف کنید .

نکته 4:با حذف شدن آن رکورد در جدول student   تمام درس های وابسطه به این رکورد در جدول  Course  نیز حذف می شود .

 

مثال : رکوردی  با آی دی 1033 , 1034 , 2031 را حذف کنید ؟

delete
from student
where id in(‘1033′ ,’1034′,’2031’)

 

خروجی را مشاهده می کنیم:

دستور delete در sql - کد دستوری Delete

مشاهده می کنیم که عملیات با موفقیت انجام شد با وجودی که از این اطلاعات  در جدول course  نیز استفاده شده بود .

جدول student  و جدول  course  را دوباره با هم مشاهده می کنیم تا تغییرات را در دو جدول ببینیم .

جدول student

دستور delete در sql - نتیجه جدول student

جدول course

دستور delete در sql - نتیجه جدول course

مشاهده می کنید که این  رکوردها از  جدول student  حذف شدند و همچنین در جدول course  رکوردهایی که اطلاعات وابسته داشت نیز حذف شدند.

در این جلسه با دستور delete در sql  آشنا شدیم و با چندین مثال تمام نکات لازم را مطرح کردیم، در جلسه بعد قصد داریم تا شما را با دستوری آشنا کنیم که id آزاد را پیدا کند.با ما همراه باشید.

با  آموزش مبانی SQL Server در خدمت شما هستیم. لطفا سوالات ، نظرات و پیشنهادات خود را در قسمت دیدگاه ها با ما در میان بگذارید.

به این مقاله چند تا ستاره میدی؟
[تعداد رای: 5 امتیاز: 5]