خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
21. استفاده از دستورات SELECT و FROM

دستورات SELECT و FROM دو دستور اصلی اس کیو ال سرور هستند که تقریبا در هر query (پرس و جو) که داده ها را بازیابی می کند، وجود دارند. در این آموزش هدف این دو دستور و چگونگی استفاده از آنها را تشریح می کنیم.

دستور FROM دو نقش اصلی دارد :
در این آموزش تمرکز ما بر روی نقش اول می باشد و در آموزشهای آینده به عملگر JOIN نیز خواهیم پرداخت.
برای شروع با یک مثال ساده کار را آغاز می کنیم. دستور زیر را بر روی دیتابیس TSQL2012 اجرا کنید.
خروجی این دستور به شکل زیر می باشد.
اولین چیز تازه ای که در این دستور وجود دارد و در آموزشهای قبلی به آن پرداخته نشده است، نام دو قسمتی جدول می باشد :
قسمت اول این نام (HR) نام اسکیما (schema) می باشد، و قسمت دوم این نام (Employees) نام جدول می باشد. هر چند در بعضی وقتها بدون قرار دادن نام اسکیما (schema) نیز، اس کیو ال سرور دستور شما را به درستی اجرا خواهد کرد، اما شیوه بهتر اینست که همیشه عادت کنید نام اسکیما (schema) را وارد نمایید. تصویر زیر اسامی اسکیما (schema) که در دیتابیس مثال این دوره آموزشی به کار رفته اند را به شما نشان می دهد.
در دستور FROM شما می توانید از اسامی مستعار برای جداول استفاده نمایید. شیوه استفاده از اسامی مستعار به این شکل است که بعد از نام جدول کلمه کلیدی AS را قرار می دهید و بعد از آن نیز نام مستعار خود را وارد می نمایید.
توجه داشته باشید که استفاده از کلمه کلیدی AS اجباری نمی باشد و کارکرد کد زیر نیز کاملا مشابه با کد بالا می باشد.
وقتی در یک query (پرس و جو) از اسم مستعار برای یک جدول استفاده می کنید، در طول آن query (پرس و جو) دیگر اسم اصلی جدول معنایی ندارد و شناسایی نخواهد شد، بلکه در همه جاهای دیگر آن query (پرس و جو) نیز باید به این اسم مستعار اشاره کنید. بعنوان مثال شما می توانید اسامی فیلدهای به کار رفته در یک دستور SELECT را با پیشوندی که نام آن جدول می باشد، به کار ببرید.
خروجی این کد به شکل زیر می باشد :
حالا اگر سعی کنید به جای نام مستعار از نام اصلی جدول استفاده کنید با خطای زیر مواجه خواهید شد.
دستور SELECT در query (پرس و جو) دو نقش اصلی دارد :
به query (پرس و جو) زیر توجه کنید :
در این query دستور FROM مشخص می کند که جدول HR.Employees جدولی است که اطلاعات باید از آن بازیابی شوند، و دستور SELECT تعیین می کند که کدام فیلدها اطلاعاتشان بازیابی گردند. در اس کیو ال سرور با استفاده از کاراکتر ستاره (*) می توانید به جای اسم بردند از اسامی فیلدها در قسمت SELECT ، کل فیلدهای جدول را بازیابی نمایید. اما استفاده از کاراکتر ستاره (*) به دلایل زیر اصلا شیوه مناسبی نمی باشد :
پس فراموش نکنید که همیشه فیلدهای خروجی یک query را در دستور SELECT مشخصا نام ببرید.
آموزش قبلی : 20. آموزش SQL Server به زبان ساده. نحوه بازیابی نسخه پشتیبان (Restore) در SQL Server
آموزش بعدی : 22. استفاده از دستور CONCAT و اتصال رشته ها در اس کیو ال سرور

برای گذراندن این دوره آموزشی لازم است تا فایل بک آپ مربوط به دیتابیسی که مثالهای این دوره با آن دیتابیس ایجاد شده است را دانلود کنید و در محیط اس کیو ال سرور بازیابی نمایید.
دستور FROM
دستور FROM دو نقش اصلی دارد :
-
دستور FROM جایی است که شما اسامی جداول پایگاه داده را که می خواهید اطلاعات را از آنها بازیابی کنید، تعیین می نمایید.
-
دستور FROM جایی است که شما می توانید عملگرهای اس کیو ال سرور، همچون JOIN را به کار ببرید.
در این آموزش تمرکز ما بر روی نقش اول می باشد و در آموزشهای آینده به عملگر JOIN نیز خواهیم پرداخت.
برای شروع با یک مثال ساده کار را آغاز می کنیم. دستور زیر را بر روی دیتابیس TSQL2012 اجرا کنید.
SELECT empid, firstname, lastname
FROM HR.Employees;
خروجی این دستور به شکل زیر می باشد.

اولین چیز تازه ای که در این دستور وجود دارد و در آموزشهای قبلی به آن پرداخته نشده است، نام دو قسمتی جدول می باشد :
HR.Employees
قسمت اول این نام (HR) نام اسکیما (schema) می باشد، و قسمت دوم این نام (Employees) نام جدول می باشد. هر چند در بعضی وقتها بدون قرار دادن نام اسکیما (schema) نیز، اس کیو ال سرور دستور شما را به درستی اجرا خواهد کرد، اما شیوه بهتر اینست که همیشه عادت کنید نام اسکیما (schema) را وارد نمایید. تصویر زیر اسامی اسکیما (schema) که در دیتابیس مثال این دوره آموزشی به کار رفته اند را به شما نشان می دهد.

در دستور FROM شما می توانید از اسامی مستعار برای جداول استفاده نمایید. شیوه استفاده از اسامی مستعار به این شکل است که بعد از نام جدول کلمه کلیدی AS را قرار می دهید و بعد از آن نیز نام مستعار خود را وارد می نمایید.
HR.Employees AS E
توجه داشته باشید که استفاده از کلمه کلیدی AS اجباری نمی باشد و کارکرد کد زیر نیز کاملا مشابه با کد بالا می باشد.
HR.Employees E
وقتی در یک query (پرس و جو) از اسم مستعار برای یک جدول استفاده می کنید، در طول آن query (پرس و جو) دیگر اسم اصلی جدول معنایی ندارد و شناسایی نخواهد شد، بلکه در همه جاهای دیگر آن query (پرس و جو) نیز باید به این اسم مستعار اشاره کنید. بعنوان مثال شما می توانید اسامی فیلدهای به کار رفته در یک دستور SELECT را با پیشوندی که نام آن جدول می باشد، به کار ببرید.
Employees.empid
اما وقتی که به یک جدول اسم مستعار می دهید باید این پیشوند شما همان اسم مستعار باشد و استفاده از نام جدول دیگر صحیح نمی باشد و اس کیو ال سرور آن نام را شناسایی نکرده و تولید خطا می کند. به مثال زیر توجه کنید :SELECT E.empid, firstname, lastname
FROM HR.Employees AS E;
خروجی این کد به شکل زیر می باشد :

حالا اگر سعی کنید به جای نام مستعار از نام اصلی جدول استفاده کنید با خطای زیر مواجه خواهید شد.

دستور SELECT
دستور SELECT در query (پرس و جو) دو نقش اصلی دارد :
-
دستور SELECT تعیین می کند که خروجی های query (پرس و جو) چه باشد. اگر هم لازم باشد می توانید این خروجی ها را با اسامی مستعار مشخص نمایید.
-
همچنین در صورت نیاز، با استفاده از دستور DISTINCT در کنار دستور SELECT می توانید رکوردهای تکراری را از نتایج query (پرس و جو) حذف نمایید.
به query (پرس و جو) زیر توجه کنید :
SELECT empid, firstname, lastname
FROM HR.Employees;
FROM HR.Employees;
در این query دستور FROM مشخص می کند که جدول HR.Employees جدولی است که اطلاعات باید از آن بازیابی شوند، و دستور SELECT تعیین می کند که کدام فیلدها اطلاعاتشان بازیابی گردند. در اس کیو ال سرور با استفاده از کاراکتر ستاره (*) می توانید به جای اسم بردند از اسامی فیلدها در قسمت SELECT ، کل فیلدهای جدول را بازیابی نمایید. اما استفاده از کاراکتر ستاره (*) به دلایل زیر اصلا شیوه مناسبی نمی باشد :
-
در اغلب اوقات شما نیاز خواهید داشت تا فقط فیلدهای خاصی از یک جدول را در یک query بازیابی نمایید، اما هنگامی که از کاراکتر ستاره (*) استفاده می کنید، تمامی فیلدها بازیابی می شوند و در نتیجه نتایج خروجی شما شلوغ تر از حد معمول خواهد بود.
-
ضمن اینکه بازیابی اطلاعات بیشتر از نظر مصرف منابع سخت افزاری همچون RAM و CPU طبیعتا در کامپیوتر سربار اضافی ایجاد خواهد کرد و اصلا روش بهینه ای نمی باشد.
پس فراموش نکنید که همیشه فیلدهای خروجی یک query را در دستور SELECT مشخصا نام ببرید.
آموزش قبلی : 20. آموزش SQL Server به زبان ساده. نحوه بازیابی نسخه پشتیبان (Restore) در SQL Server
آموزش بعدی : 22. استفاده از دستور CONCAT و اتصال رشته ها در اس کیو ال سرور
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: