دستور delete در sql ( حذف کردن در Sql)
با نام و یاد خداوند. سلام خدمت کاربران گرامی
در جلسه قبل با دستور update آشنا شدیم. در این جلسه قصد داریم تا شما را با دستور delete در sql آشنا کنیم .
دو تا جدول به نام های Student و Course داشتیم . ابتدا با استفاده از دستور select اطلاعات جداول خود را مشاهده می کنیم.
select *
from Student
خروجی جدول student:
select *
from Course
خروجی جدول Course:
نحوه استفاده از دستور delete در Sql
برای حذف کردن یک سطر یا record (رکورد ) از جدول ، از دستور delete استفاده می کنیم .
delete
from نام جدول
where (مقدار آی دی ‘ = نام ستونی که مقادیرش تکراری نیست (فیلد آی دی ‘
نکته: در هنگام نوشتن دستور delete حتما باید مشخص کنید که کدام سطر را می خواهید حذف کنید اگر خط سومی یعنی دستور where را اجرا نکنید تمام سطر های جدولتان حذف می شود .
مثال: می خواهیم رکوردی با آی دی 2040 را حذف کنیم ؟ ابتدا مشخصات دانش آموزی با آی دی 2040 را مشاهده می کنیم .
برای حذف یک رکورد طبق دستورات زیر عمل می کنیم .
delete
from student
where id=’2040′
عملیات با موفقیت انجام شد .
باز جدول 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 می رویم :
مشاهده می کنیم که رکورد 8 و 9 داده ی وابسته دارد یعنی در این جدول اطلاعاتی وجود دارد که درون جدول دیگری است .پس رکوردی را انتخاب می کنیم که داده وابسته ای نداشته باشد .
delete
from student
where id in(‘2040′ ,’2039’)
کوئری را اجرا می کنیم .
عملیات با موفقیت انجام شد .
مشاهده می کنیم که رکوردهایی با آی دی 2039 و 2040 حذف شده است .
نکته 3 :در نکته دومی گفته بودم که وقتی دو تا جدول با هم در ارتباط می باشند اگر در جدولمان اطلاعات وابسطه ای وجود داشته باشد اجازه ی حذف کردن آن رکورد را به ما نمی دهد.حال اگر بخواهیم آن رکورد را با تمام اطلاعات وابسطه اش حذف کنیم چه باید کرد؟
برای حذف این موارد راهکاری وجود دارد .
ابتدا دیاگرام دیتابیس خود را باز می کنیم.
توجه: اگرهنوز دیاگرامی ایجاد نکرده اید و مشکل در اضافه کردن دیاگرام دارید می توانید آموزش جلسه اول (بخش آموزش ارتباط دادن بین جداول) را مطالعه کنید.
بعد از باز کردن یا ایجاد کردن دیاگرام مورد نظرتان ، روی خط ارتباطی که بین دو جدول است راست کلیک کرده و یا کلید ترکیبی Alt + Enter را بزنید .طبق تصویر زیر :
گزینه ی Properties را انتخاب کنید .پنجره ای سمت راست برنامه برای شما باز می شود .
زیر شاخه ی UPDATE Specifiction INSERT And را انتخاب کنید .این گزینه داخل شاخه ی Database Designer قرار دارد.دو تا گزینه بنام های Delete Rule و Update Rule داخل این زیر شاخه وجود دارد . که مقدار آن بطور پیش فرض روی No Action می باشد . مقدار آن را به Cascade (به معنای آبشاری ) تغییر دهید. و دیاگرام را حتما ذخیره کنید .
بعد از انجام دادن این مراحل ، حالا اگر بخواهید رکوردی از جدول student حذف شود بدون آنکه به شما اروری بدهد می توانید آن رکورد را حذف کنید .
نکته 4:با حذف شدن آن رکورد در جدول student تمام درس های وابسطه به این رکورد در جدول Course نیز حذف می شود .
مثال : رکوردی با آی دی 1033 , 1034 , 2031 را حذف کنید ؟
delete
from student
where id in(‘1033′ ,’1034′,’2031’)
خروجی را مشاهده می کنیم:
مشاهده می کنیم که عملیات با موفقیت انجام شد با وجودی که از این اطلاعات در جدول course نیز استفاده شده بود .
جدول student و جدول course را دوباره با هم مشاهده می کنیم تا تغییرات را در دو جدول ببینیم .
جدول student
جدول course
مشاهده می کنید که این رکوردها از جدول student حذف شدند و همچنین در جدول course رکوردهایی که اطلاعات وابسته داشت نیز حذف شدند.
در این جلسه با دستور delete در sql آشنا شدیم و با چندین مثال تمام نکات لازم را مطرح کردیم، در جلسه بعد قصد داریم تا شما را با دستوری آشنا کنیم که id آزاد را پیدا کند.با ما همراه باشید.
با آموزش مبانی SQL Server در خدمت شما هستیم. لطفا سوالات ، نظرات و پیشنهادات خود را در قسمت دیدگاه ها با ما در میان بگذارید.
به این مقاله چند تا ستاره میدی؟[تعداد رای: 5 امتیاز: 5]
سپاس
سلام و عرض ادب
از انرژی مثبت شما سپاسگزاریم
اگر بخواهیم همه سطر هایی رو حذف کنه شامل مقادیر null هستند چه دستوری بکار میره؟؟؟
مجاز هست که از دستور * delete استفاده کنیم?