انجمن‌های فارس وب

نسخه کامل: نگاه مختصري بر Select در SQL
شما در حال بازدید از بایگانی ارسال های انجمن هستید این نسخه کامل نیست : برای مشاهده نسخه کامل اینجا کلیک کنید
توجه نماييد :
جداول بكار رفته نيز همگي در 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   درون شرط تنها يك ستون را مي بايست برگرداند .



قابل به ذكر است كه بيش از 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  مراجع كنيد.



مرجع : books online خود Sql Server و سايت [ جهت مشاهده لينك عضو شويد ! ]

مرجع آدرس ها