درس اول آموزش دستورات ابتدایی Transact SQL
دستور Select:
در زیر ساختار بسیار ساده دستور Select را ملاحظه می کنید.
SELECT select_list
FROM table_list
Select_list شامل فیلدهایی می شود که میخواهیم از جدول مربوطه فراخوانی کنیم. اگر به جای نام فیلدها از * استفاده کنیم تمام فیلدهای موجود در Table_List را به ما نمایش میدهد.
Table_List شامل جداول و یا View هایی هست که ما میخواهیم اطلاعات را از آنها فراخوانی کنیم.
در مثال زیر با استفاده از دستور select یک سری اطلاعات را از دیتابیس AdventureWorks فراخوانی می کنیم.
USE AdventureWorks
GO
SELECT NationalIDNumber,
LoginID,
JobTitle
FROM HumanResources.Employee
با اجرای دستورات بالا نتیجه ای معادل شکل زیر بدست خواهد آمد.
|
JobTitle |
LoginID |
NationalIDNumber |
|
Chief Executive Officer Vice President of Engineering Engineering Manager Senior Tool Designer … Sales Representative Sales Representative Sales Representative |
adventure-works\ken0 adventure-works\terri0 adventure-works\roberto0 adventure-works\rob0 … adventure-works\rachel0 adventure-works\jae0 adventure-works\ranjit0 |
295847284 245797967 509647174 112457891 ... 668991357 954276278 134219713 |
(290 row(s) affected)
شرح دستور :
خط اول دستور برای تغییر دیتابیس پیش فرض هست. زیرا زمانی که برای اولین بار به SSMS (SQL Server Management Studio ) وصل می شوید پیش فرض Database در حال استفاده هست که در User شما به عنوان Default Database تعیین شده باشد. با این دستور به دیتابیس مورد نظر وصل خواهیم شد.
USE AdventureWorks
GO
خطوط زیر مشخص میکند کدام ستونها به ما نمایش داده شوند.
SELECT NationalIDNumber,
LoginID,
JobTitle
قسمت بعدی که عبارت From می باشد :
این عبارت مشخص می کند اطلاعات باید از چه منبعی فرخوانی شود. در اینجا ما اطلاعات را از یک جدول موجود در دیتابیس فراخوانی کردیم.
عبارت HumanResources.Employee شامل دو قسمت می باشد. قسمت اول نام Schema هست و قسمت دوم نام حقیقی جدول. هر Schema شامل یک سری اشیا می باشد. در درس های آینده نحوه تعریف Schema و کاربرد آنرا توضیح خواهیم داد.
اگر بخواهیم لیست تمامی ستونهای موجود را از یک منبع داده که در جلوی عبارت From آمده است ، فراخوانی کنیم باید از دستور زیر استفاده کنیم :
SELECT *
FROM HumanResources.Employee
نکته بسیار مهم : تا زمانی که نیاز به همه فیلدها نداریم بهتر است از * استفاده نکرده و نام فیلدها را به صورت جداگانه بیاوریم.چون هرچه تعداد فیلدها بیشتر باشد حجم اطلاعات جابجا شده بیشتر خواهد بود که این میتواند به خصوص روی نرم افزارهای تحت شبکه تاثیر به سزایی روی سرعت نرم افزار داشته باشد.همچنین اگر بعد از مدتی یک فیلد به جدول مورد نظر اضافه کنیم به طور ناخودآگاه این فیلد در برنامه ما ظاهر خواهد شد.چون ممکن است این فیلد یک فیلد محاسباتی باشد و نیازی به نمایش آن به کاربر نباشد.
محدود کردن نتیجه یک Query بواسطه عبارت Where.
در یک دستور Select عبارت Where برای محدود کردن نتیجه مورد نظر به کار می رود. شکل ساده دستوری عبارت where در زیر آمده است .
توجه : وقتی عبارتی داخل [] قرار میگیرد منظور این است که وجود آن در دستور اصلی به صورت دلخواه می باشد و نبود آن در اجرای دستور مشکلی ایجاد نخواهد کرد.
SELECT select_list
FROM table_list
[WHERE search_conditions]
Search_conditions ها گزارهایی هستند که مقادیر عبارات را با TRUE , FALSE,UNKHOWN ارزیابی می کنند.
UNKHOWN زمانی ظاهر می شود که در Search_Condition ها به مقدار NULL دسترسی پیدا کنیم.
یک مقدار NULL نه صفر هست نه خالی فقط و فقط شناخته نشده است.همچنین دو مقدار NULL باهم برابر نیستند و نمیتوان بدون یک نتیجه UNKHOWN آنها را باهم مقایسه کرد.