عبارت‌های In ،Distinct و Alias در SQL — راهنمای جامع

۱۱۰ بازدید
آخرین به‌روزرسانی: ۱۲ شهریور ۱۳۹۷
زمان مطالعه: ۴ دقیقه
عبارت‌های In ،Distinct و Alias در SQL — راهنمای جامع

در ادامه سلسله مطالب آموزش عبارت‌های SQL، در این راهنما نیز سه مورد دیگر از عبارت‌های SQL را که در انتخاب رکوردهای مورد نظر شما از پایگاه داده راهگشا هستند، معرفی می‌کنیم.

Distinct

کلیدواژه Distinct به شما امکان می‌دهد که مقادیر منحصر به فرد را در یک ستون بیابید. زمانی که یک جدول داده‌های زیادی در خود جای داده باشد، برخی ستون‌ها شامل مقادیر تکراری خواهند بود.

برای نمونه بسیاری از افراد نام و نام خانوادگی مشترکی دارند. در اغلب موارد این مسئله مشکلی ایجاد نمی‌کند. اما در برخی موارد باید بدانید که چه تعدادی از مقادیر منحصر به فرد در یک ستون وجود دارند. برای این کار باید از کلیدواژه Distinct استفاده کنید.

عبارت SQL

SELECT DISTINCT(FIRSTNAME) FROM INDIVIDUAL;

جدول منبع

IndividualIdFirstNameLastNameUserName
1FredFlinstonefreddo
2HomerSimpsonhomey
3HomerBrownnotsofamous
4OzzyOzzbournesabbath
5HomerGainnoplacelike

نتیجه

در این مثال با استفاده از کلیدواژه Distinct همه مشتریانی که نام یکسانی داشتند به عنوان یک نفر در نظر گرفته شده‌اند. نتایجی که از این عبارت بازگشت می‌یابد، شامل تنها یک مورد (Homer) است؛ گرچه سه مدخل متفاوت با این نام در جدول وجود دارد.

FirstName
Fred
Homer
Ozzy

عبارت IN

IN یک عملگر است که به شما کمک می‌کند چندین مقدار را در بند WHERE خود تعیین کنید. عملگر IN زمانی که نیاز به مقایسه یک مقدار با فهرستی از مقادیر داشته باشید مفید خواهد بود. در اغلب موارد این فهرست می‌تواند نتیجه یک کوئری از جدول دیگری باشد.

ساختار SQL

SELECT * FROM TABLE_NAME
WHERE COLUMN_NAME IN (VALUE1,VALUE2,...);

مثال

SELECT * FROM INDIVIDUAL
WHERE LASTNAME IN ('SIMPSON','OZZBOURNE','FLINSTONE');

جدول منبع

IdFirstNameLastNameUserName
1FredFlinstonefreddo
2HomerSimpsonhomey
3HomerBrownnotsofamous
4OzzyOzzbournesabbath
5HomerGainnoplacelike

نتیجه

IndividualIdFirstNameLastNameUserName
1FredFlinstonefreddo
2HomerSimpsonhomey
4OzzyOzzbournesabbath

ممکن است متوجه شده باشید که این دستور همان نتیجه‌ای را بازمی‌گرداند که عبارت SQL زیر باز خواهد گرداند:

SELECT * FROM INDIVIDUAL
WHERE LASTNAME = 'SIMPSON'
OR LASTNAME = 'OZZBOURNE'
OR LASTNAME = 'FLINSTONE';

این حرف صحیح است و دستور فوق نیز نتیجه مشابهی ارائه می‌کند؛ اما استفاده از عبارت IN در دستور SQL بسیار خلاصه‌تر است.

IN در SQL و کوئری‌های فرعی

اما یکی از مفیدترین استفاده از عملگر IN زمانی است که می‌خواهید یک مقدار را در برابر نتایج یک کوئری دیگر مقایسه کنید. برای نمونه فرض کنید جدول دیگری به نام Publisher داشته باشیم. این جدول شامل کاربرانی است که از طریق یک کنسول مدیریتی امکان انتشار مطالبی را در وب‌سایت ما داشته‌اند. همه کاربران موجود در جدول Publisher در جدول Individual نیز حضور دارند؛ اما همه کاربران موجود در جدول Individual در جدول Publisher وجود ندارند.

جدول Individual

IndividualIdFirstNameLastNameUserName
1FredFlinstonefreddo
2HomerSimpsonhomey
3HomerBrownnotsofamous
4OzzyOzzbournesabbath
5HomerGainnoplacelike

جدول Publisher

IndividualIdAccessLevel
1Administrator
2Contributor
3Contributor
4Contributor

وظیفه ما این است که فهرستی از نام کاربری همه افراد Publisher ایجاد کنیم که دارای دسترسی Contributor هستند. ممکن است متوجه شده باشید که نام کاربران در جدول Individual قرار دارد؛ اما سطح دسترسی در جدول Publisher ذخیره شده است. ضمناً به طور بالقوه ممکن است افراد با خصوصیت Contributor زیادی وجود داشته باشند. در چنین مواردی بهترین کار استفاده از عملگر IN است.

عبارت SQL

SELECT USERNAME FROM INDIVIDUAL
WHERE INDIVIDUALID IN
(SELECT INDIVIDUALID
FROM PUBLISHER
WHERE ACCESSLEVEL = 'CONTRIBUTOR');

نتیجه

UserName
homey
notsofamous
sabbath

در این مثال رکوردهای زیادی در جدول Publisher وجود نداشت؛ اما حالتی را تصور کنید که در چنین جدولی هزاران رکورد وجود داشته باشد. در این حالت عبارت IN بسیار مفید خواهد بود.

عبارت ALIAS در SQL

منظور از ALIAS در SQL نامی مستعار است که به یک جدول داده می‌شود. بدین ترتیب کار با نام‌های جدول‌ها، به خصوص در مواردی که نام‌ها طولانی هستند، راحت‌تر می‌شود.

نام مستعار (ALIAS) هر چیزی می‌تواند باشد؛ اما معمولاً سعی می‌شود از نام‌های کوتاه استفاده شود. شاید از خود بپرسید که چرا باید برای جدولی که خود از قبل نام دارد، بخواهیم یک نام جدید بدهیم؟ پاسخ این است که این کار دلایل خوبی دارد که در ادامه برخی از آن‌ها را مورد اشاره قرار می‌دهیم:

  • کوئری‌ها در برخی موارد بسیار طولانی می‌شوند. ALIAS ها می‌توانند باعث شوند که خواندن کوئری‌ها آسان‌تر شود.
  • ممکن است در مواردی متوجه شوید که در موارد متعددی به یک نام جدول اشاره می‌کنید. این حالت در مواردی که با چند جدول کار می‌کنید و باید به ستون‌های مختلف آن جدول‌ها اشاره کنید، بسیار اتفاق می‌افتد. این وضعیت می‌تواند آزار دهنده باشد، چون باید هر بار نام کامل را بنویسید و در مواردی که این نام طولانی باشد نیز این زحمت دو چندان می‌شود.
  • ممکن است در مواردی برای مثال در صورت وجود یک SELF JOIN، مجبور باشید با وهله‌های مختلفی از یک جدول واحد کار کنید.

همان طور که اشاره کردیم یک ALIAS می‌تواند هر چیزی باشد. برای مثال، اگر جدولی به نام INDIVIDUAL داشته باشید، می‌توانید ALIAS آن را به صورت i تعیین کنید. برای جدول دیگری که INDIVIDUALPRODUCTPURCHASE نام دارد، می‌توانید یک ALIAS به صورت ipp نامگذاری کنید.

ساختار ALIAS

SELECT * FROM TABLE_NAME AS ALIAS_NAME;

مثال

SELECT O.JOBTITLE FROM INDIVIDUAL AS I, OCCUPATION AS O
WHERE I.FIRSTNAME = 'HOMER'
ORDER BY O.JOBTITLE;

بدین ترتیب این نوشته با موضوع معرفی برخی از عملگرهای SQL نیز به پایان رسید. شما می‌توانید هر زمان از بخش نظرات در ادامه، برای برقراری ارتباط در خصوص موضوعات این نوشته، ارائه دیدگاه‌ها و پیشنهادهای خود استفاده کنید.

اگر این نوشته مورد توجه شما قرار گرفته است، ممکن است به موارد زیر نیز علاقه‌مند باشید:

==

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
quackitquackitquackit
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *