آشنایی با SQL – بخش پنجم – آشنایی با دستور UPDATE

SQL

با این دستور می توان رکوردهائی که از قبل وجود داشته اند را ویرایش نمود.

مثال ۱ :

UPDATE Student
;SET BirthYear = 1360

در صورت اجرای دستور بالا سال تولد تمامی دانشجویان برابر ۱۳۶۰ می شود!

معمولا قصد داریم فقط رکورد(های) خاصی را ویرایش کنیم، بنابراین باید به نحوی رکوردهائی که این دستور بر انها اثر می گذارد را محدود نمائیم.

مثال ۲ :

UPDATE Student
SET BirthYear = 1360
;WHERE NC=’2032222222′

با استفاده از WHERE می توان برای رکوردهایی که تحت تاثیر یک دستور قرار می گیرند، شرط(شرایط)ی تعیین کرد.

دستور بالا موجب می شود سال تولد دانش آموزی که کد ملی آن ۲۰۳۲۲۲۲۲۲۲ است به مقدار ۱۳۶۰ اصلاح شود.

ممکن است هنگام مشاهده یک دستور این سئوال پیش بیاید که اگر این دستور اجرا شود چه تعداد رکورد تحت تاثیر قرار می گیرند؟ در پاسخ باید گفت جواب علاوه بر دستور به داده ها نیز بستگی دارد. حالت های مختلفی ممکن است پیش بیاید:

  1. دستور دارای اشکال باشد و اجرا نشود و بنابراین هیچ رکوردی تغییر نکند.
  2. هیچ رکوردی منطبق با شرط (شرایط) دستور وجود نداشته باشد و بنابراین هیچ رکوردی تغییر نکند.
  3. فقط یک رکورد، دو رکورد، …… و یا حتی همه رکوردهای جدول منطبق با شرایط دستور باشند و تغییر کنند.

آیا حالت دیگری ممکن است پیش بیاید؟

با استفاده از دستور update عملیات جالب و کاربردی فراوانی می توان اجرا کرد که انجام آنها با زبانهای متداول غیر SQL دشوارتر و وقت گیر است. به مثال های زیر توجه کنید:

مثال ۳ : حقوق کارمندان را هزار ریال افزایش دهید.

UPDATE Personnel
;SET Salary = Salary + 1000

Salary در سمت چپ تساوی یعنی حقوق جدید و Salary  در سمت راست تساوی یعنی حقوق قبلی.         

مثال ۴ : حقوق کارمندان را دو برابر کنید.

UPDATE Personnel
;SET Salary = 2 * Salary

مثال ۵ : حقوق کارمندان را پنج درصد افزایش دهید.

UPDATE Personnel
;SET Salary = 1.05 * Salary

مثال ۶ : حقوق کارمندان مرد را دو برابر کنید.

UPDATE Personnel
SET Salary = 2 * Salary
;WHERE Gender=’Male’

با یک دستور update می توان یکباره مقادیر چند فیلد را بروزرسانی کرد کافیست فیلدها را با ویرگول از هم جدا کنید:

مثال ۷ : حقوق همه کارمندان را دوبرابر و به ابتدای شماره تلفن آنها ۰۲۱ اضافه کنید:

UPDATE Personnel
;SET Salary = 2 * Salary, Tel = ‘021’ + Tel

آیا می توانید دستوری بنویسید تا به انتهای شماره تلفن ۰۲۱ را اضافه کند؟

فرض کنید سه صفر از واحد پول ملی حذف شود. آیا می توانید دستوری بنویسید که حقوق کارمندان را اصلاح کند؟