آموزش SQL SERVER : درس اول : مفاهیم اولیه

مقدمه :‌
کاربرد روز افزون بانک اطلاعاتی SQL مرا بر آن داشت تا مطالبی هر چند کوتاه جهت خوانندگان محترم سایت تهیه نماییم. قبلا از هر چیز لازم به ذکر است که مطالب ذیل در حد آشنایی بوده و دوستان برای دستیابی به تکنیکهای بیشتر می بایست از کتابهای مرجع و Book online خود SQL Server استفاده نمایند. در مطالب زیر که سلسله وار مباحث SQL Server  را مرور خواهیم کرد , سعی شده تا ابتدا مطالب مقدماتی جهت آشنایی آورده شود و سپس اگر عمری باقی بود به مطالب پیشرفته آن بپردازیم. همچنین برای یادآوری خدمت دوستان ابتدا مرور سریعی بر چند دستور SQL که کاربرد بیشتری دارند خواهیم پرداخت و سپس به SQL Server  و مطالب آن خواهیم پرداخت . مطالب زیر اکثرا از کتاب Microsoft SQL Server 7.0 Database Implementation Training  انتخاب گردیده است . این کتاب به همراه CD‌آموزش آن به عنوان یک مرجع برای امتحانات مایکروسافت استفاده می‌شود.
جداول بکار رفته نیز همگی در SQL Server 7.0 در Database Northwind موجود هستند.

دستور Select

این دستور که دستوری مستقل نیست و حتما باید با اجزایی بکار رود جهت ساخت پرس و جو بر روی بانک اطلاعاتی بکار می‌رود و رکوردهایی که با شرایط این دستور همخوان باشد به عنوان نتیجه پرس و جو برمی‌گرداند .  چهار کلمه کلیدی وجود دارند که بخشهای ارزشمند این دستور را تشکیل می‌دهند :

1-select
2-from
3-where
4-order by

شکل کلی دستور :

Select [*|distinct column1, column2,…]
From table[,table2,…]
Where شرط
Order by نام فیلد یا شماره فیلد

مثال :

Select * from customers

این دستور تمام رکوردهای جدول customers را برمی‌گرداند. که نتیجه 91 سطر از اطلاعات این جدول خواهد بود
حال  اگر شرط Country ='uk' اضافه کنیم ، فقط اطلاعات مشتریان انگلیس جواب خواهند بود که به 7 سطر تقلیل می‌یابد.

 

select * from customers
where Country ='uk'


حال

select City,Country from customers
order by city

فقط ستونهای نام شهر (city) و نام کشور (Country) را بر گردانده و بر اساس نام شهر مرتب میکند. دستور بالا با دستور پایین هردو یک جواب را میدهند :


select City,Country from customers
order by 1


که 91 سطر بازگردانده خواهد شد . در نتیجه پرس و جو تعدادی سطر تکراری وجود دارد مانند شهر London  که اگر از کلمه Distinct‌ در Select  استفاده کنیم این سطرهای تکراری حذف خواهد شد .


select distinct City,Country from customers
order by 1


و جواب 69 سطر خواهد بود.

استفاده از توابع در Select

1- Count  : تعداد سطرهای بازگردانده شده توسط select  را میشمارد.
Select  Count(*)  from  Customers
where  Country ='uk'
در اصل تعداد مشتریانی را میشمارد که در کشور انگلیس هستند. که عدد 7 جواب است.

2- Sum : مجموع یک فیلد عددی را برمی‌گرداند.


Select  sum(Quantity)  from [Order Details]


مجموع فیلد Quantity  را برای فیلدهایی که شماره محصول آنها ( Productid) برابر 11 است را محاسبه میکند

 


نکته 1  :  در دستور select  می‌توان از اسم مستعار استفاده کرد ، یعنی نام جدیدی را برای یک ستون در نظر گرفت  به عنوان مثال select قبل را  به شکل زیر بکار برد :


Select  sum(Quantity)  as Sum_QTY
from [Order Details]
where productid = 11


که Sum_QTY یک اسم مستعار برای مجموع است. استفاده از کلمه کلیدیas  ‌اختیاری است.
نکته 2  :  در دستور select  هرگاه اسم فیلدی اسم خاص باشد و یا فاصله بین اسم باشد مثل  Order Details  که فاصله بین اسم جدول است حتماُ از علامت براکت []  میبایست استفاده کرد.
نکته 3 : استفاده از group by   :
هنگامی که از توابع count ‌   و  Sum  به همراه یک  فیلد دیگر در دستور          select  استفاده می‌شود از group by    استفاده می‌کنیم .
به عنوان مثال دستور زیر جمع مقادیر  فیلد  Quantity  را برای هر شماره محصول  محاسبه میکند .


Select  productid, sum(Quantity) as sum_qty
from [Order Details]
group by  productid


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


productid   sum_qty    
----------------------
61         603
3          328
32         297
6          301
41         981
64         740
9          95
12         344


در صورتیکه دستور ordr by 1  بعد از group by  استفاده کنیم نتیجه بر اساس کد محصول مرتب خواهد شد.
نکته 4 : دستور  where   می تواند خود  شامل  یک دستور select    باشد :

select * from Products
where ProductID  in
    ( select distinct ProductID from [order details] where Quantity >70)
order by ProductID


تنها نکته ای که می بایست توجه کرد این است که نام فیلدی که در شرط آورده می شود حتما در دستور select   آورده شود, به عبارت دیگر select   درون شرط تنها یک ستون را می بایست برگرداند .

 


تمرین :  با فرض اینکه دو جدول Products و order details دارای ستون (فیلد) یکسان  ProductID  هستند , یک دستور Select  بنویسید که تمام فیلدهایی از Products را نشان دهد که فیلد ProductID  آن با ProductID  جدول order details یکی باشد.؟
حل :  

Select pr.*
From  Products  as pr , [order details] as od
Where pr. ProductID = od. ProductID


قابل به ذکر است که بیش از 90% از کارهایی که ما برروی جداول انجام می دهیم با select  و ترکیبات آن انجام می شود. لذا بدست آوردن تبحر در نوشتن select  ها می تواند شما را در تهیه برنامه ها یاری کند.

3-Min,max : بیشترین و کمترین مقدار فیلد را در بانک اطلاعاتی بدست می دهد.

Select min (Quantity)
from [Order Details]


4-Top n : تعداد n سطر اول بانک اطلاعاتی را برمی گرداند.

Select top 5 *
from [Order Details]


5 سطر اول بانک را برمی گرداند.

 


نکته 3 :  در حالت بالا اگر مقدار سطر 5 و 6 یکی باشد فقط سطر 5 جواب خواهد بود برای گریز از این حالت از شکل زیر در این دستور استفاده میکنیم :
Select top n with ties   *
From table
5-Into

Select * from table1 into table2


اطلاعات table1 را به table2 کپی میکند. البته table2 باید از قبل وجود نداشته باشد.

 


این دستور خود table2  را میسازد.

دستور select قویترین و کاربردی ترین دستور در sql است که خود ماهها نیازمند تمرین و آموزش است . برای اطلاعات بیشتر به books online خود Sql Server  مراجع کنید.

دستور Delete

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

شکل کلی دستور :


Delete table1
Where شرط

مثال :


فرض کنید جدول authors موجود باشد و فیلد کلید آن au_id باشد. برای حذف 10 سطر اول این جدول از دستور زیر استفاده می کنیم :


DELETE authors
FROM
(SELECT TOP 10 * FROM authors) AS t1
WHERE authors.au_id = t1.au_id

دستور insert

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


Insert into table1 (f1,f2,…)
Values (v1,v2,…)


که f1,f2  نام فیلدها و v1,v2  مقادیر آنها میباشد.
البته میتوانید مقادیر را نتیجه یک select  قرار داد.

مثال :


Insert into table1
Select top 10
From table2


مقدار 10 سطر اول را   از table2 را در table1 درج میکند. البته باید تعداد فیلدها یکی باشد. در غیر اینصورت از values استفاده کنید.

  
نویسنده : ali gooliof ; ساعت ٢:٤۸ ‎ق.ظ روز ۱۳۸٧/٢/٧
تگ ها :