آموزش SQl server-
تعریف متغییر در 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),’۱۲۳۴
توابع تاریخ وزمان:
اضافه کردن قسمتی از تاریخ(ماه یا روز یا سال) به تاریخ
(مقدار تاریخ,تعداد,dateadd(month/date/year
تاریخ جاری سیستم را برمی گرداند.
()get date
تفاوت دو تاریخ
(تاریخ۲,تاریخ۱,قسمتی از تاریخ) date diff
برگرداندن نام قستی از تاریخ مثلا نام ماه یا روز
(تاریخ,قسمتی از تاریخ)date name
برگرداندن قسمت روز تاریخ
(تاریخ)day
برگرداندن قسمت ماه تاریخ
(تاریخ)month
برگرداندن سال تاریخ
(تاریخ)year
تاریخ جاری سیستم به فرم بین الملل
() getutedate
-----------------------------
روال های ذخیره شده stored procedure
به مجموعه دستورات t.sql که شامل تعریف متغییر ها ، عملیات روی آنها و دستورات ورودی و خروجی میشود s.p گفته می شود. هر روال ذخیره شده یک شی است که می تواند سیستمی یا غیر سیستمی باشد.روال های سیستمی قبلا تعریف شده اند و با ایجاد یک بانک اطلاعاتی جدید به آن بانک اضافه می شوند و ما فقط در T.sql ها آنها را فراخوانی می کنیم ولی روال های غیر سیستمی توسط خود کاربر تعریف شده و همانند نوع سیستمی می توانند بارها و بارها فرخوانی شوند.

ایجاد یک روال ذخیره شده:
پارامتر های ورودی نام روال create procedure
Output] as ] نوع پارامتر ها
دستورات select
پارامتر های ورودی روال ها با علامت @ و نوع داده ای تعریف می شوند و پارامتر های خروجی بعد از پارامتر های ورودی با علامت @ و نوع داده ای و کلمه کلیدی output می آیند.
مثال: (پارامتر های خروجی)
create proceduer grdesum @sum int output
as
select @sum = sum(grade) from student
موقع فراخوانی جمع نمرات به عنوان خروجی برگردانده می شود.
(پارامتر های ورودی )
create std_info @name nvarchar(20) , @family nvarchar
as
select std_name , std_family, age from student
where std_name = @name and std_famil=@family
در موقع فراخوانی اطلاعات دانش آموزانی برگردانده می شود که برابر با مقادیر فرستاده شده می باشد.
فراخوانی proceduer
اگر در قطعه کد t.sql دستور فراخوانی اولین دستور باشد می توان فقط نام پروسیجر را نوشت ولی در صورتی که اولین دستور نباشد باید حتما عبارت exec یا execute را همراه آن نوشت.
فراخوانی روال هایی که ورودی دارند:
مقدار فرستاده شده برای روال=نام پارامترورودی @ نام پروسیجر exec
مثال:
‘exec std_info @name=’anis’,@family=’barmar
فراخوانی روال ها بدون ورودی:
نام پروسیجر exec
توابع تعریف شده کاربرuser difine function-udf-
تابع مجموعه از t.sql هاست که یک بار نوشته می شود و چند باز فراخوانی می شود ولی تفاوت آن با پروسیجرهای قبلی در این است که حتما و حداقل یک خروجی را دارد و باید یک مقدار را به عنوان خروجی برگرداند.
نوع خروجی returns (پارامتر ها) نام تابع create function
as
begin
….
نام متغییر خروجی return
end
روش فراخوانی :
‘نامی برای نمایش’ as (پارامتر ها)نام تابع .نام مالک.نام بانک select
مثال : تابعی بنویسید که یک عدد را دریافت و فاکتوریل آن را حساب کند.
( create function fact (@num int
returns int
as
begin
declare @sum int
set @sum =1
declare @counter
set @counter = 0
while @counter<= @num
begin
set @counter = @counter+1
set @sum = @sum *@counter
end
return @sum
end
فراخوانی:
’select class.dbo.fact(3) as ‘fact
نکته:dbo یک مالک عمومی است.
توابع جدولی یا inline table:
این نوع تابع نیز حتما خروجی دارد و می توان بارها و بارها از آن استفاده کرد اما تفاوت ان با تابع قبلی در این است که توابع جدولی مجموعه ای از رکورد های جدول را برمی گرداند.
ایجاد یک تابع جدولی:
return table (نام پارامتر ها)نام تابع create function
as
(دستورات rreturn (select
فراخوانی توابع جدولی
(پارامتر ها)نام تابع select * from
مثال:اطلاعات دانش آموزانی را برگرداند که معلمشان همان معلمی باشد که به عنوان ورودی به تابع فرستاده می شود.
create function std_info(@teacher varchar) returns table
as
return (select student.std_name,student.std_family,register.teacher
where student.std_num =register.std_num
(and register.teacher = @teacher
روش فراخوانی:
(’select * from std_info(‘ahmadi
Trigger :
نوعی روال ذخیره شده است که در مواقع خاص اجرا می شود مثلا در زمان درج داده جدید یا ویرایش داده ها اجرا می شود . توجه کنید که trigger هیچ گاه فراخوانی نمی شود و بلکه اتوماتیک اجرا میشود(البته در زمانی که مشخص می کنید) توسط دستور زیر ایجاد میشود.
نام تریگر create trigger
نام جدولی که تریگر روی ان عمل می کند on
for insert/update/delete
as
دستوراتی بعد از عمل مشخص شده انجام میشود
نکته: به جای کلمه for می توان از کلمه after , inetred af نیز استفاده کردو کلمه after پیش فرض است.
after: بعد از انجام موفقیت آمیز عملیات (insert/update/delete)
for: در همان لحظه اجرا می شود.
ineterd of: ترگیر را به یک قطعه کد T.SQl عادی تبدیل می کند و مانند یک پروسیجر معمولی تریگر را می سازد.
ایجاد یک تریگر به صورت ویزاردی:
راست کلیک روی جدول مورد نظر/گزینهall taks/mange trigger و نوشتن کد های مورد نظر
مثال:
create trigger std_trigger
on student
for insert/update
as
if (select max(grade) from student) >20
‘print ‘a range is not valid
نتیجه : در لحظه ورود یا تغییر داده ها اگر بزرگترین نمره در جدول از ۲۰ بیشتر بود پیغام مناسب را نمایش می دهد.
مثال ۲: تریگری بنویسید که بعد از درج داده جدید در جدول sudent اگر داده ها بیشتر از ۱۰ رکورد شد یک پیغام خطا چاپ کند و رکورد های درج شده را حذف کند.
create trigger isert_trigger
on student
for insert
as
if (select count(*) from student) >10
begin
‘print ‘you cannot insert
rollback
end
موفق باشید
------------------------------------------
دستور raiserror در تریگرها
توسط این دستور یک پیغام خطا تولید میشود که در جدول sys_message در بانک اطلاعاتی master (جدول پیغام های سیستمی ) ذخیره می شود.
روش استفاده :
(حالت ،شدت،”متن خطا “)raiserror
متن خطا:یا متن یا شماره پیغامی از پیغام های سیستمی که در جدول پیغام های سیستمی ذخیره شده
شدت:عددی بین ۱ تا ۲۵ برای پیام هایی که خودمان پیاده می کنیم می توانیم یک عدد بین ۱ تا ۱۸ بدهیم
حالت: عددی است بین ۱ تا ۱۲۷ که اطلاعاتی راجع به حالت خطا را نگه می دارد
تابع()update در تریگر
در ازای عملیات های insert و update یک مقدار بولین برمی گرداند که اگر true باشد یعنی آن ستون تغییر کرده است.
روش استفاده:
… (نام ستون یا فیلد)if update
نکته :این تابع فقط در بدنه تریگر ها استفاده می شود.
مثال: تریگری بنویسید که اجازه ندهد فیلد نام تغییر کند.
create trigger name_std
on student
after upfate , insert
as
(if update (std_name
begin
(raiserror(“you can not change name”,۱۰,۲
rollback
end
مفهوم جداول deleted ,inserted
دستورات DML که باعث اجرای تریگر می شودبا ۲ جدول موقت inserted و deleted کار می کند که این دو جدول به صورت اتوماتیک ایجاد و مقدار دهی می شوند ما می توانیم از این جداول برای تست کردن عملیات های DML قبل از اعمال روی جداول استفاده کنیم.
در جدول deleted یک نسخه از تمام رکورد های حذف شده در اثر دستورات delete یا update را نگه می دارد و جدول inserted یک نسخه از تمام رکورد های جدید اضافه شده بر اثر عملیات های insert , update را نگه می دارد دقت کنید که عمل update هردو جدول را مقدار دهی می کند.
ما از طریق نوشتن دستورات join جداول موقت را با جداول اصلی می توانیم مقادیری را که قبلا حذف شده بود یا تازه درج شده را ببینم:
مثال:تریگری بنویسید که بعد از عملیات درج رکورد های درج شده جدید جدول insert را نمایش دهد.
create trigger inset_trigger
on student
for insert
as
select student.std_num ,inserted.std_num
from inserted,student
where student.std_num=inserted.std_num
تابع drop برای حذف تریگر
نام تریگر drop trigger
تابع alter برای تغییر تریگر
نام تریگری که میخواهیم تغییر بدهیم alter trigger
نام جدول on
….. for
…..as
یکی از موارد on,forیا as تغییر می کند.
موفق باشید
-----------------------
نصب و راه اندازی IIs :
IIS وب سرور مایکروسافت می باشد و برای ایجاد و مدیرت هاستیگ وب سایت ها مورد استفاده قرار می گیرد.
این برنامه بر روی ویندوز های ۲۰۰۰ به بالا بر پایه ان تی موجود است.برای نصب آن به قسمت Add/remove programs در کنترل پنل می روید و از گزینه های سمت چپ add/remove windows component را انتخاب می کنید. از صفحه ای که باز می شود internet information servise(IIS) را انتخاب کرده و سپس گزینه Details را انتخاب و همه گزینه های موجود را علامت دارمی کنید. بعد از ok سی دی ویندوز خود را در درایو گزاشته و next را بزنید.بعد از نصب سیستم را ریست کنید.
جزئیات IIS که در هنگام نصب آنها را انتخاب کرده اید:
۱٫ documention :فایلهای راهنما و مثال های وابسته را نصب می کند.
۲٫ file transfer protocol(ftp :توانایی دانلود و آپلود فایل را به سایت شما اضافه می کند.
۳٫ front pages server exstension :اگر برای ساخت وب سایت از ویژوال استادیو یا فرانت پیج استفاده می کنید باید این گزینه را انتخاب کنید.
۴٫ internet service manger : نگارش تحت وب توانایی های مدیرتی وب سایت.
۵٫NNTP service : اگر به پشتیبانی network news نیاز دارید آن را انتخاب کنید.
۶٫ SMTP service : توانایی فرستادن ایمیل را فراهم می کند.
برای مدیریت IIS می توانید از Administrative tools در کنترل پنل گزینهInternet Information Services را اجرا کنید.
نصب net framework. :
روش اول: نصب کامل ویژال استادیوکه به همراه آن نسخه کامل دانت فریم ورک نصب می شود.
روش دوم :استفاده از سی دی های کامپوننت همراه ویژال استادیو است.نصب آن هیچ نکته خاصی ندارد تنها روی دکمه next کلیک کنید.البته بهتر است روی سیستمی که می خواهید فایلهایتان را اجرا کنید کامپوننت های ویژوال استادیو دات نت را کامل نصب کنید.
تنظیمات IIS برای ایجاد اولین برنام ASP.NET
مکانی که فایلهای وب سرور شما در آن ذخیره می شود به نام home یا root شناخته می شود. تعیین ای پوشه توسط IIS انجام می شود و به طور پیش فرض c:\inetpub\wwwroot می باشد(این پوشه هنگام نصب IIS در درایو ویندوز شما ساخته می شود) که تعوض ان به هر مسیر دیگری امکان پذیر است.ولی پیشنهاد می کنم مسیرwwwroot را تغییر ندهید.
تغییر مسیر پوشه home :
به قسمت مدیریت IIS در کنتل پنل بروید(Administrative tools\Internet Information Services) از ساختار درختی سمت چپ زیر شاخه web site–>default web site را انتخاب کرده و properties آن را از طریق راست کلیک باز نمایید.حالا در tab به نام home directory می توانید مسیر پوشه wwwroot را تغییر دهید.
در این قسمت برای تعیین پوشه جدید سه گزینه وجود دارد:
۱٫a directory located on this computer: این گزینه موقعی استفاده می شود که پوشه به صورت لوکال و در سیستم خودتان باشد(پیش فرض)
۲٫ A share location on anader computer: هنگامی که پوشه شما در شبکه به اشتراک گذاشته شده است .
۳٫ a redirection to URL: در این حالت برای دسترسی به سایت شما به آدرس دیگری forward خواهد شد.
ایجاد یک پوشه مجازی در IIS:
تمامی زیر پوشه های شما در home (inetpub\wwroot برای کاربرانتان قابل درسترسی می باشد برای مثال اگر پوشه ای به نام anis در wwwroot شما وجود داشته باشد با این آدرس به آن دسترسی خواهید داشت:
http://local host/anis
با ایجاد پوشه مجازی می توان از پوشه هایی استفاده کرد که الزاما زیر پوشه شما د رhome وب سایتتان نیست.مثلا پوشه ای در درایوی جز درایو ویندوز. برای این کار در (Administrative tools\Internet Information Services) روی گزینه default web site راست کلیک کرده و گزینه new–>virtual directory را انتخاب کنید و next را بزنید .برای اغلب سایت های موارد امنیتی مشخص شده کافی می باشد.
البته راه دیگری هم وجود دارد:
راست کلیک بر روی پوشه مورد نظر خود در ویندوز و انتخاب گزینه propeties در سربرگ web sharing وب سایتی را که می خواهید برای آن پوشه مجازی بسازید را انتخاب کنید و موارد امنتی را مشخص کنید و ok کنید.
سطوح دسترسی در هنگام ایجاد پوشه مجازی:
read :کاربران می توانند به سایت شما مراجعه کنند و محتویات آن را مشاهده کنند که به صورت پیش فرض انتخاب شده است.
run scripts: توانایی اجرای اسکریپت ها را در دایرکتوری مجازی می دهد.برای اجرای صفحات asp باید حتما انتخاب شود.
execut : توانایی اجرای برنامه ها را در پوشه مجازی می دهد. این گزینه باید برای وب سایت هایی فایل های ASP آنها نیاز به ساختن پوشه ای در سرور دارد فعال شود.
بقیه تنظیمات IIS رو در جلسات بعدی آموزش می بینید.
-------------------------------------------------------