0

آموزش گام به گام SQL Server

 
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server

سلام

 

- دستور Insert  :  به منظور ایجاد یک رکورد جدید در یک جدول از دستور Insert  به شکل کلی ذیل استفاده می گردد.

 

نام جدول Insert  [ Into ] 

] ( ...  , فیلد 2 ,  فیلد 1 ) [

Values

( ... ,  مقدار 2  ,  مقدار 1 )

 

درصورتیکه اسامی فیلدها در دستور مذکور ارائه نگردد کلیه ستونهای جدول اشاره شده مدنظر قرار        می گیرد و درخصوص مقادیر به ازای هر فیلد اعلام شده می بایستی مقدار متناسب با نوع آن ارائه گردد در این حالت می توان از کلمات Null  و Default  به منظور درج در ستون موردنظر استفاده کرد که Null  مقدار تهی را به فیلد موردنظر ارسال نموده و مقدار Default  از مقدار پیش فرض تعریف شده برای فیلد استفاده خواهد کرد.

 

مثال :  یک رکورد جدید به جدول پرسنلی اضافه نمائید.

 

Insert  Person

, 1 , 2 ) ´ محمد´ , ´ علیزاده ´ , ´ علی´  , Values  ( 200

 

که در این حالت چون فیلدها در دستور Insert  اعلام نشده اند بنابراین هر 6 فیلد جدول Person به ترتیب مدنظر قرار گرفته است.

 

مثال :  یک رکورد جدید به جدول پرسنلی با اشاره به نام فیلدها اضافه نمائید.

 

Insert  Into  Person  (PrsID , UnitID , CityID, PFather , PName , PFamily )

´) رضائی´ , ´ رضا ´ , ´ حسین´  Values ( 201, 2 , 3 ,

 

دستور Update در پست بعد ...

پنج شنبه 30 تیر 1390  11:45 AM
تشکرات از این پست
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server

سلام مجدد

 

- دستور UpDate  :  بااستفاده از دستور UPDate  رکوردهای اشاره شده تغییر خواهند کرد و در شکل کلی ذیل مورد استفاده قرار می گیرد.

]  Set  نام مستعار [ AS ] [       نام جدول     UpDate

,  مقدار 1  =  فیلد 1

,  مقدار 2  = فیلد 2

 


]  عبارت شرطی   [ Where

 

دراین حالت هر فیلد با مقدار تعیین شده که بانوع فیلد تناسب دارد جانشین خواهد شد و این عملیات تا زمانیکه شرط صادق باشد ادامه می یابد. بدیهی است که درصورت عدم ارائه شرط کلیه رکوردهای جدول تحت تاثیر تغییرات واقع خواهند شد که شایسته است دقت بیشتری بعمل آید در واقع در مواقعی که قرار است یک رکورد خاص تحت تغییرات قرار گیرد فیلد PK  در جدول موردنظر بهترین کاندیدا جهت عبارت شرطی است.

مثال :  بااستفاده از دستور UpDate  مقدار اطلاعات پرسنلی شخص با شماره کارمندی 200  را تغییر دهید.

UpDate   Person  Set

´ ,رضائی پورPFamily  = ´

UnitID = 1

Where  PrsID = 200

 

 

که در این مثال ستونهای نام خانوادگی و واحد سازمانی تحت تغییرات برای شخص به کارمندی 200  قرار گرفته اند.

 

مثال :  بااستفاده از دستور UpDate  حقوق کارکنان را %20  افزایش دهید.

اگر فرض کنیم در جدول پرسنلی فیلد Price  حقوق کارمندان باشد بنابراین خواهیم داشت:

 

UpDate  Person  Set

Price = Convert ( BigInt , Price * 1.2 )

 

مثال :  فرض کنید که کد تهران = 1 و کد اصفهان = 2  باشد دستوری بنویسیدکه حقوق کارکنان دو شهر را %25  افزایش دهد:

 

UpDate  Person  Set  Price = Convert (BigInt , Price* 1.25 )

( 39 )

 

 
Where  CityID In (1,2)

مثال :  دستوری بنویسید که حقوق کارکنان هر واحد را به نسبت درصد جمعیت هر شهر تغییر دهد.

 

UpDate  Person  P  Set  Price = Price * ( 1 +

( Select  Isnull (C.PoPulate ,0) Form  Unit U

Left  Join City  C On (C.CityID = U.CityID)

Where  U.UnitID = P.UnitID)

 
 
 


( Select  Sum (PoPulate )  From  City ) )

 

 

 

همانطور که مشاهده می گردد ابتدا برای هر شخصی به واحد سازمانی و از آنجا به شهری که آن واحد قرار دارد ارجاع داده می شد تا جمعیت آن شهر تعیین گردد و در مخرج کسر نیز جمعیت کل شهرستانها محاسبه می گردد در واقع فرمول ذیل مورد محاسبه قرار گرفته است:

 

               (                                                                                  + 1 )  *  حقوق قبلی = حقوق جدید

 

 

 

از طرفی مشاهده می گردد که مخرج کسر یعنی جمعیت کل شهرستانها برای هر فرد در حال محاسبه است که فرآیند به روزرسانی را کندتر خواهد کرد بدین منظور اگر از یک SP  استفاده شود می توان افزایش سرعت را ایجاد نمود بنابراین خواهیم داشت:

 

Create  Proc  NewPrice AS

Declare   @SumPoP  BigInt

Set   @SumPoP = ( Select  Sum (PoPulate )  From City )

Begin  Tran

UpDate  Person  P  Set  Price = Price * ( 1 +

( Select  Isnull (C.PoPulate  , 0 )  From  Unit  U

Left  Join  City  C  On ( C.CityID = U.CityID)

Where  U.UnitID = P.UnitID ) / @ SumPoP )

Commit  Tran

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

در پست بعد دستور Delete رو خواهم گفت. همچنان با ما باشید

پنج شنبه 30 تیر 1390  11:45 AM
تشکرات از این پست
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server

سلام

این پست آخرین پست فصل دوم است.

 

- دستور Delete  :  حذف رکوردهای یک جدول با استفاده از دستور Delete  صادر می گردد که در قالب کلی ذیل مورد استفاده قرار می گیرد:

 

]  عبارت شرطی    [ Where  ] نام مستعار [ [AS]       نام جدول   Delete   [From] 

 
 

( 40 )

 
 


و در صورتیکه از عبارت شرطی و دستور Where  صرف نظر گردد حذف کلیه رکوردهای جدول را به همراه خواهد داشت.

 

مثال : درجدول تحصیلات افراد تحت تکفل دستوری بنویسید که رکوردهای کارکنانی که شماره کارمندی زوج دارند حذف شوند.

Delete  ChadLvL  C  Where  C.PrsID %2 = 0

 

مثال  :  جدول تحصیلات افراد تحت تکفل در سیستم پرسنلی را خالی از رکورد نمائید.

 

Delete  ChdLvL

 

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

پست بعد فصل سوم رو با عنوان مباحث تکمیلی اس کیو ال شروع خواهم کرد.

موفق باشید

پنج شنبه 30 تیر 1390  11:46 AM
تشکرات از این پست
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server

سلام

فصل سوم

مباحث تکمیلی :

 

در این فصل هدف مباحث تکمیلی و تکنیکی بیشتر مدنظر قرار خواهد گرفت. طراحی ایندکس ها با استفاده از تکنولوژی Rushmore و طراحی ESP و View ها و Trigger ها از اهم موضوعات این فصل می باشد اما قبل از هرچیز مواردی خاص که مباحث مطرح شده را تکمیل می کند در ابتدا مورد بررسی قرار می گیرد.

 

دستور Declare :

            هنگام استفاده از دستور Declare  به منظور ایجاد یک متغیر جدید درصورت لزوم اندازه داده می بایستی تعیین گردد اما درصورتیکه درخصوص اینگونه موارد طول داده اعلام نگرددپیش فرض ازطرف SQL Server جانشین خواهد شد که می بایستی دقت گردد بدین منظور به جدول ذیل دقت نمائید.

 

نوع داده

طول پیش فرض

عملکرد

رشته ای

باینری

Char

1

1

در دستورات تبدیل Cast و Convert پیش فرض طول رشته ای 30  است

NChar

1

2

در دستورات تبدیل Cast و Convert پیش فرض طول رشته ای 30  است

VarChar

1

1

در دستورات تبدیل Cast و Convert پیش فرض طول رشته ای 30  است

nVarChar

1

2

در دستورات تبدیل Cast و Convert پیش فرض طول رشته ای 30  است

binary

1

1

در دستورات تبدیل Cast و Convert پیش فرض طول   30  است

Varbinary

1

1

در دستورات تبدیل Cast و Convert پیش فرض طول  30  است

Numeric

18,0

به اندازه ذخیره شده

طول حداکثر 38  می باشد

Decimal

18,0

به اندازه ذخیره شده

طول حداکثر 38  می باشد

Dec

18,0

به اندازه ذخیره شده

طول حداکثر 38  می باشد

 

در پست بعد مثالی از این مبحث را بیان خواهم کرد.

پنج شنبه 30 تیر 1390  11:48 AM
تشکرات از این پست
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server

سلام

 

مثالی از Declare :

مثال) درقطعه برنامه مقابل اگربجای?  هریک از انواع داده nVarChar ,VarChar ,nChar ,Char باشد خروجی چقدر خواهد بود ؟

 

Declare     @x     ? (15)

Set     @x = ´ Hello´

Select     Len ( @x ) , DataLength ( @x )

 

 

پس از اجرای خروجی برای چهار حالت ذکر شده پاسخ به شکل جدول ذیل خواهد بود.

 

نام داده

مقدار Len

تعداد Data Length

Char

5

15

nChar

5

30

VarChar

5

5

nVarChar

5

10

 

 

مثال) در قطعه برنامه مقابل مقدار خروجی چقدر است؟

 

Select     Len ( Convert (nChar , 300)) ,

DataLength (Cast (300 As nChar))

 

 

پس از اجرای برنامه به ترتیب خروجی 3,60  خواهد بود.

 

مثال) برنامه ای بنویسید که جمع طول رشته ای و باینری یک متغیر nVarChar  را بدست دهد.

 

Declare     @x     nVarChar (4000) , @L1  SmallInt , @L2  SmallInt

Set      @x = ´ Hello´

Select    @L= Len ( @x ) , @L2 = DataLength ( @x )

Select    @L1 + @L2  AS  L

 

در پست های بعد با ما همراه باشید ...

پنج شنبه 30 تیر 1390  11:49 AM
تشکرات از این پست
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server

سلام

 

طبقه بندی توابع داخلی :

            در فصول گذشته تعدادی تابع داخلی مفید جهت استفاده معرفی گردید تعداد توابع داخلی در هر زبان برنامه نویسی ابزارهای مفیدی جهت توسعه نرم افزار به شمار می روند ولی تعداد آنها در مواردی بسیار زیاد است که فراگیری آنها کمی مشکل به نظر می رسد بدین منظور تعدادی از توابع داخلی مهم در   SQL Server  جهت استفاده های بعدی طبقه بندی شده است.

 

توابع رشته ای

نام تابع

عملکرد تابع

مثال

نتیجه

Ascii

کداسکی یک کارکتر را باز می گرداند

Select Ascii (´A´)

65

Char

کارکتر معادل یک کداسکی را باز می گرداند

Select   Char (65)

´A´

CharIndex

موقعیت قرار گرفتن یک زیر رشته را در یک رشته اعلام می دارد

Select CharIndex (´o´,´Hello´)

5

Left

تعدادی کارکتر از سمت چپ یک رشته را استخراج می کند

Select Left (´Hello´ , 2)

´He´

Len

طول یک رشته را باز می گرداند

Select Len (´Hello´)

5

توابع رشته ای

نام تابع

عملکرد تابع

مثال

نتیجه

Lower

یک مجموعه رشته ای را به حروف کوچک تبدیل می کند

Select Lower (´Hello´)

´hello´

LTrim

فضای خالی یک رشته را از سمت چپ حذف می کند

Select LTrim (´     Hello´)

´Hello´

NChar

کارکتر مربوط به یک عدد را در unicode استاندارد باز می گرداند و عددی بین 0 تا 65535 می باشد

Select NChar (65)

´A´

Replace

یک رشته را کارکتر به کارکتر ترجمه      می کند

Select Replace (´abc´,´a´,´x´)

´xbc´

Replicate

یک رشته را به تعداد اعلام شده تکرار      می کند

Select Replicate (´ok´,2 )

´okok´

Reverse

یک رشته کارکتری را معکوس می کند

Select Reverse (´Hello´)

´olleH´

Right

تعدادی کارکتر را از سمت راست یک رشته استخراج می کند

Select Right (´Hello´,2 )

´lo´

RTrim

فضای خالی یک رشته را از سمت راست حذف می کند

Select RTrim (´Hello    ´)

´Hello´

Space

به تعداد اعلام شده کارکتر خالی ایجاد         می نماید

Select Space (5)

´          ´

 

 

 

Str

یک مقدار عددی را به یک رشته با طول ثابت ونقطه شناور ثابت تبدیل می کند و پیش فرض طول 10 بایت و پیش فرض اعشار صفر است

Select Len ( Str (500.5) )

10

 

Select Str (500.3,5,2 )

´500.3´

Select Str (500.3188,7,3 )

´500.319´

Stuff

تعدادی کارکتر را در درون یک رشته حذف و جانشین می کند

Select Stuff (´Hello´,2,1,´ok´ )

´Hokllo´

Substring

تعدادی کارکتر را از یک رشته استخراج      می کند

Select Substring (´Hello´,3,2 )

´ll´

Unicode

یک عدد صحیح که نشانه مقدار Unicode یک رشته است را باز می گرداند

Select Unicode ( @Mystr )

-

Upper

یک مجموعه رشته ای را به حروف بزرگ تبدیل می کند

Select Upper (´Hello´)

´HELLO´

 

توابع محاسباتی در پست بعد. با ما همراه باشید ...

پنج شنبه 30 تیر 1390  11:50 AM
تشکرات از این پست
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server

سلام

توابع محاسباتی :

 

توابع محاسباتی

نام تابع

عملکرد تابع

مثال

نتیجه

ABS

معادل قدرمطلق یک عدد در ریاضی است

Select ABS (-1.7)

1.7

Ceiling

یک عدد صحیح بزرگتر از عدد ورودی را ارائه می دهد

Select Ceiling (123.45)

124

Exp

معادل ex   در ریاضی است

Select Exp (0)

1

Floor

معادل جزء صحیح x  یعنی [x]  در ریاضی می باشد

Select Floor (-2.7)

-3

Log

مقدار لگاریتم در مبنای عدد e (نپر) را ارائه می دهد

Select Log (Exp (1) )

1

Log10

مقدار لگاریتم در مبنای 10  را ارائه می دهد

Select Log10 (100)

2

Power

یک عدد را به توان عدد دیگر می رساند که معادل ab    می باشد

Select Power (10,2)

100

Rand

یک عدد تصادفی بین 0  تا 1  تولید می کند

Select Rand ( )

-

Round

یک عدد را تحت شرایطی گرد می کند

Select Round (123.4567,2 )

123.4600

Sign

علامت یک عدد را باز می گرداند و شامل اعداد +1 , -1 , 0  خواهد بود

Select Sign ( -3.7 )

-1

SQuare

توان دوم یک عدد را محاسبه می کند

Select SQuare ( -5 )

25.0

SQrt

جذر یک عدد مثبت را باز می گرداند

Select SQrt (1.44 )

1.2

 

توبع مثلثاتی در پست بعد ...

پنج شنبه 30 تیر 1390  11:52 AM
تشکرات از این پست
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server

سلام

 

توابع مثلثاتی :

 

توابع مثلثاتی

نام تابع

عملکرد تابع

مثال

نتیجه

ACos

آرک کسینوس یک عدد را به رادیان محاسبه می کند

 Select ACos (1)

0.0

ASin

آرک سینوس یک عدد را به رادیان محاسبه می کند

Select ASin (0)  

0.0

ATAN

آرک تانژانت یک عدد را به رادیان محاسبه می کند

Select ATtan (1)

0.785398

Cos

کسینوس یک عدد را محاسبه می کند

Select Cos (0)  

1.0

Cot

کتانژانت یک عدد را محاسبه می کند

Select Cot (1)  

0.64209

Degrees

یک مقدار زاویه را از رادیان  به درجه تبدیل می کند

Select Degrees (PI( ) /2)

90

PI

مقدار عدد پی را باز می گرداند

Select PI ( )  

3.141592

Radians

یک زاویه به درجه را به رادیان تبدیل       می کند

Select Radians (180.0)

3.141592

Sin

سینوس یک عدد را محاسبه می کند

Select Sin (Radians (90.0) )

1.0

Tan

تانژانت یک عدد را محاسبه می کند

Select Tan ( PI ( ) /4 )

0.999999

 

با ادامه توابع در پست های بعد با ما همراه باشید ...

پنج شنبه 30 تیر 1390  11:53 AM
تشکرات از این پست
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server

سلام

امروز که بعد از مدتها به این تاپیک سر زدم دیدم که هیچ کس یک دونه پست هم نزده!!

خب خودم باز هم ادامه می دم :

توابع سیستمی و تبدیل داده ای و امنیتی

نام تابع

عملکرد تابع

مثال

نتیجه

APP_Name ( )

نام برنامه اجراکننده را باز می گرداند که بسیار برای موارد امنیتی مفید است

 

 

Cast

یک نوع داده ای را به نوع دیگری تبدیل می کند

 

 

Convert

مشابه تابع Cast یک نوع داده ای را به نوع دیگر داده ای تبدیل می کند

 

 

توابع سیستمی و تبدیل داده ای و امنیتی

نام تابع

عملکرد تابع

مثال

نتیجه

Current _User

نام Owner کنونی را باز می گرداند

 

 

DataLength

طول داده ای برای یک نوع داده را باز می گرداند

Select DataLength (100)

4

@@Error

درصورتیکه در فرآیند اجرای یک فرمان خطائی ایجاد گردد شماره خطا را باز می گرداند

 

 

Host _ID ( )

شماره شناسائی مربوط به یک کامپیوتر متصل شده را باز می گرداند

 

 

Host_Name ( )

نام کامپیوتر متصل شده به پایگاه داده را باز      می گرداند

 

 

IsNull

درصورتیکه مقدار ورودی Null  باشد از مقدار پیش فرض استفاده خواهد کرد

 

 

IsNumeric

درصورتیکه مقدار رشته محتوای عددی داشته باشد مقدار 1 باز می گردد

Select IsNumeric (´12´)

1

NewID

یک مقدار منحصر به فرد از  نوع داده ای UniquIdentifier  را تولید می کند

Select  NewID ( )

-

@@RowCount

تعداد رکوردهای تحت تاثیر دستوراتی نظیر Select یا UpDate و ... را باز   می گرداند

 

 

RowCount_Big

مشابه تابع @@RowCount  آخرین رکوردهای تحت تاثیر را باز می گرداند

 

 

System_User

در صورتیکه دسترسی به SQL Server و ویندوز معادل باشند در این صورت نام کاربر ویندوز و درغیراینصورت نام کاربر متصل به SQL Server  خواهد بود

Select System _User

 

User_Name

بدون پارامتر معادل تابعCurrent_User خواهد بود و درصورتیکه در عدد ورودی شماره User  اعلام گردد نام کاربر اشاره شده را باز می گرداند

Select User_Name (1)

 

CheckSum

با این تابع می توان یک عدد از محتوای فیلدهای خاص در یک رکورد را  از نظر امنیتی کنترل کرد

 

 

پنج شنبه 31 شهریور 1390  11:56 PM
تشکرات از این پست
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server

سلام

 

شروع می کنیم :

 

طراحی View  :

            View ها در واقع جداول مجازی هستند که محدودیت در سطرها و ستون های یک یا چند جدول رابطه ای یا ستون های محاسباتی را شامل می شوند، در طراحی View استفاده از Order By (بدون Top ), Into  دردستور Select بازگشتی مجاز نبوده و هنگام استفاده از جدول مجازی و با استفاده از دستور Select * کلیه ستونهای اعلام شده در View در اختیار درخواست کننده  قرار خواهد گرفت و درخصوص قابلیت دسترسی به سطرها و ستون های View می بایستی موارد دسترسی به جدول مجازی از طریق روش های امنیتی ایجاد گردد ، در نگاه اول شاید بنظر رسد که View ها شباهت به SP ها دارند ولی با دقت بیشتر سطوح امنیتی و محدودیت های ایجاد شده و قابلیت تعیین مشروط و مرتب سازی اختصاصی و مواردی از این دست که توسط دستور Select  قابل وصول است در محدوده تعیین شده بسیار انعطاف فوق العاده ای را ایجاد خواهد کرد که در جای خود بسیار حائز اهمیت است با این اوصاف شکل کلی طراحی یک View  به شکل ذیل خواهد بود.

 

] ( نام ستون ها ) [  نام ویو Create   View

[With SchemaBinding]

As

دستور  Select

 

همانطور که از شکل ظاهری دستور مشاهده می گردد نتیجه جدول بازگشتی در دستور Select بعنوان جدول مجازی توسط کاربر مورد استفاده قرار خواهد گرفت در این دستور در صورتیکه ستون بازگشتی در دستور Select  یک فیلد محاسباتی یا SubQuery باشد می بایستی حتماً  نامی برای آن ستون درنظر گرفته شود. درضمن هیچ دستور دیگری جز دستور Select  در این ساختار قابل استفاده نمی باشد که این موضوع قدرت SP  را در برنامه نویسی نسبت به View  نشان می دهد.

مثال) برای سیستم پرسنلی یک View  طراحی کنید که ستون های ذیل را شامل گردد.

 

] تعداد تحت تکفل ] , [ محل تولد ] , [ نام ] , [ نام خانوادگی ] , [ شماره کارمندی [

 

همانطور که مشاهده می گردد ستون های تعداد تحت تکفل و محل تولد می تواند از طریق Join  با جداول مربوطه به شکل ذیل حاصل گردد.

Create   View   V1  As

Select  No=PrsID,PFamily,PName,C.CityName  As CN ,

           (Select  Count(*)  From Child  Where  PrsID=P.PrsID) As Cno

From   Person   P

Left Join City C On(C.CityID=P.CityID)

 

( 50 )

مثال) براساس View  طراحی شده بنام V1  دستوری بنویسید که ستون های ذیل را به ترتیب نام و نام خانوادگی برای تحت تکفل بزرگتر از 2  ارائه دهد.

 

] تعداد تحت تکفل ] , [ نام خانوادگی ] , [ نام ] , [ شماره کارمندی [

 

در این حالت خواهیم داشت :

Select   No,PName , PFamily , Cno

From   V1

Where   Cno > 2

Order   By   PFamily , PName

 

چند مثال دیگه از این بحث مونده که در پست های بعدی می گم.

موفق باشید

پنج شنبه 31 شهریور 1390  11:59 PM
تشکرات از این پست
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server

سلام

ادامه مثال ها از بحث دید ها :

 

مثال) در سیستم پرسنلی یک View  طراحی کنید که براساس گروه بندی جدول ذیل را برای تعداد کارکنان بیشتر از 10  نفر ارائه دهد.

]   تعداد کارکنان ] , [ واحد سازمانی [

 

 

در این مثال چون موضوع گروه بندی مطرح است مناسب از Group By  براساس جدول Person  طراحی گردد بنابراین می نویسیم:

Create  View   V2

AS

Select    (Select  UnitName  From  Unit  Where  UnitID= P.UnitID )AS  UN,

 Count (*)  AS  No

From     Person   P

Group   By   UnitID

Having    Count (*) >10

 

مثال) براساس View طراحی شده V2  یک SP  طراحی کنید که واحدهائی را که بین 30  تا 50  کارمند دارند را ارائه نماید.

Create  Proc  GetUnitNo As

Select    *   From  V2

Where    No   Between  30  and  50

Order    By   No  Desc

 

مثال) براساس View  طراحی شده V2  تعداد کارکنان واحد سازمانی را گروه بندی نمائید.

همانطور که مشاهده می گردد ستون تعداد کارکنان یعنی No  قابل گروه بندی است که موضوع به افزایش قدرت با View  اشاره می کند بنابراین خواهیم نوشت :

 

Select    No ,Count (*)   From  V2

Group    By   No

Having    Count (*) > 1

Order    By   No  Desc

همچنان با ما همراه باشید ...

جمعه 1 مهر 1390  12:01 AM
تشکرات از این پست
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server

سلام

 

پارامتر Union  در دستور Select  :

            در مواردی نیاز است که چند جدول با ساختارهای یکسان به یکدیگر متصل یا تلفیق شوند پارامتر Union  در دستور Select  در دو حالت ادغام جداول بصورت منحصر بفرد و یا بصورت تجمعی این فرآیند را انجام می دهد ، در صورتیکه تنها از کلمه Union  استفاده گردد ادغام جداول و             Union All  ترکیب جداول بصورت تجمعی را به همراه خواهد داشت شکل کلی پارامتر Union به صورت ذیل خواهد بود.

دستور Select

] [ Union  [All]

دستور  Select

.

.

.

 

مثال) در سیستم پرسنلی جدول محل تولد را با استفاده از Union  تلفیق نمائید.

ابتدا تنها از پارامتر Union  استفاده می نمائیم بنابراین خواهیم داشت :

Select    *   From    City

Union

Select    *   From    City

 

حال اگر از پارامتر Union All  استفاده نمائیم خواهیم داشت :

Select    *   From    City

Union   All

Select    *   From    City

 

( 52 )

اختلاف دو جدول بازگشتی در این است که چون در حالت اول از پارامتر Union  تنها استفاده شده است و جدول City  با خودش ادغام شده است پس نتیجه بازگشتی تنها جدول City  خواهد بود ولی در حالت دوم جدول City  به اندازه دو برابر رکوردهای جدول City  تکرار خواهد شد و ادغام منحصر بفرد مقادیر رکوردهای دو جدول صورت نمی گیرد.

 

مثال) بدون ایجاد جدول فیزیکی ، جدول ذیل را به کاربر درخواست کننده منعکس کنید.

D

C

B

A

3.7

4.8

5.6

6.7

Ok

Yes

No

Ok

10

15

30

40

1

2

3

4

 

بدین منظور از پارامتر Union  در دستور Select  به شکل ذیل استفاده می نمائیم.

 

Select  A=1 , B=10 , C=´ Ok ´ , D=3.7    Union

Select  A=2 , B=15 , C=´ Yes ´ , D=4.8   Union

Select  A=3 , B=30 , C=´ No ´ , D=5.6    Union

Select  A=4 , B=40 , C=´ Ok ´ , D=6.7   

 

 

جمعه 1 مهر 1390  12:08 AM
تشکرات از این پست
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server

سلام

 

پارامترهای توابع جمعی در دستور Select  :

            هنگام استفاده از توابع جمعی نظیر … , Sum , Count  احتمال وجود مقدار Null  در یک عبارت، بر فرآیند عملیات محاسبات توابع جمعی مستقیماً  اثرگذار خواهد بود بدین منظور پارامترهای توابع جمعی به شکل ذیل قابل اعلام خواهد بود بعنوان مثال در تابع Count  خواهیم داشت:

 

کلیه رکوردهای اعلام شده شمارش می شوند    (    *             )

 

رکوردهائی که مقدار عبارت آن غیر                             

Null     باشند شمارش می شوند                    ( عبارت  All  )

 

رکوردهائی که مقدار عبارت آن غیر                                         

Null  باشند بصورت منحصر بفرد شمارش می شوند    ( عبارت Distinic  )

 

جمعه 1 مهر 1390  12:14 AM
تشکرات از این پست
cryingsphere
cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server

سلام

 

اشکال دیگری از Insert Into :

دستور Insert  در شکل بسیار ساده تنها یک رکورد به یک جدول اضافه می کند اما در صورتیکه درنظر باشد مجموعه ای از رکوردها به یک جدول افزوده شود از یکی از اشکال ذیل می توان بدین منظور استفاده نمود.

 

دستور  Select                  نام جدول             [ Into ]  Insert

] پارامترها درصورت نیاز [  نام SP     EXEC[ute] نام جدول             [ Into ]  Insert

( متغیر رشته ای )    EXEC[ute]       نام جدول             [ Into ]  Insert

نام        View      نام جدول             [ Into ]  Insert

 

همانطور که مشاهده می گردد مستقیماً می توان مجموعه ای از ستون های استخراج شده از یک SP  یا View یا Select را به یک جدول ارسال نمود که این شکل از دستورInsert  بر قدرت دستور می افزاید.

 

مثال) فرض کنید که اطلاعات محل تولد در سیستم پرسنلی درجدولی بنام MyCity  و در پایگاه داده MyPerson  قرار دارد دستوری بنویسید که اطلاعات به جدول City  منتقل گردد.

در این صورت می توانیم بنویسیم:

 

Insert  Into  City   Select  *  From   MyPerson . . MyCity

 

در پست بعد تریگرها رو بحث خواهیم کرد.

جمعه 1 مهر 1390  12:17 AM
تشکرات از این پست
esnjalali
esnjalali
کاربر برنزی
تاریخ عضویت : آذر 1391 
تعداد پست ها : 47
محل سکونت : خراسان رضوی

پاسخ به:آموزش گام به گام SQL Server

مرسی از توضیحات کاملت

چهارشنبه 6 دی 1391  7:43 PM
تشکرات از این پست
دسترسی سریع به انجمن ها