جشنواره فطر سون لرن

مفهوم JOIN در SQL (Inner, Left, Right و Full Join)

زمان مطالعه: 5 دقیقه
۱۸ فروردین ۱۳۹۹

مفهوم JOIN در SQL:

SQL (تلفظ "ess-que-el") مخفف Structured Query Language به معنای زبان پرس‌وجوی ساخت‌یافته است. SQL برای برقراری ارتباط با یک دیتابیس یا پایگاه داده استفاده می‌شود. طبق گفته‌ی ANSI (موسسه‌ی استاندارد ملی آمریکا)، SQL یک زبان استاندارد برای سیستم مدیریت پایگاه داده‌های رابطه است. کوئری‌های SQL برای انجام کارهایی مانند بروزرسانی یا بازیابی داده‌ها از یک پایگاه داده استفاده می‌شود. برخی از سیستم‌های رایج مدیریت پایگاه‌داده‌های رابطه‌ای که از SQL استفاده می‌کنند عبارتند از: Oracle، Sybase، Microsoft SQL Server، Access، Ingres و .... اگرچه اکثر سیستم‌های پایگاه داده از SQL استفاده می‌کنند، اما اکثر آن‌ها دارای پسوندهای اختصاصی دیگری نیز هستند که معمولاً فقط در همان سیستم‌ها استفاده می‌شود. با این وجود، با استفاده از دستورات استاندارد SQL مانند"Select" ،"Insert" ،"Update" ، "Delete"، "Create" و "Drop" می‌توان اکثر کارهایی که برای ارتباط با پایگاه داده نیاز است را انجام داد. یکی دیگر از دستورات کاربردی و مهم SQL هنگام کار با جداول، دستور JOIN است که در ادامه این مقاله با آن آشنا می‌شویم.

فهرست محتوای این مقاله

معرفی دستور JOIN در SQL:

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

مطالعه‌ی بیش‌تر: بررسی تاریخچه SQL Server

انواع مختلف JOIN:

به طور کلی چهار نوع JOIN وجود دارد که عبارتند از:

  • INNER JOIN
  • LEFT JOIN
  • RIGHT JOIN
  • FULL JOIN

تصویر زیر مفهوم انواع JOIN را به خوبی نشان می‌دهد.

مفهوم JOIN در SQL

برای توضیح مفهوم انواع JOIN جدول‌های زیر را در نظر بگیرید.

Inner join  در  SQL:

Inner join ساده‌ترین نوع JOIN است که در آن هر سطر در یک جدول با تمام سطرهای جدول دیگر مطابقت دارد. به عبارت دیگر در این نوع JOIN، عمل JOIN  و ترکیب ردیف تنها زمانی انجام می‌شود که شرط JOIN(تطابق سطرهای جداول)، TRUE ارزیابی شود. برای مثال، اگر شما یک عمل Inner join روی جداول Employee و Projects انجام دهید، تنها تاپل‌هایی که دارای مقادیر مطابق در هر دو جدول هستند، به عنوان خروجی تحویل داده می‌شوند.

سینتکس Inner join:

SELECT Table1.Column1,Table1.Column2,Table2.Column1,....
FROM Table1
INNER JOIN Table2
ON Table1.MatchingColumnName = Table2.MatchingColumnName;

مثال:

SELECT Employee.EmpID, Employee.EmpFname, Employee.EmpLname, Projects.ProjectID, Projects.ProjectName
FROM Employee
INNER JOIN Projects ON Employee.EmpID=Projects.EmpID;

خروجی:

مفهوم JOIN در SQL

Full join  در  SQL:

full outer join یا full join مجموعه‌ای از نتایج را در بر می‌گیرد که شامل تمام ردیف‌های همسان هر دو جدول، در صورت وجود، می‌باشد. در صورت عدم مطابقت، مقدار رکورد برابر با NULL خواهد بود.

سینتکس Full join:

SELECT Table1.Column1,Table1.Column2,Table2.Column1,....
FROM Table1
FULL JOIN Table2
ON Table1.MatchingColumnName = Table2.MatchingColumnName;

مثال:

SELECT Employee.EmpFname, Employee.EmpLname, Projects.ProjectID
FROM Employee
FULL JOIN Projects
ON Employee.EmpID = Projects.EmpID;

خروجی:

مفهوم JOIN در SQL full join

LEFT JOIN  در  SQL:

LEFT JOIN یا LEFT OUTER JOIN همه‌ی ردیف‌های همسان از جدول سمت راست و هم‌چنین همه‌ی ردیف‌ها و سطرهای غیر همسان از جدول سمت چپ را باز می‌گرداند. به عبارت دیگر LEFT JOIN تمامی رکوردهای جدول سمت چپ و هم‌چنین آن دسته از رکوردهای جدول سمت راست که با جدول سمت چپ مطابقت دارند را برمی‌گرداند. هم‌چنین برای ستون‌های موجود در جدول سمت راست، در ردیف‌هایی که مطابق با شرایط JOIN نیستند، مقدار NULL بازگردانده می‌شود.

نکته: جدول سمت چپ و راست با نام جداول ذکر شده در سمت چپ و راست کلمه‌ی کلیدی JOIN مشخص می‌شوند.

سینتکس LEFT JOIN:

SELECT Table1.Column1,Table1.Column2,Table2.Column1,....
FROM Table1
LEFT JOIN Table2
ON Table1.MatchingColumnName = Table2.MatchingColumnName;

مثال:

SELECT Employee.EmpFname, Employee.EmpLname, Projects.ProjectID, Projects.ProjectName
FROM Employee
LEFT JOIN
ON Employee.EmpID = Projects.EmpID ;

خروجی:

مفهوم JOIN در SQL left join

RIGHT JOIN  در  SQL:

RIGHT JOIN یا RIGHT OUTER JOIN همه‌ی ردیف‌های همسان از جدول سمت چپ و هم‌چنین همه‌ی ردیف‌ها و سطرهای غیر همسان از جدول سمت راست را باز می‌گرداند. به عبارت دیگر RIGHT JOIN تمامی رکوردهای جدول سمت راست و هم‌چنین آن دسته از رکوردهای جدول سمت چپ با که با جدول سمت راست مطابقت دارند را برمی‌گرداند. هم‌چنین برای ستون‌های موجود در جدول سمت چپ، در ردیف‌هایی که مطابق با شرایط JOIN نیستند، مقدار NULL بازگردانده می‌شود.

سینتکس RIGHT JOIN:

SELECT Table1.Column1,Table1.Column2,Table2.Column1,....
FROM Table1
RIGHT JOIN Table2
ON Table1.MatchingColumnName = Table2.MatchingColumnName;

مثال:

SELECT Employee.EmpFname, Employee.EmpLname, Projects.ProjectID, Projects.ProjectName
FROM Employee
RIGHT JOIN
ON Employee.EmpID = Projects.EmpID;

خروجی:

مفهوم JOIN در SQL right join

در ادامه به برخی از متداول‌ترین سوالات درباره JOIN پاسخ می‌دهیم.

natural join چیست و در چه مواقعی از آن استفاده می‌شود؟

پاسخ: natural join نیز یک عملیات JOIN است که برای ایجاد خروجی مبتنی بر ستون‌ها، به کار می‌رود. برای درک موقعیت هایی که از پیوند طبیعی استفاده می‌شود، باید تفاوت بین Natural Join و Inner Join را درک کنید.

تفاوت اصلی Natural Join و Inner Join در تعداد ستون‌های برگشتی است. به مثال زیر توجه کنید:

مفهوم JOIN در SQL natural join

در مثال بالا، به وضوح مشخص است که تعداد ستون‌های برگشت یافته از Inner Join بیش‌تر از تعداد ستون‌های برگشت یافته از Natural Join است. بنابراین، اگر می‌خواهید یک خروجی، با تعداد ستون‌های کمتر داشته باشید، می‌توانید از Natural Join استفاده کنید.

hash join چیست و در چه مواقعی از آن استفاده می‌شود؟

پاسخ:

hash join نیز یکی از انواع join است که برای ترکیب جداول بزرگ یا در مواردی که کاربر می‌خواهد تا بیش‌تر سطرهای جدول پیوست شده مورد استفاده قرار گیرد، استفاده می‌شود.

Self Join و Cross Join چیست؟

پاسخ: Self Join: Self Join نوعی از Join است که در آن یک جدول با خودش ترکیب می‌شود.

Cross Join :Cross Join نوعی از Join است که در آن عمل Join هر سطر از جدول به هر سطر از جدول دیگر اعمال می‌شود. همچنین، وقتی از شرط WHERE استفاده می‌شود، این نوع از JOIN به عنوان یک عضو INNER رفتار می‌کند و وقتی شرط WHERE موجود نباشد، مانند یک Cartesian product(ضرب دکارتی) رفتار می‌کند.

جمع‌بندی:

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

امیدواریم که از مطالعه‌ی این مقاله لذت برده باشید؛ خوشحال می‌شویم که نظرات خود را با ما به اشتراک بگذارید.

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

نظرات کاربران

Mohammad

حمید رضا جان کمی بیشتر مطالعه کن

حمیدرضا

کلمه ی کلیدی FULL [OUTER] JOIN در RDBMS هایی مثل MS SQL و Postgre SQL وجود داره ولی در MY SQL این مورد با استفاده از یک LEFT JOIN و یک RIGHT JOIN و ترکیب نتایج این دو با استفاده از UNION قابل انجام هست .
اگر مستنداتی از وجود FULL JOIN در MY SQL هست بفرمایید در غیر این صورت خواهشا مقاله رو اصلاح بفرمایید . با تشکر .

حمیدرضا

سلام . در MY SQL ما چیزی به نام FULL JOIN نداریم و برای این کار باید از یک LEFT JOIN و یک RIGHT JOIN استفاده کنیم و این دو رو با UNION با هم ترکیب کنیم .

نازنین گودرزی

همونطور که در مثال مقاله می‌بینید، FULL JOIN در SQL وجود داره و تمام ردیف های جدول سمت چپ (table1) و سمت راست (table2) رو فراخوانی میکنه. نتیجه‌ای که به دست میاد، حاصل پیوند این دو جدول هست.

ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :