آموزش گام به گام SQL Server
سلام
به منظور ایجاد یک رکورد جدید در یک جدول از دستور 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 در پست بعد ...
سلام مجدد
بااستفاده از دستور 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 ) )
همانطور که مشاهده می گردد ابتدا برای هر شخصی به واحد سازمانی و از آنجا به شهری که آن واحد قرار دارد ارجاع داده می شد تا جمعیت آن شهر تعیین گردد و در مخرج کسر نیز جمعیت کل شهرستانها محاسبه می گردد در واقع فرمول ذیل مورد محاسبه قرار گرفته است:
حقوق قبلی = حقوق جدید
از طرفی مشاهده می گردد که مخرج کسر یعنی جمعیت کل شهرستانها برای هر فرد در حال محاسبه است که فرآیند به روزرسانی را کندتر خواهد کرد بدین منظور اگر از یک 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 رو خواهم گفت. همچنان با ما باشید
سلام
این پست آخرین پست فصل دوم است.
حذف رکوردهای یک جدول با استفاده از دستور Delete صادر می گردد که در قالب کلی ذیل مورد استفاده قرار می گیرد:
] عبارت شرطی [ Where ] نام مستعار [ [AS] نام جدول Delete [From]
( 40 )
و در صورتیکه از عبارت شرطی و دستور Where صرف نظر گردد حذف کلیه رکوردهای جدول را به همراه خواهد داشت.
درجدول تحصیلات افراد تحت تکفل دستوری بنویسید که رکوردهای کارکنانی که شماره کارمندی زوج دارند حذف شوند.
Delete ChadLvL C Where C.PrsID %2 = 0
جدول تحصیلات افراد تحت تکفل در سیستم پرسنلی را خالی از رکورد نمائید.
Delete ChdLvL
خب, فصل دوم به پایان رسید. امیدوارم که تا اینجا با ما همراه بوده باشید و دروس هم سخت نبوده باشه.
پست بعد فصل سوم رو با عنوان مباحث تکمیلی اس کیو ال شروع خواهم کرد.
موفق باشید
سلام
فصل سوم
مباحث تکمیلی :
در این فصل هدف مباحث تکمیلی و تکنیکی بیشتر مدنظر قرار خواهد گرفت. طراحی ایندکس ها با استفاده از تکنولوژی Rushmore و طراحی ESP و View ها و Trigger ها از اهم موضوعات این فصل می باشد اما قبل از هرچیز مواردی خاص که مباحث مطرح شده را تکمیل می کند در ابتدا مورد بررسی قرار می گیرد.
هنگام استفاده از دستور Declare به منظور ایجاد یک متغیر جدید درصورت لزوم اندازه داده می بایستی تعیین گردد اما درصورتیکه درخصوص اینگونه موارد طول داده اعلام نگرددپیش فرض ازطرف SQL Server جانشین خواهد شد که می بایستی دقت گردد بدین منظور به جدول ذیل دقت نمائید.
|
|
|
|
|
|
|
|
||
|
Char |
|
|
در دستورات تبدیل Cast و Convert پیش فرض طول رشته ای 30 است |
|
NChar |
|
|
در دستورات تبدیل Cast و Convert پیش فرض طول رشته ای 30 است |
|
VarChar |
|
|
در دستورات تبدیل Cast و Convert پیش فرض طول رشته ای 30 است |
|
nVarChar |
|
|
در دستورات تبدیل Cast و Convert پیش فرض طول رشته ای 30 است |
|
binary |
|
|
در دستورات تبدیل Cast و Convert پیش فرض طول 30 است |
|
Varbinary |
|
|
در دستورات تبدیل Cast و Convert پیش فرض طول 30 است |
|
Numeric |
|
به اندازه ذخیره شده |
طول حداکثر 38 می باشد |
|
Decimal |
|
به اندازه ذخیره شده |
طول حداکثر 38 می باشد |
|
Dec |
|
به اندازه ذخیره شده |
طول حداکثر 38 می باشد |
در پست بعد مثالی از این مبحث را بیان خواهم کرد.
سلام
مثالی از Declare :
درقطعه برنامه مقابل اگربجای? هریک از انواع داده nVarChar ,VarChar ,nChar ,Char باشد خروجی چقدر خواهد بود ؟
Declare @x ? (15)
Set @x = ´ Hello´
Select Len ( @x ) , DataLength ( @x )
پس از اجرای خروجی برای چهار حالت ذکر شده پاسخ به شکل جدول ذیل خواهد بود.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
در قطعه برنامه مقابل مقدار خروجی چقدر است؟
Select Len ( Convert (nChar , 300)) ,
DataLength (Cast (300 As nChar))
پس از اجرای برنامه به ترتیب خروجی 3,60 خواهد بود.
برنامه ای بنویسید که جمع طول رشته ای و باینری یک متغیر nVarChar را بدست دهد.
Declare @x nVarChar (4000) , @L SmallInt , @L SmallInt
Set @x = ´ Hello´
Select @L= Len ( @x ) , @L = DataLength ( @x )
Select @L + @L AS L
در پست های بعد با ما همراه باشید ...
سلام
در فصول گذشته تعدادی تابع داخلی مفید جهت استفاده معرفی گردید تعداد توابع داخلی در هر زبان برنامه نویسی ابزارهای مفیدی جهت توسعه نرم افزار به شمار می روند ولی تعداد آنها در مواردی بسیار زیاد است که فراگیری آنها کمی مشکل به نظر می رسد بدین منظور تعدادی از توابع داخلی مهم در 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´ |
توابع محاسباتی در پست بعد. با ما همراه باشید ...
سلام
توابع محاسباتی :
|
|
|||
|
|
|
|
نتیجه |
|
ABS |
معادل قدرمطلق یک عدد در ریاضی است |
Select ABS (-1.7) |
1.7 |
|
Ceiling |
یک عدد صحیح بزرگتر از عدد ورودی را ارائه می دهد |
Select Ceiling (123.45) |
124 |
|
Exp |
معادل e در ریاضی است |
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 |
یک عدد را به توان عدد دیگر می رساند که معادل a می باشد |
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 |
توبع مثلثاتی در پست بعد ...
سلام
توابع مثلثاتی :
|
|
|||
|
|
|
|
نتیجه |
|
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 |
با ادامه توابع در پست های بعد با ما همراه باشید ...
سلام
امروز که بعد از مدتها به این تاپیک سر زدم دیدم که هیچ کس یک دونه پست هم نزده!!
خب خودم باز هم ادامه می دم :
|
|
|||
|
|
|
|
نتیجه |
|
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 |
با این تابع می توان یک عدد از محتوای فیلدهای خاص در یک رکورد را از نظر امنیتی کنترل کرد |
|
|
سلام
شروع می کنیم :
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
چند مثال دیگه از این بحث مونده که در پست های بعدی می گم.
موفق باشید
سلام
ادامه مثال ها از بحث دید ها :
در سیستم پرسنلی یک 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
همچنان با ما همراه باشید ...
سلام
در مواردی نیاز است که چند جدول با ساختارهای یکسان به یکدیگر متصل یا تلفیق شوند پارامتر 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 تکرار خواهد شد و ادغام منحصر بفرد مقادیر رکوردهای دو جدول صورت نمی گیرد.
بدون ایجاد جدول فیزیکی ، جدول ذیل را به کاربر درخواست کننده منعکس کنید.
|
|
|
|
|
|
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
سلام
هنگام استفاده از توابع جمعی نظیر … , Sum , Count احتمال وجود مقدار Null در یک عبارت، بر فرآیند عملیات محاسبات توابع جمعی مستقیماً اثرگذار خواهد بود بدین منظور پارامترهای توابع جمعی به شکل ذیل قابل اعلام خواهد بود بعنوان مثال در تابع Count خواهیم داشت:
کلیه رکوردهای اعلام شده شمارش می شوند ( )
رکوردهائی که مقدار عبارت آن غیر
Null باشند شمارش می شوند ( عبارت All )
رکوردهائی که مقدار عبارت آن غیر
Null باشند بصورت منحصر بفرد شمارش می شوند ( عبارت Distinic )
سلام
دستور 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
در پست بعد تریگرها رو بحث خواهیم کرد.
مرسی از توضیحات کاملت