دستور SELECT در SQL Server
در SQL Server از عبارت SELECT برای بازیابی داده های ردیف ها/ستون ها از یک یا چند جدول موجود استفاده می شود. این دستور از استانداردهای SQL ، زبان کویریی ساختار یافته (Structured Query Language) ، پیروی می کند.
انتخاب همه ستون ها
اپراتور * تمام ستون های یک جدول را نشان می دهد. بنابراین ، لازم نیست نام هر ستون را در کویری SELECT تعیین کنید تا داده ها را از همه ستون ها دریافت کنید.
همانطور که در شکل زیر نشان داده شده است ، کویری بالا تمام داده های ردیف ها و ستون ها را از جدول Employee برمی گرداند.
انتخاب داده های ستون خاص
نام ستون را در دستور SELECT مشخص کنید تا داده ها را فقط از آن ستون ها ، همانطور که در شکل زیر مشاهده می کنید ، دریافت کنید.
کویری بالا نتیجه زیر را نشان می دهد.
نام مستعار برای ستون ها و جدول
می توانید یک نام مستعار (alias) را برای یک یا چند ستون در کویری SELECT تعیین کنید. نام مستعار یک نام موقتی برای یک جدول یا ستون در کویری است.
مزایای استفاده از Alias:
1 - Alias یک ستون را در مجموعه نتیجه قابل خواندن تر می کند.
2 - Alias برای دادن یک نام کوچک ، مختصر و معنی دار به جداول در کویری استفاده می شود تا ارجاع به جدول ها در join کردن جدول های مختلف ، آسان شود.
3 - Alias به ما کمک می کند تا در صورت دریافت داده ها از چندین جدول مختلف ، بفهمیم کدام ستون به کدام جدول تعلق دارد.
کویری زیر "Employee Id" را برای EMPID مشخص می کند و Name را به عنوان alias یا همان نام مستعار برای ستون FirstName در کویری SELECT تعیین می کند. اگر می خواهید یک فضا یا رشته دیگری در آن داشته باشید ، یک نام مستعار را در نقل قول های single یا double مشخص کنید.
کویری بالا نتیجه زیر را نشان می دهد.
اپراتور + در دستور SELECT
اپراتور + درMS SQL Server مقادیر رشته ای را به هم می پیوندد یا مقادیر عددی را اضافه می کند. آنچه که در زیر می بینید دو ستون از نوع Varchar را در نتیجه به هم متصل می کند.
کویری بالا نتیجه زیر را نشان می دهد.
آنچه که در زیر می بینید اعداد را در کویری select جمع می کند.
عبارت FROM
دستور SELECT باید شامل عبارت FROM باشد. عبارت FROM برای لیست کردن نام های جداولی که می خواهیم داده ها را از آنها انتخاب کنیم و پیوندهایی بین آن جداول ایجاد کنیم ، استفاده می شود.
برای انتخاب داده ها می توانید چندین جدول را در بخش FROM مشخص کنید. با این حال ، اگر جداول دارای ستون های یکسانی هستند ، باید نام کامل ستون مانند Table_Name.column_name را در کویری SELECT تعیین کنید.
مثال زیر ستون ها را از دو جدول انتخاب می کند.
داشتن چندین جدول در بخش FROM ، بدون WHERE و JOIN ، داده های تکراری را از هر جدول بر می گرداند. به عنوان مثال ، اگر جدول Employee دارای دو ردیف و جدول Department دارای دو ردیف باشد ، سپس کویری بالا چهار ردیف را باز می گرداند که ستون های یک جدول برای ستون های جدول دیگر تکرار می شود. شما در بخش آموزش JOIN اطلاعات بیشتری در مورد آن خواهید آموخت.
عبارت WHERE در SQL Server
در SQL Server، دستور SELECT می تواند یک عبارت WHERE اختیاری برای فیلتر کردن داده ها داشته باشد. عبارت WHERE می تواند شامل یک یا چند شرط بولی برای فیلتر کردن داده های جداول باشد.
عبارت WHERE همیشه بعد از عبارت FROM و قبل از بندهای GROUP BY، HAVING و ORDER BY می آید.
سینتکس آن به صورت زیر است:
با هدف تفهیم بیشتر، از جداول Employee و Department زیر در تمام مثال ها استفاده خواهیم کرد.
عبارت WHERE می تواند شامل یک یا چند شرط باشد که می تواند از عملگرهای شرطی (conditional operators) برای فیلتر کردن داده های نتیجه استفاده کند. کویری زیر را در نظر بگیرید.
در عبارت بالا، شرط Salary > 25000 سطرهایی را برمی گرداند که در آن ها مقدار ستون حقوق بیشتر از 25000 است. درخواست بالا نتیجه زیر را برمی گرداند.
کوئری زیر از عملگر BETWEEN در عبارت WHERE استفاده می کند.
در کویری بالا، شرط حقوق بین 17000 و 25000 سطرهایی را برمی گرداند که در آن مقدار ستون حقوق بین 17000 و 25000 (شامل هر دو مقدار) است. کویری فوق رکوردهای زیر را دریافت می کند.
شرایط چندگانه در عبارت WHERE در SQL Server
عبارت WHERE می تواند شامل چند شرط با استفاده از عملگرهای AND و OR باشد. کوئری زیر از عملگر منطقی AND برای تعیین دو شرط برای فیلتر کردن داده ها استفاده می کند.
در کویری بالا، شرط WHERE یعنی DeptId = 1 AND Salary > 20000 دو شرط را مشخص می کند که با عملگر AND از هم جدا شده اند. این سطرهایی را از جدول Employee برمی گرداند که در آن مقدار DeptId برابر با 1 است و حقوق یا Salary بیشتر از 20000 است.
Subquery در عبارت WHERE
شرط WHERE همچنین می تواند از مقدار به دست آمده از یک subquery استفاده کند، همانطور که در زیر نشان داده شده است.
در کویری بالا، شرط WHERE به صورت WHERE DeptId = (SELECT DeptId FROM Department WHERE DeptName = 'HR') است. بنابراین، ابتدا subquery یا همان پرس و جو فرعی یعنی SELECT DeptId FROM Department WHERE DeptName = 'HR' اجرا می شود و مقدار DeptId به دست آمده برای فیلتر کردن ردیف ها استفاده می شود.
اپراتورهای مشروط (Conditional Operators)
عملگرهای زیر را می توان در شرایط WHERE استفاده کرد.