با عرض سلام و خسته نباشید خدمت شما دوستان عزیز! امروز می خواهیم در رابطه با مبحث Alias ها (به معنی نام مستعار) صحبت کنیم و فواید آن را مورد بحث قرار می دهیم و همچنین با دستور جالب JOIN و انواع آن آشنا خواهیم شد.
Alias ها در SQL
ساختار کلی Alias ها به این شکل است:
برای ستون ها:
SELECT column_name AS alias_name FROM table_name;
برای جدول ها:
SELECT column_name(s) FROM table_name AS alias_name;
بیایید به سراغ مثال ها برویم تا بهتر با طرز کارش آشنا شوید. ابتدا جدول هایی را بررسی می کنیم که می خواهیم مثال هایمان را روی آن ها اجرا کنیم.
قسمتی از جدول Customers
Country | PostalCode | City | Address | ContactName | CustomerName | CustomerID |
Mexico | 05021 | México D.F. | Avda. de la Constitución 2222 | Ana Trujillo | Ana Trujillo Emparedados y helados | 2 |
Mexico | 05023 | México D.F. | Mataderos 2312 | Antonio Moreno | Antonio Moreno Taquería | 3 |
UK | WA1 1DP | London | 120 Hanover Sq. | Thomas Hardy | Around the Horn | 4 |
قسمتی از جدول Orders
ShipperID | OrderDate | EmployeeID | CustomerID | OrderID |
3 | 1996-11-14 | 8 | 58 | 10354 |
1 | 1996-11-15 | 6 | 4 | 10355 |
2 | 1996-11-18 | 6 | 86 | 10356 |
مثال های استفاده از Alias
مثال اول – کد زیر دو Alias می سازد؛ یکی برای ستون CustomerID و دیگری برای CustomerName:
SELECT CustomerID AS ID, CustomerName AS Customer FROM Customers;
برای اجرای این دستور در پایگاه داده ی Northwind روی این لینک کلیک کنید.
در واقع کار خاصی انجام ندادیم، فقط خواستیم به شما نشان بدهیم که می توانید از این شیوه نیز استفاده کنید. فایده ی آن را در مثال های بعدی می بینید.
مثال دوم – کد زیر دو Alias می سازد؛ یکی برای ستون CustomerName و دیگری برای ContactName:
SELECT CustomerName AS Customer, ContactName AS [Contact Person] FROM Customers;
برای اجرای این دستور در پایگاه داده ی Northwind روی این لینک کلیک کنید.
آیا این مثال دقیقا مانند مثال قبلی نبود؟ اگر دقت کنید علامت های براکت را در کد می بینید. آیا می توانید حدس بزنید کارشان چیست؟ اگر Alias ما دارای اسپیس باشد باید یا بین براکت ها یا بین double quotation قرار بگیرد.
مثال سوم – کد زیر یک Alias به نام Address می سازد که چهار ستونِ Address, PostalCode, City و Country را با هم در نظر می گیرد:
SELECT CustomerName, Address + ', ' + PostalCode + ' ' + City + ', ' + Country AS Address FROM Customers;
برای اجرای این دستور در پایگاه داده ی Northwind روی این لینک کلیک کنید.
نکته: اگر بخواهید کد بالا را در MySQL استفاده کنید باید آن را به شکل زیر بنویسید:
SELECT CustomerName, CONCAT(Address,', ',PostalCode,', ',City,', ',Country) AS Address FROM Customers;
تا این قسمت تنها روی ستون ها کار کردیم اما نوبتی هم باشد نوبت جدول ها است!
مثال چهارم – دستور زیر تمام سفارشاتی را انتخاب می کند که CustomerID=4 باشد:
SELECT o.OrderID, o.OrderDate, c.CustomerName FROM Customers AS c, Orders AS o WHERE c.CustomerName="Around the Horn" AND c.CustomerID=o.CustomerID;
برای اجرای این دستور در پایگاه داده ی Northwind روی این لینک کلیک کنید.
ما در کد بالا از جدول های Customers و Orders استفاده می کنیم و به آن ها Alias های c و o می دهیم. همانطور که می بینید فایده ی استفاده از Alias ها این است که کدها خواناتر شده و از طرفی کوتاه تر هم می شوند. واضح است که Alias ها اختیاری اند و بستگی به سلیقه ی شما دارند. برای مقایسه، کد اصلی را بدون Alias می آوردم:
SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName FROM Customers, Orders WHERE Customers.CustomerName="Around the Horn" AND Customers.CustomerID=Orders.CustomerID;
مشخص است که کدها کمی طولانی تر شده اند. مسئله این است که اگر کدها طولانی تر شوند، احتمال خطای تایپی نیز بیشتر می شود!
به طور خلاصه می توان گفت مزیت استفاده از Alias ها در موارد زیر است:
- زمانی که در کوئری شما بیشتر از یک جدول داشته باشیم.
- زمانی که در کوئری شما از توابع استفاده شده باشد.
- نام ستون ها بسیار طولانی و یا ناخوانا (مانند SlJ87A) هستند.
- دو یا تعداد بیشتری از ستون ها با هم ادغام شده باشند.
دستور JOIN
ما زمانی از دستور JOIN استفاده می کنیم که بخواهیم ردیف های دو یا چند جدول را بر اساس ستونی که بین شان است با هم ادغام کنیم. احتمالا برایتان گیج کننده بود! بگذارید ابتدا به جدول های زیر نگاهی بیندازیم:
قسمتی از جدول Orders
OrderDate | CustomerID | OrderID |
1996-09-18 | 2 | 10308 |
1996-09-19 | 37 | 10309 |
1996-09-20 | 77 | 10310 |
قسمتی از جدول Customers
Country | ContactName | CustomerName | CustomerID |
Germany | Maria Anders | Alfreds Futterkiste | 1 |
Mexico | Ana Trujillo | Ana Trujillo Emparedados y helados | 2 |
Mexico | Antonio Moreno | Antonio Moreno Taquería | 3 |
اگر به دو جدول بالا دقت کنید متوجه خواهید شد که ستون CustomerID در جدول Orders به ستونِ CustomerID در جدول Customers اشاره دارد! در واقع رابطه ی بین این دو جدول همان CustomerID است. حالا می توانیم با دستور JOIN ردیف هایی را از هر دو جدول انتخاب کنیم که مقادیر یکسانی دارند:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate FROM Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
برای اجرای این دستور در پایگاه داده ی Northwind روی این لینک کلیک کنید.
خروجی این کد تعداد ردیف های بسیار زیادی است که به این شکل هستند:

اما سوالی پیش می آید… دستور INNER JOIN دیگر چیست؟ باید بدانید که دستور JOIN چند حالت مختلف دارد که از این قرار اند:

- INNER) JOIN): ردیف هایی را بر میگرداند که دارای مقادیر تطبیق یافته با کوئری در هر دو جدول هستند.
- LEFT (OUTER) JOIN: تمام ردیف ها را از جدول سمت چپ و مقادیر تطبیق یافته را از جدول سمت راست برمیگرداند.
- RIGHT (OUTER) JOIN: تمام ردیف ها را از جدول سمت راست و مقادیر تطبیق یافته را از جدول سمت چپ برمیگرداند.
- FULL (OUTER) JOIN: اگر در سمت چپ یا راست ردیف ها و مقادیر تطبیق یافته ای باشد، همه را بر میگرداند.
می توانید به عکس بالا توجه کنید و مفاهیم این کدها را به شکل تصویری ببینید.
خلاصه ی مقاله
در این قسمت با مبحث Alias آشنا شده و یاد گرفتیم که بیشتر در جهت خوانایی کد، کوتاه تر شدن آن و پایین آمدن درصد خطا از آن استفاده می کنیم. همچنین با دستور JOIN و انواع مختلف آن آشنا شدیم و مثال هایی از هر دو را نیز یاد گرفتیم. امیدوارم مورد پسند شما واقع شده باشد.