آموزش SQL Server 2000
جلسه سوم
دستور Select
شکل کلی :
SELECT [ALL |
DISTINCT] [{TOP integer}]
select_list
[ INTO
new table ]
FROM table source
[ WHERE search
condition ]
[ GROUP BY group_by_expression ]
[ HAVING
search_condition ]
[ ORDER BY order expression [ ASC |
DESC ] ]
دستور Select برای بازیابی اطلاعات از جداول
موجود در database می باشد که پارامتر های آن را یک به یک با هم دیگر بررسی
می کنیم.
توضیح : در اینجا از یک جدولی که با اجرای
کد زیر ایجاد می شود استفاده می شود .
Create table tb (id int ,name
nvarchar(50),lname nvarchar(50),oldyear nvarchar(5))
All :
تمامی رکوردها
Distinct :
از تکرار در رکورهای بازگشتی جلوگیری می کند (
تکرار در اینجا یعنی فیلدهایی که انتخاب شده کاملا شبیه هم دیگر باشند .)
Top :
با توجه به عددی که جلوی این دستور قرار می
گیرد به همان تعداد از رکوردهای بازیابی شده
n رکورد بالا
را برمی گرداند. ( اگر 10 رکورد داشته باشید و n را 3 قرار دهیم 3 رکورد
اول را بازیابی می کند )
Into :
این دستور برای قرار دادن
اطلاعات یک جدول در یک جدول دیگر است . توجه داشته باشید جدول دومی نباید
وجود داشته باشد زیرا جدول دوم دقیقا باید مثل جدول اول باشد پس بنابراین
خودSQLl
این کار ساخت جدول را انجام می دهد.
From :
بعد از این دستور نام جدول
یا جدول هایی که فیلد های آنان را می خواهید بازیابی کنید آورده می شود .
اگر چند جدول باشد با علامت (,)
از هم جدا می شوند.
نکته : برای ذکر کردن نام
فیلد های مختلف از جدول های مختلف باید اول اسم جدول و بعد یک نقطه و بعد
اسم فیلد را ذکر کنید(tb.id)
Where :
بعد از این دستور شرط های
بازیابی قرار می گیرد که به این صورت است که اول نام فیلد مورد نظر بعد
عملگر(مقایسه ای) خاص و بعد مقدار قرار می گیرند . (در بعد درباره این
دستور صحبت خواهیم کرد .)
Group by :
از این دستور برای گروه بندی رکورده استفاده می شود برای این کار باید اسم فیلد
که می خواهید دسته بندی بر اساس ان انجام شود را جلوی ان ذکر می کنید و اگر
می خواهید از چند فیلد استفاده کنید انها را با علامت (,)
از هم جدا کنید دقت کنید که ترتیب قرار گرفتن فیلد ها مهم است هر فیلدی جلو
تر ذکر شود اول دسته بندی براساس ان انجام می شود و حاصل براساس فیلد بعدی
دسته بندی می شود .
نکته : توجه داشته باشید هر
فیلدی را که بازیابی می کنید باید اسم آن را در دستور Group By
بیاورید در غیر اینصورت خطا دارید.
Having :
این دستور هنگام استفاده از
دستور Group by
مورد استفاده قرار می گیرد . این دستور هم مانند Where
عمل می کند فقط با این تفاوت که
شرط آن روی رکورد های دسته بندی شده اعمال می شود.
Order by :
از این دستور برای مرتب سازی رکورد های
بازیابی شده استفاده می شود
که به ایت ترتیب است که نام فیلد جلوی آن ذکرمی شود و اگر از چند فیلد برای
مرتب سازی استفاده می کنید آنهارا با علامت (,)
از هم جدا کنید و توجه داشته باشید که ترتیب قرار گیری هم است.
پارامتری که این دستور می
گیرد تعیین می کند که مرتب سازی صعودی باشد یا نزولی که ASC
نشانه صعودی وDESC
برای نزولی بودن آن.
مثال ها :
1-
Select All From tb
تمامی رکورد های جدول tb
را نمایش می دهد.
2-
Select ID,Name From tb
فقط فیلدهای id
و
name
تمام رکورد ها از جدول tb
را نمایش می دهد.
3-
Select * From Tb Where
oldyear > 20
افرادی را که سن انها از 20
سال بیشتر باشد را نمایش می دهد .
4-
Select Id,name From tb
Group By name,id
فیلد های id
و name
تمامی رکوردها را بر می گرداند و اول بر اساس نام و بعد بر اسا س کد دسته
بندی می کند.
5-
Select id From tb Group By
id having id >2
فیلد id
رکورهای که پس از دسته بندی مقدارشان بیشتر از 2 باشد را بر می گرداند.
6-
Select * from Tb order by
id ASC, name DESC
تمامی رکوردها را بر می
گرداند و بر اساس کد و نام
مرتب سازی می کند . توجه داشته باشید که کد را صعودی و نام را نزولی مرتب
می کند.
7-
Select * into tb1 from tb
تمامی رکورد های موجود در
جدول TB
را در جدول TB1
که خودش ساخته قرار می دهد .