0

آموزش گام به گام SQL Server

 
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server
پنج شنبه 30 تیر 1390  11:45 AM

سلام مجدد

 

- دستور UpDate  :  بااستفاده از دستور UPDate  رکوردهای اشاره شده تغییر خواهند کرد و در شکل کلی ذیل مورد استفاده قرار می گیرد.

]  Set  نام مستعار [ AS ] [       نام جدول     UpDate

,  مقدار 1  =  فیلد 1

,  مقدار 2  = فیلد 2

 


]  عبارت شرطی   [ Where

 

دراین حالت هر فیلد با مقدار تعیین شده که بانوع فیلد تناسب دارد جانشین خواهد شد و این عملیات تا زمانیکه شرط صادق باشد ادامه می یابد. بدیهی است که درصورت عدم ارائه شرط کلیه رکوردهای جدول تحت تاثیر تغییرات واقع خواهند شد که شایسته است دقت بیشتری بعمل آید در واقع در مواقعی که قرار است یک رکورد خاص تحت تغییرات قرار گیرد فیلد PK  در جدول موردنظر بهترین کاندیدا جهت عبارت شرطی است.

مثال :  بااستفاده از دستور UpDate  مقدار اطلاعات پرسنلی شخص با شماره کارمندی 200  را تغییر دهید.

UpDate   Person  Set

´ ,رضائی پورPFamily  = ´

UnitID = 1

Where  PrsID = 200

 

 

که در این مثال ستونهای نام خانوادگی و واحد سازمانی تحت تغییرات برای شخص به کارمندی 200  قرار گرفته اند.

 

مثال :  بااستفاده از دستور UpDate  حقوق کارکنان را %20  افزایش دهید.

اگر فرض کنیم در جدول پرسنلی فیلد Price  حقوق کارمندان باشد بنابراین خواهیم داشت:

 

UpDate  Person  Set

Price = Convert ( BigInt , Price * 1.2 )

 

مثال :  فرض کنید که کد تهران = 1 و کد اصفهان = 2  باشد دستوری بنویسیدکه حقوق کارکنان دو شهر را %25  افزایش دهد:

 

UpDate  Person  Set  Price = Convert (BigInt , Price* 1.25 )

( 39 )

 

 
Where  CityID In (1,2)

مثال :  دستوری بنویسید که حقوق کارکنان هر واحد را به نسبت درصد جمعیت هر شهر تغییر دهد.

 

UpDate  Person  P  Set  Price = Price * ( 1 +

( Select  Isnull (C.PoPulate ,0) Form  Unit U

Left  Join City  C On (C.CityID = U.CityID)

Where  U.UnitID = P.UnitID)

 
 
 


( Select  Sum (PoPulate )  From  City ) )

 

 

 

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

 

               (                                                                                  + 1 )  *  حقوق قبلی = حقوق جدید

 

 

 

از طرفی مشاهده می گردد که مخرج کسر یعنی جمعیت کل شهرستانها برای هر فرد در حال محاسبه است که فرآیند به روزرسانی را کندتر خواهد کرد بدین منظور اگر از یک SP  استفاده شود می توان افزایش سرعت را ایجاد نمود بنابراین خواهیم داشت:

 

Create  Proc  NewPrice AS

Declare   @SumPoP  BigInt

Set   @SumPoP = ( Select  Sum (PoPulate )  From City )

Begin  Tran

UpDate  Person  P  Set  Price = Price * ( 1 +

( Select  Isnull (C.PoPulate  , 0 )  From  Unit  U

Left  Join  City  C  On ( C.CityID = U.CityID)

Where  U.UnitID = P.UnitID ) / @ SumPoP )

Commit  Tran

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

در پست بعد دستور Delete رو خواهم گفت. همچنان با ما باشید

تشکرات از این پست
دسترسی سریع به انجمن ها