با سلام، در این قسمت قصد داریم در رابطه با دستور SELECT
و جزئیات آن صحبت کنیم بنابراین بدون مقدمه وارد بحث می شویم!
دستور SELECT
(به معنی "انتخاب کردن") برای انتخاب داده ها از پایگاه داده مورد استفاده قرار می گیرد. داده هایی که با دستور SELECT
بر میگردند در جدول نتایج ذخیره می شوند که به آن result-set (به معنی "دسته ی نتیجه ها") می گوییم.
ساختار کلی این دستور به شکل زیر است:
SELECT column1, column2, ... FROM table_name;
اگر یادتان باشد column به معنی "ستون" و row به معنای ردیف است. همچنین به جای table_name باید نام جدول خود را قرار دهید.
در واقع این دستور می گوید ستون های فرضیِ column1 و column2 را از جدولِ فرضی table_name به ما بده. اگر تمام ستون ها را بخواهیم می توانیم از دستور زیر استفاده کنیم:
SELECT * FROM table_name;
علامت ستاره (*) به معنی "هر چیزی" است، بنابراین زمانی که می گوییم * SELECT
یعنی هر چیزی را از جدول table_name بردار و به ما تحویل بده.
بیایید به پایگاه داده ی Northwind برویم.
اگر یادتان باشد پایگاه داده ی Northwind پایگاه داده ای است که از قبل توسط ماکروسافت آماده شده است و ما در طول این دوره با آن کار می کنیم. تصویر زیر قسمتی از این پایگاه داده است. برای آشنایی با ستون ها، ردیف ها و کلیت جدول به آن توجه کنید:
حال می خواهیم به عنوان تمرین، از دستور SELECT
در پایگاه داده ی Northwind استفاده کنیم و ستون های City و CustomerName را دریافت کنیم. این کار بسیار ساده است، تنها کافی است از دستور زیر استفاده کنید:
SELECT CustomerName,City FROM Customers;
برای مشاهده ی نتیجه ی این دستور روی ایـــــن لیـــــنک کلیک کنید.
هشدار: از آن جایی که پایگاه داده ی ما به صورت خاصی برای استفاده ی شما قرار داده شده است، استفاده از مرورگر هایی غیر از کروم یا سافاری ممکن است باعث تولید خطا های مختلفی شود. ما سعی می کنیم برای دوستانی که از فایرفاکس استفاده می کنند لینک جداگانه ارائه دهیم اما اگر به مشکل برخورد کردید از مرورگر کروم استفاده کنید.
فکر می کنید چند ردیف به ما برگردانده می شود؟ درست حدس زدید 91 ردیف! چرا؟ تعداد تمام ردیف های ما 91 عدد بود (یعنی 91 مشتری داشته ایم). اگر به ساختار کلی دستور SELECT که بالاتر نوشته ام دقت کنید می بینید که با این دستور ستون ها را انتخاب می کنیم و تعداد ردیف ها دست نخورده باقی می ماند.
بنابراین خروجی ما می شود دو ستونِ CustomerName و City که از 91 ردیف گرفته شده اند. قسمتی از result set ما مانند تصویر زیر خواهد بود:
اگر تمام ستون ها را بخواهیم از همان علامت ستاره استفاده می کنیم. مثال:
SELECT * FROM Customers;
برای مشاهده ی نتیجه ی این دستور روی این لینک کلیک کنید. این دستور در واقع تمام ستون ها را انتخاب می کند. از مثال قبل می دانیم تعداد ردیف ها نیز دست نخورده است بنابراین این دستور عملا کل جدول ما را یک جا به ما بر می گرداند.
کلمه ی distinct در فارسی به معنای "متفاوت" یا "متمایز" است. دستور SELECT DISTINCT در واقع تنها مقادیری را برمیگرداند که متمایز باشند (یعنی تکراری نباشند).
یک ستون در جدول شما معمولا مقادیر تکراری بسیاری دارد. به طور مثال ستونی فرضی به نام "نام" را در نظر بگیرید. فکر می کنید تمام مشتریان شما نام متفاوتی دارند؟ خیر. شاید ده ها نفر نام یکسانی داشته باشند؛ به طور مثال 10 نفر حسین، 20 نفر سارا، 5 نفر رضا و ... داشته باشیم. مشکل اینجاست که برخی اوقات شما تنها مقادیری را می خواهید که تکراری نباشند؛ در چنین حالتی از این دستور استفاده می کنیم. ساختار کلی این دستور به این شکل است:
SELECT DISTINCT column1, column2, ... FROM table_name;
مشخص است که تفاوت آنچنانی با SELECT ندارد بلکه کلمه ی DISTINCT به آن اضافه می شود.
برویم به سراغ یک مثال!
دستور زیر ابتدا جدول Customers را پیدا کرده و سپس تمام مقادیر ستون Country را برمی گرداند، حتی مقادیر تکراری را:
SELECT Country FROM Customers;
برای مشاهده ی نتیجه ی این دستور روی این لینک کلیک کنید.
همانطور که انتظار می رود، تعداد ردیف های برگشتی ما 91 عدد است و تمام مقادیر تکراری نیز در result set ما موجود است؛ به طور مثال از آن جا که چندین مشتری از Mexico یا کشور مکزیک داشته ایم، این کشور چندین بار تکرار شده است.
حالا بیایید از کلمه ی DISTINCT استفاده کنیم:
SELECT DISTINCT Country FROM Customers;
برای مشاهده ی نتیجه ی این دستور روی این لینک کلیک کنید.
این بار تعداد ردیف های برگشتی ما 21 عدد است! چرا؟ به این دلیل که مشتریان ما از 21 کشور بوده اند و تکرار نام کشور ها از ردیف ها حذف شده است.
سوال: در لینکی که به ما داده شده است، تعداد ردیف های برگشتی کاملا مشخص است. آیا در هنگام برنامه نویسی نیز این طور است؟
پاسخ: خیر. در هنگام کار با پایگاه داده تقریبا هیچ چیز به صورت خودکار برای شما نمایش داده نمی شود. اگر می خواهید تعداد ردیف های برگشتی را بدانید باید از دستور count استفاده کنید. مثال:
SELECT COUNT(DISTINCT Country) FROM Customers;
برای مشاهده ی نتیجه ی این دستور برای مرورگر های کروم و سافاری روی این لینک کلیک کنید.
برای مشاهده ی نتیجه ی این دستور برای مرورگر های Edge و فایرفاکس روی این لینک کلیک کنید.
خروجی ما عدد 21 خواهد بود. در مورد COUNT در جلسات بعد مفصلا صحبت خواهیم کرد.
در این جلسه با ساختار کلی دستورات SELECT و SELECT DISTINCT آشنا شدیم و ار هر کدام مثالی ارائه کردیم. در قسمت بعد به سراغ دستور where می رویم و تمریناتی را نیز به شما خواهیم داد. امیدوارم از این قسمت لذت برده باشید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.