آموزش SQl server -جلسه ششم

6

سلام به همه  دوستان و عرض معذرت به خاطر اینکه همیشه دیر آموزش میزارم.در آموزش قبلی نحوه ایجاد یک tran saction یا همونt.sql رو آموزش دادیم و اما ادامه آموزش…

تعریف متغییر در transaction sql ها

متغییر ها توسط دستور declare تعریف میشوند و توسط دستور set یا select  مقدار دهی میشوند. به این صورت:

نوع داده    نام متغییر@   declare

نکته: متغییر های محلی که با declare تعریف میشوند باید با علامت @ شروع شوند.

مثال(مقدار دهی متغییر با set):

پرس وجویی بنویسید که در آن نام تمام کسانی که شامل حرف a می شود برگردانده شود.

declare  @name   varchar

‘%set  @name  = ‘%a

select    std_name   from   student

where   std_name   like  @name

مقدار دهی با select: این دستور حتما باید یک مقدار واحد را برگرداند.

declare   @ave  int

select    @avg = ave(age)   from    student

print  @avg

نکته: بادستور print  میتوان محتویات یک متغییر را نمایش داد.

ساختارهای شرطی (if ,else):

شکل کلی if ها در sql  به صورت زیر میباشد.

شرط یا همان دستورات    if

begin

دستورات

end

else

begin

دستورات

end

مثال:دستوری بنویسید که در صورت بزرگ بودن مجموع نمرات دانش آموز احمدی از ۱۰۰ پیغام مناسب نمایش دهد و اگر نبود رکورد های مربوط به max و min نمرات نمایش داده شوند.

if   (select   sum(grade)  from student

‘  where  std_family =’ahmadi

(group by std_family

‘print ‘sum grade of ahmadi is more than 100

else

select  min(grade),max(grade)   from student

‘where   std_family=’ahmadi

group by  std_family

ساختار تکرار:

شکل کلی دستور به این صورت است:

شرایط یا دستورات  while

begin

دستورات

end

دستور break , continue:

break: خروج از حلقه -دستورات حلقه دیگر اجرا نمیشود و کنترل برنامه برمی گردد به اولین دستور بعد از end

continue: دستورات حلقه به ازای مقدار بعدی حلقه اجرا می شود و برنامه برمی گردد به اولین دستور حلقه

مثال:

دستوری بنویسید که هربار ۲ نمره به نمره دانش اموزان اضافه کند و اگر max آن بیشتر از ۱۸ شد دیگر اضافه نکند.(شرط میانگین نمرات کوچکتر از ۱۲ باشد)

while (select   ave(grade) from student ) <12

begin

update student  set grade =grade+2

if (select avg(grade) from student) >18

break

end

توابع رشته ای در sql :

تبدیل کاراکتر به کد اسکی-خروجی یک عدد است.

(asci(char

تبدیل کد اسکی به کاراکتر-خروجی که کاراکتر است.

(char(int

موقعیت یک زیر رشته در رشته ای دیگر-خروجی یک عدد است.

(رشته,زیر رشته)char index

مقایسه دو رشته-خروجی یک عدد است-اگر خروجی تابع عدد ۳ بود به ان معناست که هر دو رشته نا برابر اند و اگر خروجی عدد ۴ بود رشته ها برابر  و مساوی هستند.

(diffrence(str1,str2

از نقطه شروع به تعدادی که ما تعیین می کنیم از سمت چپ رشته یک زیر رشته برمی گرداند.

(محل شروع یک عدد,left(str

از نقطه شروع به تعدادی که ما تعیین می کنیم از سمت راست رشته یک زیر رشته برمی گرداند.

(محل شروع یک عدد,right(str

طول رشته را برمی گرداند.

(len(str

تبدیل رشته به حروف کوچک

(lower(str

تبدیل رشته به حروف بزرگ

(upper(str

حذف فضاهای خالی یک رشته از سمت چپ

(trim(str

حذف فضاهای خالی رشته از سمت راست

(rtrim(str

جایگزین کردن رشته دوم به جای رشته اول

(رشته دوم,رشته اول,رشته اصلی)replace

تطابق دادن یک رشته با یک الگو-خروجی یک عدد است اگر عدد صفر بود رشته مانند الگو می باشد.

(رشته والگو)pat index

تبدیل یک عدد به رشته عددی

(str(int

یک زیر رشته از نقطه شروع به طول دلخواه برمی گرداند.

(طول رشته ,نقطه شروع ,رشته اصلی)substring

معکوس یک رشته را برمی گرداند.

(reverse(str

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

مثال:

دستوری بنویسید که چهار کاراکتر اول فیلد شماره دانش آموزی یا با مقادیر ۱ تا ۴ جایگزین کند.

update student  set

(‘std_num  = replase(std_num,left(std_num,4),’1234

توابع تاریخ وزمان:

اضافه کردن قسمتی از تاریخ(ماه یا روز یا سال) به تاریخ

(مقدار تاریخ,تعداد,dateadd(month/date/year

تاریخ جاری سیستم را برمی گرداند.

()get date

تفاوت دو تاریخ

(تاریخ۲,تاریخ۱,قسمتی از تاریخ) date diff

برگرداندن نام قستی از تاریخ مثلا نام ماه یا روز

(تاریخ,قسمتی از تاریخ)date name

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

(تاریخ)day

برگرداندن قسمت ماه تاریخ

(تاریخ)month

برگرداندن سال تاریخ

(تاریخ)year

تاریخ جاری سیستم به فرم بین الملل

()  getutedate

بازم پیشنهاد می کنم که تمرین کنید sqlتنها با تمرین و حل کردن مثال یاد گرفته میشه!

موفق باشید

برچسب‌ها :

توضیحات در مورد نویسنده :

مسعود رضایی هستم ، 23 ساله ، مدیر گروه نوجوان تک تمپ ، دانشجو ، علاقمند به طراحی وب سایت ، گرافیک و بازی های رایانه ای . هدف ما بالا بردن هنر گرافیک در بین هموطنان مان است .

Visit Masoud's Website



محصولات فروشگاه



<