
سلام به همه دوستان و عرض معذرت به خاطر اينكه هميشه دير آموزش ميزارم.در آموزش قبلي نحوه ايجاد يك 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تنها با تمرين و حل كردن مثال ياد گرفته ميشه!
موفق باشيد
سلام خدا قوت .من که از برنا مه نویسی چیزی نمی دونم ولی خیلی علاقه دارم .اگه میشه ویژوالبیسیک رو اموزش بدین.(الری آقرماسن) راستی ایمیل ندارم همین جوری نوشتم.
سلام خسته نباشید سایت بسیار خوبی دارید
من مایلم با شما تبادل لینک کنم.
ما را با نام پرشیا موبایل لینک کنید سپس لینک خود را برای ما ارسال کنید
ممنون
ممنون مثل همیشه عالی بود