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