آموزش گام به گام SQL Server
با سلام خدمت تمامی دوستان
من قصد دارم که SQL Server رو در چندین پست به دوستان آموزش بدم. منبع من برای این آموزش کتاب "برنامه نویسی بانک های اطلاعاتی" نوشته عباس صفای کفاش است.
دوستان هم اگر سوالی در مورد مطالب داشتند توی همین بخش مطرح کنند.
امیدوارم توی این کار موفق باشم.
با تشکر
موفق باشید
سلام
خب من اولین آموزش رو شروع می کنم :
مفاهیم پایه
- RDBMS : در واقع RDBMS یا سیستم مدیریت بانک های اطلاعاتی رابطه ای (Relational Data Base Management System) موتوری است که وظیفه دریافت و ذخیره سازی و برقراری ارتباطات بین Object های درون پایگاه داده را بعهده دارد.
- DBA : بطور خلاصه شخصی است که وظیفه مدیریت سرویس دهنده پایگاه داده را بعهده دارد و معمولاً وظایفی نظیر مدیریت کاربران ، گروههای بانک اطلاعاتی ، مدیریت منابع قابل اشتراک ، تعیین مجوزها و مواردی مشابه را عهده دار است.
- پایگاه داده : مجموعه ای از Object هایی نظیر جداول ، View ها ، انواع داده ها ، Trigger ها و غیره است که به وسیله RDBMS مدیریت می گردد .
- View ها : یک جدول مجازی است که می تواند ستونهای چند جدول را بطور همزمان با استفاده از روابط بین جداول به همراه داشته باشد و ازدیدگاه ساده سازی وامنیت از ویژگیهای باارزشی برخوردارند.
- ایندکس ها (Index) : هر ایندکس در بانک اطلاعاتی ترتیب قرار گرفتن صعودی یا نزولی یک یا چند ستون را در یک جدول شامل می گردد و کاربرد عمده آن روش دسترسی سریع به اطلاعات می باشد و بهترین روش برای برقراری ارتباط بین PK و FK در چند جدول نیز محسوب می گردد.
- (SP) Stored Procedures : مجموعه ای از دستورات به زبان برنامه نویسی پایگاه داده می باشد و از نظر منطقی مشابه یک روتین در زبانهای برنامه نویسی متداول می باشد.
- (UDF) User Define Function : مجموعه ای از دستورات به زبان برنامه نویسی پایگاه داده می باشندکه یک خروجی شامل یک داده یا یک جدول را ارائه می دهند و عملکرد آن از نظر منطقی بسیار مشابه توابع برنامه نویسی در زبانهای متداول است.
- (ESP) Extended Stored Procedures : این نوع از برنامه های قابل اجرا توسط پایگاه داده در واقع یک برنامه به زبان C و با نوع پروژه ESP در زبان C است که قادرند توابع یا عملیاتی را برای پایگاه داده به اجرا درآورده و درصورت نیاز خروجی لازم را به پایگاه داده منعکس نمایند و یک فایل از نوع DLL می باشد در این حالت لازم است که درون پایگاه داده یک نوع ارتباط ESP به DLL ایجاد شده تعریف گردد.
- Trigger : مجموعه ای از دستورات به زبان برنامه نویسی پایگاه داده می باشند که درصورتیکه یک Event از نوع اضافه ، حذف ، تصحیح ، ... روی یک جدول پایگاه داده اتفاق افتد اجرا می گردد. شایان ذکر است که در استفاده از Trigger ها بعلت اینکه ممکن است در مواردی باعث ایجاد سربار گردد می بایستی دقت بیشتری بعمل آید.
- ظرفیت پایگاه داده SQL Server 200X : به منظور آشنائی بیشتر مناسب است یک برآورد از حجم محدودیت هائی که در یک پایگاه داده SQL Server 200X می تواند متصور باشد در ذیل ارائه می گردد.
|
موضوع محدودیت |
میزان محدودیت |
ملاحظات |
|
اندازه سایز یک SP
طول یک رکورد اطلاعاتی دریافتی
تعداد ایندکس کلاستری در یک جدول
تعداد ایندکس غیرکلاستری در یک جدول
تعداد ستونهای انتخابی در هر ایندکس
تعداد فیلدهای درون یک PK یا FK
تعداد ستون های درون یک جدول
تعداد ستون قابل استخراج در دستور Select
تعداد ستون قابل ارائه در دستور Insert
سایز یک بانک اطلاعاتی
تعداد بانک اطلاعاتی درون یک Server
سطح پیشروی SP ها
سطح پیشرو Sub Query
تعداد Object های درون یک پایگاه داده
تعداد Trigger درون یک جدول |
250 MB
8060 Byte
1
249
16
16
1024
4096
1024
یک میلیون ترابایت
32767
32
32
حدود 2 میلیارد
به میزان محدودیت Object ها |
|
انشاالله در پست های بعدی به بحث برنامه نویسی در SQL می پردازیم.
موفق باشید.
سلام مجدد
توی این قسمت قصد دارم برنامه نویسی در اس کیو ال رو شروع کنم :
- برنامه نویسی SQL Server : اگر از برنامه نویسان باتجربه سئوال شود که چگونه می توان باسرعت و بادانستن یک زبان برنامه نویسی به زبان برنامه نویسی دیگر مهاجرت کرد احتمالاً یادگیری زبان برنامه نویسی جدید را به شکل ذیل تقسیم بندی خواهند کرد:
1) روش تعریف و مقداردهی به داده ها در زبان برنامه نویسی
2) دستورات شرطی در زبان برنامه نویسی
3) حلقه های تکرار در زبان برنامه نویسی
4) توابع داخلی درون زبان برنامه نویسی
5) طراحی توابع خارجی (UDF) و سابروتین ها در زبان برنامه نویسی
6) سایر دستورات مهم و کاربردی در زبان برنامه نویسی
حال با این رویکرد یک برنامه نویس باتجربه خیلی سریعتر می تواند در یک مجموعه به دنبال سئوالات خویش باشد و این طبقه بندی مراحل یادگیری زبان را کوتاه خواهد کرد حال با این رویکرد مطالب در زبان برنامه نویسی SQL Server را ادامه میدهیم :
1 - انواع داده ها : در هر زبان برنامه نویسی دانستن انواع مهم داده ها و محدودیت های هر نوع داده از اهمیت ویژه ای برخوردار است بدین منظور انواع داده ها یا انواع فیلدهای یک جدول اطلاعاتی به شرح جدول ذیل قابل استفاده می باشد شایان ذکر است که در این جدول مهمترین انواع داده های متداول که کاربرد وسیع تری دارد مدنظر قرار گرفته است.
|
|
|
|
|
|
|
bit |
عددی / صحیح |
1 و 0 |
|
|
|
TinyInt |
عددی / صحیح |
0 |
255 |
مناسب برای کد نسبت |
|
SmallInt |
عددی / صحیح |
- 32768 |
+32767 |
مناسب برای کد واحد سازمانی |
|
Int |
عددی / صحیح |
حدود منفی دو میلیارد |
حدود مثبت دومیلیارد |
مناسب برای فیلد شماره کارمندی |
|
BigInt |
عددی / صحیح |
حدود عدد 18 رقمی منفی |
حدود عدد 18 رقمی مثبت |
مناسب برای فیلد مبلغ |
|
Decimal یا Numeric |
عددی / اعشاری با طول ثابت |
-10 + 1 |
+10 - 1 |
|
|
Float |
عدد اعشاری بااعشار شناور |
10× -1,79 |
10× +1,79 |
|
|
Real |
عدد اعشاری بااعشار شناور |
10× -3,4 |
10× +3,4 |
|
|
Char |
رشته ای باطول ثابت |
8000 |
|
مناسب برای فیلد تاریخ شمسی |
|
VarChar |
رشته ای باطول متغیر |
8000 |
|
مناسب برای رشته های انگلیسی |
|
Text |
رشته ای باطول متغیر |
2GB |
|
مناسب برای رشته های انگلیسی |
|
nChar |
رشته ای باطول ثابت * با uc |
4000 |
|
|
|
nVarChar |
رشته ای باطول متغیر با uc |
4000 |
|
بسیار مناسب برای فیلدهای فارسی مانند نام خانوادگی |
|
nText |
رشته ای باطول متغیر با uc |
1GB |
|
بسیار مناسب برای متن های فارسی مثل متن نامه |
|
|
|
|
|
|
Binary |
باینری باطول ثابت |
8000 |
|
جهت ذخیره سازی فایل های باینری نظیر عکس ، فیلم ، متن، ... مناسب است ولی فضای بیشتری نسبت به Varbinary اشغال خواهد کرد. |
|
Varbinary |
باینری باطول متغیر |
8000 |
|
مناسب جهت ذخیره سازی فایل های binary نظیرفرمتPower Point , Excel Word ، تصاویرگرافیکی Tiff , Bmp ,Gif , … |
|
Image |
باینری با طول متغیر |
2GB |
|
مشابه Varbinary ولی با حجم خیلی مناسب تر |
|
Table |
- |
- |
- |
برای تبادل بین توابع، SP ها مناسب است |
|
Time Stamp |
عددی |
- |
- |
یک عدد منحصر به فرد در هر پایگاه که توسط پایگاه داده ایجاد می گردد |
|
UniqueIde ntifier |
عددی |
- |
- |
یک عدد منحصر به فرد در جدول که بطور اتوماتیک تولید می گردد ( به شکل سریالی ) |
- عملگرهای ریاضی ومنطقی: مشابه کلیه زبانهای برنامه نویسی زبان بانک اطلاعاتی SQL Server عملگرهائی برای انجام امور ریاضی و منطقی بهره می جوید که در جدول ذیل ارائه گردیده است:
|
|
|
|
|
||||
|
علامت |
عملکرد |
علامت |
عملکرد |
علامت |
عملکرد |
= |
مساوی |
|
IS |
مقایسه شباهت |
+ |
جمع |
and |
و |
> |
کوچکتر |
|
IN |
وجود در یک مجموعه |
- |
تفریق |
or |
یا |
=> |
کوچکترمساوی |
|
BetWeen |
وجود در یک محدوده |
* |
ضرب |
Not |
نیست |
< |
بزرگتر |
|
Like |
وجود شباهت رشته ای |
/ |
تقسیم |
|
|
=< |
بزرگترمساوی |
|
|
|
% |
باقیمانده تقسیم |
|
|
<> |
مخالف |
سلام دوباره
آموزش رو ادامه می دم :
- تعریف یک متغیر : نامگذاری متغیرها در SQL Server مشابه همه زبانهای برنامه نویسی از ترکیب حروف انگلیسی و اعداد و برخی از کارکترها مشروط به اینکه نام متغیرها با اعداد شروع نشود را شامل می گردد و براساس قالب ذیل قابل ارائه است و به منظور جلوگیری از شباهت نام فیلد و نام متغیر در SQL Server کلیه متغیرها با حرف @ معرفی می گردند.
] , … [ نوع متغیر نام متغیر @ Declare
بعنوان مثال درصورتیکه قرار است متغیری در دامنه 0 تا 255 تعریف شود بدین گونه عمل می نمائیم.
@x TinyInt Declare
مقداردهی به متغیرها برخلاف زبانهای برنامه نویسی غیرپایگاه داده ای از کلمات کلیدی Set یا Select به شکل ذیل صورت می گیرد ولی پیشنهاد می گردد بعلت شباهت به دستور Select از کلمه Set استفاده گردد.
عبارت = نام متغیر@ Set
یا
[ , … ]عبارت = نام متغیر@ Select
بعنوان مثال داریم :
14 = @x Set
y @*+2 @x = @x Set
2- دستورات شرطی : دستورات شرطی در زبان SQL Server به دستور If ، تابع Case محدود می گردد قبل از تشریح هریک از دستورات فوق می بایستی مفهوم بلوک دستورات در زبان SQL Server تشریح گردد که به شکل ذیل یک بلاک دستورات ایجاد می گردد.
Begin
دستورات
End
و درصورتیکه تعداد دستورات یک بلاک تنها شامل یک دستور باشد از نوشتن کلمات Begin و End می بایستی صرف نظر گردد. با این توضیحات شکل کلی دستور شرطی If به شکل ذیل خواهد بود :
عبارت شرطی IF
بلوک یا دستور
[
ELSE
بلوک یا دستور
[
همانطور که از ظاهر دستور مشاهده می گردد در صورتیکه عبارت شرطی صحیح باشد دستورات بخش A و در غیراینصورت دستورات بخش B اجرا خواهد شد و در صورتیکه نیازی به ساختار ELSE نباشد می توان از این بخش صرف نظر نمود ، حال براساس توضیحات قبل هر بلوک درصورت نیاز می بایستی در محدوده یک Begin و End محصور گردد. بعنوان مثال داریم:
Declare @x Int , @y Int
Set @x= 200
Set @y= 300 - @x
IF @x > @y
Set @y = @x + 2
ELSE Begin
Set @y = @x + 3
Set @x = @x + 1
END
در این قطعه برنامه چون در بخش ELSE بیش از یک دستور بکار رفته است بنابراین از بلاکBegin ، End استفاده شده است.
در قسمت بعد دستور Case رو معرفی می کنم.
موفق باشید
باتوجه به اینکه ساختار Case یک مقدار بازگشتی ارائه می دهد. بنابراین می توان گفت که ساختارCase عملکرد تابعی دارد و در دو شکل کلی ذیل قابل ارائه است.
اختلاف ظاهری دو ساختار نشان می دهد که ساختار 2 قدرتمندتر از ساختار 1 است چون بنحوی ساختار 1 را در خود جای می دهد برای درک بیشتر به مثال های ذیل دقت کنید:
Declare @x Int
Set @x = ( Case @y
When 1 Then 102
When 2 Then 203
When 3 Then 304
ELSE 1000
END)
دقت گردد که چون ساختارCase عملکرد تابعی دارد و مقداری را باز می گرداند بنابراین از علامت ( ) مناسب است استفاده گردد. حال اگر این قطعه برنامه با ساختار 2 ایجاد گردد خواهیم داشت:
Declare @x Int
Set @x = ( Case
When @y=1 Then 102
When @y=2 Then 203
When @y=3 Then 304
ELSE 1000
END)
باتوجه به اینکه ساختار 2 ازعبارت شرطی بهره می جوید قدرتمندی بیشتری را ارائه می دهد بعنوان مثال:
Declare @x Int
Set @x = Case When @y BetWeen 2 and 10 Then 300
When @y=15 or @y=17 Then 310
When @y=18 or @y>=20 Then 320
When @y+@z < = 30 Then 330
When Not @z < = 40 Then @z
ELSE @y END
بعدها خواهید دید که در دستوراتی نظیر Select استفاده از Case در مواردی بسیار مفید واقع خواهد شد.
در قطعه برنامه ذیل نوع داده های A تا G را تعیین کنید:
Set @A = Case
When @B Then 10
When @C=0 Then @D
When @D=@E Then Len (@F)
When @F=@G Then 20
END
در پست بعدی در مورد حلقه های تکرار بحث می کنیم.
سلام بر همه
در این پست می خوام در مورد حلقه های تکرار بگم :
به منظور پیاده سازی ساختار حلقه تکرار در پایگاه داده SQL Server تنها از حلقه While استفاده می گردد که در دو شکل ذیل قابل پیاده سازی است:
در شکل ساختار تا زمانیکه عبارت شرطی درست باشد تک دستور اجرا می گردد. ولی در ساختار پیچیده تر کلیه دستورات بلاک END , Begin درصورت صحیح بودن عبارت شرطی اجرا خواهند شد وکلمه کلیدی Break جهت قطع حلقه وContinue حرکت به سمت ابتدای حلقه تکرار خواهد بود.
بعنوان مثال:
Declare @x Int , @y BigInt
Set @x = 0
Set @y = 1
While @x < 10 Begin
Set @x = @x + 1
Set @y = @y * @x
END
و یا در مثال ذیل از دستور Break استفاده گردیده است.
Declare @x Int , @y BigInt
Set @x = 0
Set @y = 1
While 1=1 Begin
Set @x = @x + 1
IF @x>= 10 Break
Set @y = @y * @x
END
پست بعدی در مورد توابع داخلی اس کیو ال خواهد بود. همچنان با ما همراه باشید.
سلام
خب بریم سراغ ادامه مطالب :
در هرزبان برنامه نویسی آشنائی با توابع داخلی مهم زبان از اهمیت ویژه ای برخوردار است ، دانستن پارامترهای ورودی و عملکرد خروجی تابع داخلی قابلیت برنامه نویسی را افزایش داده و باعث طراحی نرم افزارهای بسیار پیچیده تر خواهد شد بدین منظور تعدادی از توابع داخلی مهم در SQL Server تشریح می گردد.
این تابع تعدادی کارکتر از سمت چپ یک رشته استخراج می نماید و در شکل کلی ذیل بکار می رود.
این تابع تعدادی کارکتر از سمت راست یک رشته استخراج می نماید و در شکل کلی ذیل بکار می رود.
این تابع تعدادی کارکتر از نقطه ای از یک رشته را استخراج می کند و در شکل کلی ذیل بکار می رود.
در این تابع درصورتیکه پارامتر تعداد ذکر نگردد از نقطه شروع تا انتهای رشته فرآیند استخراج زیر رشته صورت می پذیرد. بعنوان مثال در دستور ذیل مقدار ذخیره شده در متغیر x رشته Ali خواهد بود.
Set @x = Left (´And´, 1) + SubString (´Hello´ , 3 , 1 ) + Left (´in´ , 1 )
این تابع فضاهای خالی از سمت چپ یک رشته را حذف می کند و در شکل کلی ذیل بکار می رود:
این تابع فضای خالی از سمت راست یک رشته را حذف می کند و در شکل کلی ذیل بکار می رود:
بعنوان مثال در دستور ذیل کلیه فضاهای خالی دو طرف رشته حذف خواهند شد :
Set @x = LTrim (RTrim (´ Hello ´ )
این تابع حروف یک رشته را به حروف بزرگ تبدیل خواهد کرد و به شکل کلی ذیل بکار می رود.
این تابع حروف یک رشته را به حروف کوچک تبدیل خواهد کرد و به شکل کلی ذیل بکار می رود.
این تابع تعداد کاراکترهای یک رشته را محاسبه می کند و در شکل کلی ذیل بکار می رود.
برنامه ای بنویسید که یک رشته را معکوس نماید.
Declare @x VarChar (50) , @C TinyInt , @y VarChar (50)
Set @x = ´Hello´
Set @y = ´´
Set @C = 0
While @C < Len (@x) Begin
Set @C = @C + 1
Set @y = SubString (@x , @C , 1) + @y
END
خب دوستان, تا اینجای مطلب رو داشته باشین تا در قسمت های بعدی ادامه توابع داخلی رو بگم.
موفق باشید
سلام
خب ادامه توابع داخلی :
این تابع کاراکتر موردنظر را باتوجه به کد اسکی آن باز می گرداند و به شکل ذیل بکار می رود.
این تابع یک رشته را معکوس می کند و در شکل کلی ذیل بکار می رود.
این تابع یک مجموعه رشته ای را کاراکتر به کاراکتر ترجمه می کند و در شکل کلی ذیل بکار می رود.
بعنوان مثال داریم :
Set @x = Replace (´Hello´,´ale´,´xyz´)
که در نتیجه حروف ale نظیر به نظیر به حروف xyz تبدیل خواهند شد ومتغیر x شامل رشته´Hzyyo´ خواهد بود.
این تابع به اندازه اعلام شده فضای خالی ایجاد خواهد کرد و در شکل کلی ذیل بکار می رود.
این تابع به شکل( )Username نام کاربری که هم اکنون بهSQL Server متصل شده است را باز می گرداند.
این تابع قدر مطلق یک عدد را تعیین می کند و معادل xدر ریاضی است: (عدد) ABS
این تابع جزء صحیح یک عدد را تعیین می کند ومعادل[x] درریاضی است:(عدد) Floor
درپایگاه داده SQL Server عملگری برای توان وجود ندارد و می بایستی با استفاده از تابع Power به شکل ذیل استفاده گردد.
درصورتیکه درنظر باشد ریشه دوم یک عدد مثبت حاصل شود از تابع Sqrt به شکل ذیل استفاده می گردد.
این تابع بسیار مفید اعتبارسنجی لازم جهت Null بودن یک مقدار را بعهده دارد و به شکل کلی ذیل بکار می رود.
با ادامه توابع داخلی در پست بعد با ما همراه باشید.
سلام
خب ادامه توابع داخلی :
این تابع کاراکتر موردنظر را باتوجه به کد اسکی آن باز می گرداند و به شکل ذیل بکار می رود.
این تابع یک رشته را معکوس می کند و در شکل کلی ذیل بکار می رود.
این تابع یک مجموعه رشته ای را کاراکتر به کاراکتر ترجمه می کند و در شکل کلی ذیل بکار می رود.
بعنوان مثال داریم :
Set @x = Replace (´Hello´,´ale´,´xyz´)
که در نتیجه حروف ale نظیر به نظیر به حروف xyz تبدیل خواهند شد ومتغیر x شامل رشته´Hzyyo´ خواهد بود.
این تابع به اندازه اعلام شده فضای خالی ایجاد خواهد کرد و در شکل کلی ذیل بکار می رود.
این تابع به شکل( )Username نام کاربری که هم اکنون بهSQL Server متصل شده است را باز می گرداند.
این تابع قدر مطلق یک عدد را تعیین می کند و معادل xدر ریاضی است: (عدد) ABS
این تابع جزء صحیح یک عدد را تعیین می کند ومعادل[x] درریاضی است:(عدد) Floor
درپایگاه داده SQL Server عملگری برای توان وجود ندارد و می بایستی با استفاده از تابع Power به شکل ذیل استفاده گردد.
درصورتیکه درنظر باشد ریشه دوم یک عدد مثبت حاصل شود از تابع Sqrt به شکل ذیل استفاده می گردد.
این تابع بسیار مفید اعتبارسنجی لازم جهت Null بودن یک مقدار را بعهده دارد و به شکل کلی ذیل بکار می رود.
بعنوان مثال داریم :
Set @x = Isnull (@y,0)
در این حالت درصورتیکه متغیر y مقدار Null را داشته باشد مقدار x صفر خواهد بود درغیراینصورت مقادیر x و y مساوی خواهند شد.
با ادامه توابع داخلی در پست بعد با ما همراه باشید.
سلام
خب ادامه توابع داخلی :
این تابع تاریخ و ساعت جاری Server را باز می گرداند.
به منظور تبدیل انواع داده ها به یکدیگر از این تابع تحت شرایط خاصی استفاده می گردد که قالب کلی آن به شکل ذیل خواهد بود.
بعنوان مثال خواهیم داشت:
Set @x = Convert (VarChar (10) , @y )
که در این دستور متغیر @y به یک نوع داده ای کاراکتری بدون Unicode و حداکثر طول 10 بایت تبدیل شده و در متغیر x جانشین می گردد.
از این تابع بسیار مفید به منظور تعیین مختصات قرار گرفتن یک رشته فرعی در یک رشته اصلی استفاده می گردد که در شکل کلی ذیل قابل ارائه می باشد.
به مثال ذیل دقت کنید:
IF CharIndex (@x , @y) < > 0
Set @z = ´Ok´
ELSE
Set @z = ´Not´
به امید خداوند در قسمت بعد به بحث توابع خارجی می پردازیم.
موفق باشید
سلام
دوستان اگه تا اینجا نظر و یا سوالی دارند بفرمایند. خوب نیست که همه پست ها رو من بزنم.
موفق باشید
یک SP در واقع یک برنامه درون پایگاه داده است که از مجموعه ای از دستورات تشکیل شده است و می تواند مقدار یا جدولی را به برنامه صداکننده انتقال دهد و در شکل کلی ذیل قابل پیاده سازی است:
نام Create Proc[edure] SP
[
] پیش فرض =[ نوع پارامتر 1 [AS] پارامتر 1
] ] پیش فرض =[ نوع پارامتر 2 [AS] پارامتر 2, [
]
AS ]
--دستورات
همانطور که مشاهده می گردد هر SP با یک نام منحصر به فرد قابل تعریف است و درصورتیکه این برنامه تعدادی ورودی داشته باشد می بایستی در ابتدای SP تعیین گردد و اگر قرار است درصورت عدم ارائه پارامتر مقدار پیش فرض به برنامه انتقال یابد می توانید از مقدار پیش فرض هر پارامتر استفاده نمائید پس از کلمه کلید AS کلید دستورات قابل اجرا خواهند بود.
دستور ساده Select قادر است مقداری را بازگرداند و به شکل ذیل بکار می رود.
]... عبارت 2 , [ عبارت 1 Select
بعنوان مثال خواهیم داشت :
Select 2*Len (´Hello´) + 1
که در این حالت مقداد عدد 11 به برنامه اصلی باز خواهد گشت.
پس از طراحی هر SP نیاز است که SP طراحی شده اجرا گردد و به اشکال ذیل یک SP اجرا خواهد شد.
(پارامترهای sp در صورت وجود) نام SP
(پارامترهای SP در صورت وجود) نام SP EXEC [ute]
برنامه ای بنویسید که یک رشته ساعت با ساختار hh:mm:ss را به ثانیه تبدیل نماید.
Create Proc Time2Val
@T Char(8)
AS
Declare @h TinyInt , @m TinyInt , @s TinyInt
Set @h = Convert (TinyInt , SubString (@T,1,2))
Set @m = Convert (TinyInt , SubString (@T,4,2))
Set @s = Convert (TinyInt , SubString (@T,7,2))
Select @h*3600 + @m*60 + @s
درمبحث به توابع تعریف شده توسط کاربر می پردازیم.
موفق باشید
سلام
یکی از قابلیت های پایگاه داده SQL Server ایجاد UDF است که کاربران قادرند متناسب با نیاز در هر پروژه به طراحی آن اقدام نمایند و دارای شکل کلی ذیل می باشد.
هرUDF طراحی شده بعنوان یک تابع در کلیه دستورات SQL قابل استفاده است از طرفی درصورتیکه از EXECute استفاده گردد هر UDF می تواند مانند یک SP اجرا گردد همچنین در یک تابع UDF خروجی می تواند بصورت یک جدول باشد در این حالت از کلمه Table به جای نوع مقدار برگشتی استفاده خواهد شد و مقدار بازگشتی یک دستور Select خواهد بود که در مقابل دستور Return بکار خواهد رفت و تعداد پارامترهای تعریف شده در هر UDF حداکثر 1024 عدد خواهد بود و مشابه SP درصورتیکه پارامتر موردنظر ارائه نگردد پیش فرض بعنوان مقدار ورودی پارامتر مدنظر قرار خواهد گرفت نکته قابل ذکر در این خصوص به شرح ذیل می باشد:
- درهنگام اجرای یک تابع نام Owner می بایستی ذکر گردد بعنوان مثال ( dbo )
- تعدادی از دستورات درون طراحی UDF قابل اجرا نمی باشند.
- از (ESP) Extended Stored Procedure درون تابع می توانید استفاده نمائید.
تابعی بنویسید که فاکتوریل یک عدد را محاسبه کند.
Create Function Fact (@n TinyInt)
Returns BigInt
AS
Begin
Declare @RtnValue BigInt
IF @n = 0 or @n = 1
Set @RtnValue = 1
ELSE
Set @RtnValue = dbo.Fact (@n – 1) *@n
Return @RtnValue
END
حال فرض کنید که قرار است تابع فوق در یک برنامه استفاده گردد و قرار باشد سری محاسبه گردد بدین منظور به شکل ذیل عمل خواهیم نمود:
Declare @S BigInt , @C TinyInt
Set @S = 0
Set @C = 0
While @C < 10 Begin
Set @C = @ C + 1
Set @S = @ S + dbo.Fact (@C )
END
Select @S
خب دوستان تا اینجا توابع به پایان رسید. در بحث بعدی سایر دستورات کاربردی در اس کیو ال رو بررسی می کنیم.
موفق باشید
سلام
به بحث سایر دستورات کاربردی در اس کیو ال می پردازیم :
مشابه اکثریت زبانهای برنامه نویسی این دستور ادامه برنامه را به نقطه ای دیگر که دستور Goto تعیین می کند انتقال می دهد و در شکل ذیل ارائه می گردد:
نام برچسب Goto
و نام برچسب تابع قانون نامگذاری متغیرهاست و نقطه ای که برچسب شروع می گردد با نام برچسب و علامت : معرفی می گردد. بعنوان مثال:
IF @x>0 Goto Endof
ELSE
Set @y = @y + 1
Set @x = ABS (@x)
Endof:
این دستور ادامه اجرای یک SP را پایان می دهد و به برنامه اصلی بازگشت می نماید.
درصورتیکه درنظر است دستوری در SQL Server اجرا گردد در دو حالت با استفاده از EXEC[ute] عمل انجام خواهد شد.
ساختارهای اول و دوم :
( متغیر رشته ای ) EXEC[ute] دستور EXEC[ute]
در ساختار 1 دستور اعلام شده توسط SQL Server اجرا خواهد شد درصورتیکه در ساختار 2 عبارت رشته ای که می تواند کاملاً متغیر باشد توسط دستور EXEC[ute] اجرا می گردد که قابلیت فوق العاده ای را ایجاد خواهد کرد بدین منظور به مثال های ذیل توجه فرمائید.
مقدار "12:13:14" را با استفاده از تابع Time2Val حساب کنید.
(EXEC dbo.Time2Val (´12:13:14´
با استفاده از دستور EXEC[ute] مقدار دو متغیر را جمع کنید:
Declare @x Int , @y Int , @S VarChar (4000)
Set @x = 10
Set @y = 20
Set @S=´Select´+ Convert (VarChar (10),@x) +´+´+ Convert (VarChar(10),@y)
EXEC (@S)
همانطور که مشاهده می گردد مقدار بازگشتی عدد 30 خواهد بود بدون اینکه از دستور Select بصورت مستقیم استفاده شده باشد.
با ادامه مطلب در مورد سایر دستورات کاربردی با ما همراه باشید.
موفق باشید
سلام مجدد
ادامه دستورات :
درصورتیکه قرار است عملیات حساسی روی پایگاه داده به خصوصی در زمان ذخیره سازی اطلاعات صورت گیرد استفاده از TransAction باعث می گردد که حاشیه اطمینان به %100 افزایش یابد و عملیاتی نظیر قطع ناگهانی برق و یا سایر موارد باعث تخریب عملیات نگردد ( نظیر عملیات حساب بانکی ) در این حالت با اعلام Begin TransAction به Server اعلام می گردد که شروع فرآیند حساس آغاز گردیده است.
[] درصورتیکه کلیه فرآیندهای موردنظر در یک زیر برنامه با موفقیت صورت پذیرد با استفاده از Commit TransAction می توان انتقال اطلاعات را به پایگاه داده با حاشیه اطمینان کامل صادر نمود.
[] درصورتیکه در هر مرحله پس از صدور Begin TransAction به دلایلی تصمیم به انصراف از عملیات انجام شده مدنظر باشد با استفاده از RollBack TransAction کلیه فرامین ارسال اطلاعات به پایگاه داده پس از دستور Begin TransAction ابطال خواهد شد.
با استفاده از این دستور یک بانک اطلاعاتی جهت انجام عملیات بعدی فعال می گردد و به شکل ذیل مورد استفاده قرار می گیرد.
نام پایگاه داده Use
- مسئله ) تابعی بنویسید که سری ذیل را محاسبه کند ( n = 20 )
- مسئله ) تابعی بنویسید که مقدار ماکزیمم دو عدد را محاسبه کند.
- مسئله ) تابعی بنویسید که یک عدد صحیح را به ساختار hh:mm:ss تبدیل نماید.
خب دوستان خسته نباشید. تا این جا فصل اول در مورد دستورات برنامه نویسی به پایان رسید.
به امید خدا در ادامه فصل دوم را با عنوان دستورات تبادل اطلاعات با بانک اطلاعاتی شروع خواهیم کرد.
با همراه باشید
موفق باشید