با عرض سلام و خسته نباشید خدمت شما دوستان عزیز! امروز می خواهیم در رابطه با مبحث Alias ها (به معنی نام مستعار) صحبت کنیم و فواید آن را مورد بحث قرار می دهیم و همچنین با دستور جالب JOIN و انواع آن آشنا خواهیم شد.
از Alias ها برای دادن نام های موقت به جدول ها و ستون ها استفاده می کنیم. در واقع فایده ی استفاده از آن ها این است که نام ستون ها را خوانا تر می کنند و عمرشان نیز پس از اجرای کوئری تمام می شود.
ساختار کلی 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 می سازد؛ یکی برای ستون 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 ها در موارد زیر است:
ما زمانی از دستور 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 چند حالت مختلف دارد که از این قرار اند:
می توانید به عکس بالا توجه کنید و مفاهیم این کدها را به شکل تصویری ببینید.
در این قسمت با مبحث Alias آشنا شده و یاد گرفتیم که بیشتر در جهت خوانایی کد، کوتاه تر شدن آن و پایین آمدن درصد خطا از آن استفاده می کنیم. همچنین با دستور JOIN و انواع مختلف آن آشنا شدیم و مثال هایی از هر دو را نیز یاد گرفتیم. امیدوارم مورد پسند شما واقع شده باشد.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.