کاربرد روز افزون بانک اطلاعاتی 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
این دستور که دستوری مستقل نیست و حتما باید با اجزایی بکار رود جهت ساخت پرس و جو بر روی بانک اطلاعاتی بکار میرود و رکوردهایی که با شرایط این دستور همخوان باشد به عنوان نتیجه پرس و جو برمیگرداند . چهار کلمه کلیدی وجود دارند که بخشهای ارزشمند این دستور را تشکیل میدهند :
select
from
where
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]
where productid = 11
مجموع فیلد 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 درون شرط تنها یک ستون را میبایست برگرداند .