دستور Select در SQL Server| آموزش کامل + کلی نکته کاربردی
سلام به سافت پلاس و یکی دیگر از مطالب مربوط به آموزش SQL سرور خوش آمدید .
امروز می خواهیم به سراغ یکی از ساده ترین و البته مهمترین دستورات مربوط به زبان SQL برویم .
SELECT دستوری است که تقریبا می شود گفت که در تمام کوئری هایی که شما در داخل SQL می نویسید حضور دارد و یک جورهایی پای ثابت اکثر کوئری ها می باشد .
در این مطلب می خواهیم راجع به این دستور با هم صحبت کنیم و با زیر و بم کار با آن آشنا شده و کلی نکته در خصوص کار با این دستور وجود دارد که می خواهیم آنها را با هم یاد بگیریم .
پس از شما می خواهم اگر علاقمند به یادگیری نرم افزار SQL سرور هستید تا پایان این مبحث هم با من همراه باشید
فقط خاطرتان باشد که می شود SQL سرور را بطور کاملا ساده یاد گرفت . چیزی که در این سایت به دنبال آن هستیم .
فهرست محتوا
دستور SELECT چه کاربردی دارد ؟
هر دیتابیس برای خودش شامل بخش های مختلفی می شود . یکی از مهمترین این بخش ها جداول هستند . تمام اطلاعاتی که دیتابیس ما بر اساس آنها ایجاد می شوند در داخل جدول ها ذخیره می شوند .
معمولا بعد از اینکه اطلاعات را در داخل جدول ها اضافه کردید به مرور بر حجم و تعداد اطلاعات ذخیره شده اضافه می شود . یکی از چیزهایی که در کار با جدول ها به آن خیلی نیاز پیدا می کنید این است که به نحوی بتوانید اطلاعات مورد نظر خودتان را از داخل جدول یا جدول های مورد نظرمان استخراج کنید یا به عبارت دیگر بین اطلاعات خودتان جستجو کنید .
در داخل SQL سرور برای جستجو و استخراج اطلاعات مورد نظرتان باید از کدهای SQL کمک بگیرید .
زبان برنامه نویسی SQL شامل دستورات مختلفی است اما از بین همه آنها دستوری که به درد این کار می خورد دستور SELECT است .
به کمک دستور SELECT می توانید هر نوع اطلاعاتی را که شما می خواهید را استخراج کنید .
فرقی هم نمی کند که اطلاعات مورد نظر ما فقط در داخل یک جدول باشد یا اینکه در چند تا جدول مختلف قرار گرفته باشند . با دستور SELECT خیلی راحت می توانید کار جستجو بین جدول ها را انجام داده و اطلاعات مورد نظر خودتان را استخراج کنید .
فقط تنها کاری که باید انجام بدهید این است که به خوبی با دستور SELECT آشنایی پیدا کنید تا بتوانید از تمام قابلیت های آن استفاده کنید
کاری که قرار است در ادامه مفصل به آن بپردازیم .
البته برای استخراج اطلاعات از بین چند تا جدول در کنار دستور SELECT نیاز به استفاده از دستورات دیگری هم خواهید داشت .
ساختار کامل دستور SELECT
برای اولین قدم باید با ساختار کلی دستور select آشنا شوید .
تصویر زیر یک شمای کلی از قسمت های مختلف این دستور را به شما نمایش می دهد .
با توجه به شکل بالا 2 تا نکته را می شود در مورد دستور select در نظر گرفت .
نکته شماره -1
دستور select در کاملترین حالت خود می تواند شامل 10 آیتم باشد .
یک پیشنهاد خواندنی : Drop و Delete در SQl سرور – از کاربردها تا تفاوت بین آنها
نکته شماره -2
از مجموع 10 آیتمی که این دستور دارد 7 تای آنها حالت اختیاری و 3 تا حالت اجباری دارند یعنی بدون وجود این 3 تا آیتم این دستور اجرایی نمی شود .
حالا که با ساختار کلی این دستور آشنا شدید برویم در عمل از آن استفاده کنیم تا نکات مربوط به استفاده از این دستور را با هم یک به یک یاد بگیریم .
البته ممکن است که در ساختار دستور SELECT یک سری توابع محاسباتی هم وارد شوند که در مورد آنها هم صحبت خواهیم کرد .
دستور SELECT چطور کار می کند ؟
برای اینکه بهتر متوجه نحوه کاربرد این دستور در SQL سرور شوید لازم است که با هم چند تا مثال عملی را بررسی کنیم .
برای شروع به کد زیر نگاه کنید
use Erthequake
select *
from dbo.ersthquak;
این کدها چطور کار می کنند ؟
– در خط شماره 1 اسم دیتابیس مورد نظر خودم را به SQL سرور اعلام کرده ام و از برنامه خواسته ام برای کارهایی که در ادامه برایش مشخص می کنم از این دیتابیس استفاده کند .
اسم این دیتابیس earthquak است که در داخل آن اطلاعات مربوط به تمامی زلزله هایی که در 50 سال اخیر در کشورهای مختلف جهان اتفاق افتاده است و شدت آنها بالای 5 ریشتر بوده، ثبت شده است .
این اطلاعات در داخل یک جدول ذخیره شده و تا به حال اطلاعات مربوط به 23119 مورد زلزله در داخل آن ثبت شده است .
– در خط شماره 3 از SQL سرور خواسته ام که همه اطلاعات موجود در یک جدول را برای من انتخاب و آنها را نمایش بدهد. اما از چه جدولی ؟
– در خط شماره 4 از این کدها اسم جدول مورد نظر خودم را به برنامه معرفی کرده ام . یعنی جدول dbo.ersthquak
که همانطور که گفتم این جدول در داخل دیتابیس earthquak قرار دارد .
در زبان کد نویسی SQL علامت ستاره یا همان * به معنای ” همه ” یا ALL می باشد .
تصویر زیر کدهای بالا و بخشی از خروجی که این کدها برای من در محیط کوئری ssms ایجاد کرده اند را می توانید مشاهده کنید .
کدهای بالا همه اطلاعات موجود در داخل جدول مورد نظر را برای من بر می گرداند .
البته توصیه می کنم که در استفاده از دستور * Select زیاده روی نکنید . برای این کار دلایلی وجود دارد که بعدا در مورد آن صحبت خواهم کرد .
کدهای بالا همه اطلاعاتی که در داخل جدول مورد نظر تان قرار دارد را به عنوان خروجی در اختیارتان قرار می دهد . اما به نظرتان راهی هست که این اطلاعات را کمی محدودتر کنید و تعداد آنها را کمتر کنید ؟
مثلا به جای نمایش همه 23 هزار رکورد فقط 100 تا، یا 200 تا، یا 1000 تا و یا هر تعداد که شما مد نظرتان است را نمایش بدهید ؟ فکر می کنید برای این کار چه راههایی وجود دارد ؟
اگر به دنبال جوابی برای این سوال هستید پس باز هم با من همراه باشید .
چطوری با دستور SELECT و گزینه TOP تعداد اطلاعات خروجی را محدودکنیم ؟
در SQL یک دستوری وجود دارد به اسم Top به معنی ” بالا ” .
با استفاده از این دستور و ترکیب آن با Select می توانید کاری کنید که SQL فقط تعداد خاصی از اطلاعات را جدول مورد نظر تان را برای شما برگرداند .
دستور Top می تواند به دو تا حالت وجود داشته باشد . برای اینکه بهتر متوجه کاربرد این دستور شوید به کدهای زیر نگاه کنید .
SELECT TOP (1000)
[earthquake_id]
,[occurred_on]
,[latitude]
,[longitude]
,[depth]
,[magnitude]
,[calculation_method]
,[network_id]
,[place]
,[cause]
FROM [Erthequake].[dbo].[ersthquak]
در خط شماره 1 از این کدها اول دستور SELECT بعد از آن دستور TOP آورده شده است . اگر دقت کنید جلوی دستور TOP یک پرانتز وجود دارد که در داخل آن عدد 1000 نوشته شده است . این یعنی چه ؟
در واقع اینجا با استفاده از این کدها خواسته شده که از مجموع همه اطلاعاتی که در داخل جدولی به نام earthquake فقط هزار ردیف اول از بالا را استخراج و به عنوان خروجی نمایش بدهد .
تصویر زیر نمایی از این کدها و خروجی مربوط به آنها را نمایش می دهد .
دستور Top می تواند به صورت درصد هم استفاده شود . مثلا به کد زیر نگاه کنید .
use Erthequake
go
select top 20 PERCENT *
from dbo.ersthquak
در کدهای بالا از برنامه خواسته شده که فقط 20 درصد از کل اطلاعات موجود در داخل جدول dbo.earthquak را استخراج و به عنوان خروجی در اختیار ما قرار بدهد .
بطور کل شکل کلی دستور TOP به صورت زیر است .
SELECT TOP number|percent column_name(s)
FROM table_name
چطوری با دستور SELECT فقط ستون های مورد نظر را انتخاب کنید ؟
در حالت قبلی کدهای ما همه ستون های موجود در داخل جدولی را که معرفی کرده بودیم برای ما بر می گرداند . اما فرض کنید که در حال حاضر نیازی ندارید که اطلاعات همه ستون ها را داشته باشید و فقط می خواهید اطلاعات چند تا ستون خاص را استخراج کنید . برای این کار چه باید کرد ؟
اینجا باید به جای استفاده از علامت * به سراغ گزینه دوم بروید . یعنی گزینه item .
حالا به کدهای زیر نگاه کنید .
use Erthequake
select occurred_on,magnitude,place
from dbo.ersthquak;
با استفاده از کدهای بالا از برنامه خواسته شده که فقط 3 تا از ستون هایی که نامشان را اینجا ذکر کرده ایم از جدول مورد نظر را برای ما استخراج کند .
اصل کدها و خروجی که این کدها ایجاد می کنند را در محیط SSMS می توانید در تصویر زیر مشاهده کنید .
اگر بخواهید در کدهای بالا از دستور TOP هم استفاده کنید می شود از کدهای زیر استفاده کنید .
use Erthequake
select top 30 percent
occurred_on,magnitude,place
from dbo.ersthquak;
کدهای بالا 30 درصد از اطلاعات مورد نیاز شما را به همراه ستون هایی که اسم برده اید را استخراج می کند
تا به اینجای کار خروجی کدها را دیدید ؟ همه چیز روبراه بود ؟
اما یک نکته .
قبول دارید که این خروجی یک خورده می تواند برای کاربرمان نا مفهوم باشد . مخصوصا که اگر کاربر به زبان انگلیسی هم مسلط نباشد نمی تواند متوجه شود که هر ستون از این داده ها چه اطلاعاتی را دارد نمایش می دهد .
موافق هستید که این ستون ها را برای کاربرمان قابل فهم تر کنیم ؟ می پرسید چطور ؟ با من به قسمت بعدی بیایید تا به شما توضیح بدهم .
ترفند شماره-1 : تغییر عنوان ستونها در خروجی کدهای SQL
اینجا برای اینکه خروجی این کدها برای کاربرتان قابل فهم تر کنید می توانید کاری کنید که SQL بعد از اینکه اطلاعات را از جدول مورد نظر شما را استخراج کرد به جای نمایش اسامی اصلی هر ستون، از عنوانی که شما برای هر کدام از ستون ها تعیین می کنید استفاده کند .
برای این کار باید تغییرات کوچکی در کدهای قبلی خودتان بدهید . این تغییرات را در کدهای زیر می توانید پیدا کنید .
use Erthequake
select occurred_on as 'تاریخ وقوع '
,magnitude as 'شدت زلزله'
,place as 'مکان وقوع '
from dbo.ersthquak;
اما اینجا چه اتفاقی می افتد ؟
چیزی که باید بدانید این است که هر ستون در داخل جدول اصلی که اطلاعات شما در داخل آن قرار دارد برای خودش دارای یک اسم است- به این اسم در اصطلاح می گوییم اسم اصلی یک ستون – و SQL هم وقتی که اطلاعات یک یا چند تا ستون را در قالب یک کوئری استخراج می کند برای نامگذاری ستونها از این اسامی اصلی مربوط به هر کدام از آنها در داخل جدول استفاده می کند .
اما در کدهای بالا شما از برنامه می خواهید که به جای اسم اصلی هر ستون که در داخل جدول وجود دارد از اسامی استفاده کند که شما در اختیارش قرا می دهید . به این اسامی در اصطلاح اسامی مستعار یا Alias Name می گویند .
خروجی این کدها چیزی مثل تصویر زیر است .
یادتان باشد که انتخاب Alias Name قرار نیست تاثیری در اسامی ستون ها در جدول مورد نظر شما داشته باشند .
دیدگاهتان را بنویسید