خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


21. استفاده از دستورات SELECT و FROM

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

سیستم یکپارچۀ سازمانی راهکار



برای گذراندن این دوره آموزشی لازم است تا فایل بک آپ مربوط به دیتابیسی که مثالهای این دوره با آن دیتابیس ایجاد شده است را دانلود کنید و در محیط اس کیو ال سرور بازیابی نمایید.


دستور FROM


دستور FROM دو نقش اصلی دارد :

  1. دستور FROM جایی است که شما اسامی جداول پایگاه داده را که می خواهید اطلاعات را از آنها بازیابی کنید، تعیین می نمایید.
  2. دستور FROM جایی است که شما می توانید عملگرهای اس کیو ال سرور، همچون JOIN را به کار ببرید.

در این آموزش تمرکز ما بر روی نقش اول می باشد و در آموزشهای آینده به عملگر JOIN نیز خواهیم پرداخت.

برای شروع با یک مثال ساده کار را آغاز می کنیم. دستور زیر را بر روی دیتابیس TSQL2012 اجرا کنید.

SELECT empid, firstname, lastname
FROM HR.Employees;

خروجی این دستور به شکل زیر می باشد.

21. استفاده از دستورات SELECT و FROM
اولین چیز تازه ای که در این دستور وجود دارد و در آموزشهای قبلی به آن پرداخته نشده است، نام دو قسمتی جدول می باشد :

HR.Employees


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

21. استفاده از دستورات SELECT و FROM
در دستور 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;

خروجی این کد به شکل زیر می باشد :

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

21. استفاده از دستورات SELECT و FROM

دستور SELECT


دستور SELECT در query (پرس و جو) دو نقش اصلی دارد :

  1. دستور SELECT تعیین می کند که خروجی های query (پرس و جو) چه باشد. اگر هم لازم باشد می توانید این خروجی ها را با اسامی مستعار مشخص نمایید.
  2. همچنین در صورت نیاز، با استفاده از دستور DISTINCT در کنار دستور SELECT می توانید رکوردهای تکراری را از نتایج query (پرس و جو) حذف نمایید.

به query (پرس و جو) زیر توجه کنید :

SELECT empid, firstname, lastname
FROM HR.Employees;

در این query دستور FROM مشخص می کند که جدول HR.Employees جدولی است که اطلاعات باید از آن بازیابی شوند، و دستور SELECT تعیین می کند که کدام فیلدها اطلاعاتشان بازیابی گردند. در اس کیو ال سرور با استفاده از کاراکتر ستاره (*) می توانید به جای اسم بردند از اسامی فیلدها در قسمت SELECT ، کل فیلدهای جدول را بازیابی نمایید. اما استفاده از کاراکتر ستاره (*) به دلایل زیر اصلا شیوه مناسبی نمی باشد :

  • در اغلب اوقات شما نیاز خواهید داشت تا فقط فیلدهای خاصی از یک جدول را در یک query بازیابی نمایید، اما هنگامی که از کاراکتر ستاره (*) استفاده می کنید، تمامی فیلدها بازیابی می شوند و در نتیجه نتایج خروجی شما شلوغ تر از حد معمول خواهد بود.
  • ضمن اینکه بازیابی اطلاعات بیشتر از نظر مصرف منابع سخت افزاری همچون RAM و CPU طبیعتا در کامپیوتر سربار اضافی ایجاد خواهد کرد و اصلا روش بهینه ای نمی باشد.

پس فراموش نکنید که همیشه فیلدهای خروجی یک query را در دستور SELECT مشخصا نام ببرید.


آموزش قبلی : 20. آموزش SQL Server به زبان ساده. نحوه بازیابی نسخه پشتیبان (Restore) در SQL Server

آموزش بعدی : 22. استفاده از دستور CONCAT و اتصال رشته ها در اس کیو ال سرور



نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.