دستور UPDATE
درس «دستور UPDATE» در SQL Server به آموزش تخصصی نحوه بهروزرسانی دادهها در جداول پایگاه داده میپردازد. در این درس، ابتدا با ساختار کلی دستور UPDATE آشنا میشوید و سپس نحوه بهروزرسانی هدفمند دادهها با استفاده از شرطهای فیلترسازی (WHERE Clause) بررسی میشود. نکات کلیدی شامل جلوگیری از بهروزرسانی ناخواسته تمامی رکوردها، مدیریت استثنائات، و بهینهسازی عملکرد Queryها در دستور UPDATE است. این آموزش، ابزارهای لازم برای مدیریت ایمن و کارآمد دادهها را در اختیار توسعهدهندگان، مهندسان پایگاه داده، و متخصصان فناوری اطلاعات قرار میدهد.
در این بخش من دوست دارم که با استفاده از دستورات sql یک یا چند رکورد در پایگاه داده رو بروزرسانی و ویرایش کنم.
برای مثال، دوباره من با HumanResources.Department کار میکنم.
اول یک نگاهی به داده هایی که در ابتدا وجود داشت میکنم و یک query جدید با دستور select و بعد هم یک ستاره، ایجاد میکنم و ادامه میدهم.
from [Department] . [HumanResources] رو میگذارم و میبینم که اولین رکورد در Department، Engineering هست که در گروه Research and Development قرار دارد، اجازه بدهید بگویم که ما میخواهیم بصورت فرضی اون رو تغییر بدهیم.
مثلاً میخواهیم که department، Engineering رو به یک گروه متفاوت تغییر بدهیم.
ما میتوانیم یک دستور از sql رو، برای بروزرسانی یک رکورد صادر کنیم تا یک رکورد رو تغییر بدهد. بنابراین اینکار رو انجام میدهیم و از کلمه کلیدی update استفاده میکنیم. برای انجام اینکار یک query جدید باز میکنم و همانطور که گفتم از کلمه کلیدی update استفاده میکنم و نام جدولی که میخواهم بروز رسانی بشود که در اینجا [HumanResources] . [Department] هست، رو بعد از واژه update قرار میدهم. یاد گرفتیم برای اینکار کافی است [HumanResources] . [Department] رو بگیریم و آنرا داخل کوئری خودمان درگ کنیم. بعد از اون باید از کلمه کلیدی set و بعد از set باید لیستی از نام ستونهایی که باید تغییر کند رو قرار میدهم، در این مورد Groupname ستونی هست که مقداری که ما قصد تغییر آنرا داریم در این ستون قرار دارد.
که اون رو برابر مساوی با واژه Engineering Group قرار میدهم.
در واقع میخواهم نام groupname که الان مقدار Research and Development دارد رو به Engineering Group تغییر کند. بنابراین ما دستور رو به صورت
UPDATE [HumanResouces] . [Department] SET GroupName equal to Engineering Group
داریم. اما این هنوز به تنهایی اجرا نمیشود و یک مشکلی دارد. اگر به همین صورت اجرا بشود، هر رکوردی که در جدول [HumanResources] . [Department] وجود دارد، رو بروز رسانی میکند که این اون چیزی نیست که ما میخواهیم و ما فقط یک رکورد رو میخواهیم بروزرسانی کنیم.
به عبارت دیگر ما برای انجام دقیق تغییرات به یک بند where نیاز داریم که مشخص کند کجا رو بروزرسانی کند. این بند where شبیه بند where ای هست که قبلاً در دستور select بود و با آن کار کردیم.
بنابراین ما کلمه کلیدی where رو اضافه میکنیم تا یک فیلتری برای مشخص کردن اینکه کدام رکورد رو دوست داریم، تغییر بدهیم، داشته باشد.
در این مورد نام رو برابر با engineering قرار میدهیم و بنابراین حالا ما یک update و یک دستور set و یک بند where داریم.
پیش میرویم و دستور execute رو اجرا میکنیم.
بعد از اجرا پیام 1 rows affected را میدهد. به معنی اینکه یک سطر تحت تأثیر این دستور قرار گرفت که به معنی موفقیت آمیز بودن اجرا دستور هست و این خبر خوبی است و همان چیزی است که ما انتظارش را داشتیم.
من به تب دیگر بر میگردم و دوباره دستور select رو اجرا میکنم و حالا میبینیم که برای department number یک گروهی هست که به Engineering Group تغییر پیدا کرده، دقیقاً همان چیزی که من میخواهم.
به دستور update برمیگردیم.
دقت کنید که این دستور از دستور insert کمی متفاوتتر است. طوری که در دستور insert ما لیستی از ستونهایی که میخواستیم با آنها کار کنیم رو قرار میدادیم و بعد از اون به صورت جداگانه مقدارهایی که در هر یک از اون ستونها میخواستیم بگذاریم، لیست میکردیم. در اینجا یعنی دستور update یک جفت آیتم داریم؛ یعنی یکی نام ستون و دیگری مقدار آنها، که با علامت مساوی از هم جدا میشوند. بنابراین بجای لیستی از نام ستونهایمان و بعد از اون لیستی از همه مقادیرمان، نام ستون رو برابر با مقدار اون قرار میدهیم و همانطور که دیدیم نام ستون و مقدار آنرا کنار هم قرار دادیم. زمانی که میخواهم تعداد زیادی ستون رو بروزرسانی کنم، به نظر میرسد با این روش راحتتر هستم تا اینکه بخواهم برای ایجاد تغییر، درکار با تعداد زیادی ستون، از دستور insert استفاده کنم.
بنابراین این نوع ترکیب دستوری یعنی استفاده از دستور update بین کسانی که با این نرم افزار یعنی sql server برای ایجاد تغییرات در پایگاه های داده شان استفاده میکنند، میشود گفت کمی بیشتر رایج و ملموس تر شده است.