کد خبر : 3388 تاریخ انتشار : جمعه 23 اکتبر 2009 - 14:36

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

Rate this post

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

مثال:دستوري بنويسيد كه در صورت بزرگ بودن مجموع نمرات دانش آموز احمدي از 100 پيغام مناسب نمايش دهد و اگر نبود ركورد هاي مربوط به 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: دستورات حلقه به ازاي مقدار بعدي حلقه اجرا مي شود و برنامه برمي گردد به اولين دستور حلقه

مثال:

دستوري بنويسيد كه هربار 2 نمره به نمره دانش اموزان اضافه كند و اگر max آن بيشتر از 18 شد ديگر اضافه نكند.(شرط ميانگين نمرات كوچكتر از 12 باشد)

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

مقايسه دو رشته-خروجي يك عدد است-اگر خروجي تابع عدد 3 بود به ان معناست كه هر دو رشته نا برابر اند و اگر خروجي عدد 4 بود رشته ها برابر  و مساوي هستند.

(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

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

مثال:

دستوري بنويسيد كه چهار كاراكتر اول فيلد شماره دانش آموزي يا با مقادير 1 تا 4 جايگزين كند.

update student  set

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

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

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

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

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

()get date

تفاوت دو تاريخ

(تاريخ2,تاريخ1,قسمتي از تاريخ) date diff

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

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

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

(تاريخ)day

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

(تاريخ)month

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

(تاريخ)year

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

()  getutedate

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

موفق باشيد

دسته بندی : آموزش ، برنامه نویسی
برچسب ها :
دیدگاهتان را بنویسید

این سایت از اکیسمت برای کاهش جفنگ استفاده می‌کند. درباره چگونگی پردازش داده‌های دیدگاه خود بیشتر بدانید.

abbas jamshidi در تاریخ 22 جولای 2010 گفته : پاسخ دهید

سلام خدا قوت .من که از برنا مه نویسی چیزی نمی دونم ولی خیلی علاقه دارم .اگه میشه ویژوالبیسیک رو اموزش بدین.(الری آقرماسن) راستی ایمیل ندارم همین جوری نوشتم.

Hamid در تاریخ 24 اکتبر 2009 گفته : پاسخ دهید

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

مسعود رضايي در تاریخ 23 اکتبر 2009 گفته : پاسخ دهید

ممنون مثل همیشه عالی بود