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 آنها را به روشهای مختلفی ترکیب کرد و بر اساس شرایطی که شما آنها را تعیین میکنید، نتایج مختلفی از ادغام جداول استخراج کنید.انواع مختلف JOIN:
به طور کلی چهار نوع JOIN وجود دارد که عبارتند از:- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
- FULL 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;
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;
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 ;
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 پاسخ میدهیم.