akofaraji.ir
دستور SELECT و SELECT DISTINCT در SQL
نوشته شده در تاریخ 29 فروردین 1403
نظرات: 0 امتیاز: 5 زمان مطالعه: 17 دقیقه

 

دستور SELECT در زبان SQL

 

دستور SELECT (به معنی “انتخاب کردن”) برای انتخاب داده ها از پایگاه داده مورد استفاده قرار می گیرد. داده هایی که با دستور SELECT بر میگردند در جدول نتایج ذخیره می شوند که به آن result-set (به معنی “دسته ی نتیجه ها”) می گوییم.

 

ساختار کلی این دستور به شکل زیر است:

 

اگر یادتان باشد column به معنی “ستون” و row به معنای ردیف است. همچنین به جای table_name باید نام جدول خود را قرار دهید.

در واقع این دستور می گوید ستون های فرضیِ column1 و column2 را از جدولِ فرضی table_name به ما بده. اگر تمام ستون ها را بخواهیم می توانیم از دستور زیر استفاده کنیم:

 

علامت ستاره (*) به معنی “هر چیزی” است، بنابراین زمانی که می گوییم * SELECT یعنی هر چیزی را از جدول table_name بردار و به ما تحویل بده.

بیایید به پایگاه داده ی Northwind برویم.

 

دستور SELECT در عمل

 

اگر یادتان باشد پایگاه داده ی Northwind پایگاه داده ای است که از قبل توسط ماکروسافت آماده شده است و ما در طول این دوره با آن کار می کنیم. تصویر زیر قسمتی از این پایگاه داده است. برای آشنایی با ستون ها، ردیف ها و کلیت جدول به آن توجه کنید:

 

Northwind database
Northwind database

 

حال می خواهیم به عنوان تمرین، از دستور SELECT در پایگاه داده ی Northwind استفاده کنیم و ستون های City و CustomerName را دریافت کنیم. این کار بسیار ساده است، تنها کافی است از دستور زیر استفاده کنید:

 

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

 
هشدار: از آن جایی که پایگاه داده ی ما به صورت خاصی برای استفاده ی شما قرار داده شده است، استفاده از مرورگر هایی غیر از کروم یا سافاری ممکن است باعث تولید خطا های مختلفی شود. ما سعی می کنیم برای دوستانی که از فایرفاکس استفاده می کنند لینک جداگانه ارائه دهیم اما اگر به مشکل برخورد کردید از مرورگر کروم استفاده کنید.

فکر می کنید چند ردیف به ما برگردانده می شود؟ درست حدس زدید 91 ردیف! چرا؟ تعداد تمام ردیف های ما 91 عدد بود (یعنی 91 مشتری داشته ایم). اگر به ساختار کلی دستور SELECT که بالاتر نوشته ام دقت کنید می بینید که با این دستور ستون ها را انتخاب می کنیم و تعداد ردیف ها دست نخورده باقی می ماند.

بنابراین خروجی ما می شود دو ستونِ CustomerName و City که از 91 ردیف گرفته شده اند. قسمتی از result set ما مانند تصویر زیر خواهد بود:

 

قسمتی از نتایج برگشتی پس از استفاده از دستور SELECT CustomerName,City FROM Customers
قسمتی از نتایج برگشتی پس از استفاده از دستور SELECT CustomerName ,City FROM Customers

 

اگر تمام ستون ها را بخواهیم از همان علامت ستاره استفاده می کنیم. مثال:

 

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

 

دستور SELECT DISTINCT

 

کلمه ی distinct در فارسی به معنای “متفاوت” یا “متمایز” است. دستور SELECT DISTINCT در واقع تنها مقادیری را برمیگرداند که متمایز باشند (یعنی تکراری نباشند).

یک ستون در جدول شما معمولا مقادیر تکراری بسیاری دارد. به طور مثال ستونی فرضی به نام “نام” را در نظر بگیرید. فکر می کنید تمام مشتریان شما نام متفاوتی دارند؟ خیر. شاید ده ها نفر نام یکسانی داشته باشند؛ به طور مثال 10 نفر حسین، 20 نفر سارا، 5 نفر رضا و … داشته باشیم. مشکل اینجاست که برخی اوقات شما تنها مقادیری را می خواهید که تکراری نباشند؛ در چنین حالتی از این دستور استفاده می کنیم. ساختار کلی این دستور به این شکل است:

 

مشخص است که تفاوت آنچنانی با SELECT ندارد بلکه کلمه ی DISTINCT به آن اضافه می شود.

برویم به سراغ یک مثال!

دستور زیر ابتدا جدول Customers را پیدا کرده و سپس تمام مقادیر ستون Country را برمی گرداند، حتی مقادیر تکراری را:

 

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

 

همانطور که انتظار می رود، تعداد ردیف های برگشتی ما 91 عدد است و تمام مقادیر تکراری نیز در result set ما موجود است؛ به طور مثال از آن جا که چندین مشتری از Mexico یا کشور مکزیک داشته ایم، این کشور چندین بار تکرار شده است.

حالا بیایید از کلمه ی DISTINCT استفاده کنیم:

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

 

این بار تعداد ردیف های برگشتی ما 21 عدد است! چرا؟ به این دلیل که مشتریان ما از 21 کشور بوده اند و تکرار نام کشور ها از ردیف ها حذف شده است.

 

سوال: در لینکی که به ما داده شده است، تعداد ردیف های برگشتی کاملا مشخص است. آیا در هنگام برنامه نویسی نیز این طور است؟

پاسخ: خیر. در هنگام کار با پایگاه داده تقریبا هیچ چیز به صورت خودکار برای شما نمایش داده نمی شود. اگر می خواهید تعداد ردیف های برگشتی را بدانید باید از دستور count استفاده کنید. مثال:

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

برای مشاهده ی نتیجه ی این دستور برای مرورگر های Edge و فایرفاکس روی این لینک کلیک کنید.

خروجی ما عدد 21 خواهد بود. در مورد COUNT در جلسات بعد مفصلا صحبت خواهیم کرد.

 

خلاصه ی مقاله

در این جلسه با ساختار کلی دستورات SELECT و SELECT DISTINCT آشنا شدیم و ار هر کدام مثالی ارائه کردیم. در قسمت بعد به سراغ دستور where می رویم و تمریناتی را نیز به شما خواهیم داد. امیدوارم از این قسمت لذت برده باشید.

 

منبع: سایت روکسو


اگر احساس می کنید این مطلب برای شما مفید بود ، از 1 تا 10 به این مطلب امتیاز دهید

دیدگاه کاربران در مورد این مطلب

ثبت نظر
به نظر خوب میاد!
لطفا نام را وارد کنید
@
لطفا یک ایمیل منحصر به فرد و معتبر انتخاب کنید.
لطفا متن با کلمات و معانی مفهوم دار وارد نمایید