SQL Joins چیست و چرا اهمیت دارد؟
یکی از مهمترین ویژگیهای SQL Server، قابلیت Joins است که به شما امکان میدهد دو یا چند جدول را به هم متصل کنید و عملیات مختلفی روی دادهها انجام دهید. بدون Joins، مفهوم نرمالسازی دادهها بیمعنی است زیرا مجبوریم تمام دادهها را در یک جدول ذخیره کنیم.
در سیستمهای مدیریت پایگاه داده رابطهای (RDBMS)، اطلاعات اصلی در جدول مادر (Master Table) و تراکنشها در جداول فرزند (Child Tables) ذخیره میشوند. این جداول با استفاده از کلیدهای اصلی و خارجی به هم مرتبط میشوند (نرمالسازی). یکی از وظایف اصلی RDBMS ترکیب دادهها از چند جدول و استخراج اطلاعات کامل یا بینشهای معنیدار است که SQL Joins این کار را انجام میدهد.
انواع Joins در SQL Server
SQL شش نوع Join مختلف ارائه میدهد که هرکدام کاربرد و عملکرد خاص خود را دارند:
نوع Join | |
---|---|
Inner Join | فقط رکوردهای مشترک در هر دو جدول را برمیگرداند. |
Left Outer Join | تمام رکوردهای جدول سمت چپ و رکوردهای مطابق از جدول سمت راست را نمایش میدهد؛ در صورت نبود تطابق، NULL برمیگرداند. |
Right Outer Join | تمام رکوردهای جدول سمت راست و رکوردهای مطابق از جدول سمت چپ را نمایش میدهد؛ در صورت نبود تطابق، NULL برمیگرداند. |
Full Outer Join | تمام رکوردهای هر دو جدول را برمیگرداند، چه تطابق داشته باشند چه نه، و در صورت نبود تطابق NULL میگذارد. |
Cross Join | حاصل ضرب کارتزین (تمام ترکیبهای ممکن بین دو جدول) را برمیگرداند. |
Self Join | جدولی را با خودش متصل میکند برای مقایسه یا محاسبات سطری. |
نحوه نوشتن Syntax Joins در SQL
SELECT Table1.Column(s), Table2.Column(s)
FROM Table1
INNER JOIN | LEFT JOIN | RIGHT JOIN | FULL JOIN | CROSS JOIN | SELF JOIN Table2
ON Table1.Common_Column = Table2.Common_Column;
مثالهای کاربردی
Inner Join:
SELECT Emp.FirstName, Emp.LastName, Dept.DepartmentName
FROM Employees AS Emp
INNER JOIN Department AS Dept ON Emp.DeptID = Dept.DeptID;
Left Outer Join:
SELECT Emp.FirstName, Emp.LastName, Dept.DepartmentName
FROM Employees AS Emp
LEFT JOIN Department AS Dept ON Emp.DeptID = Dept.DeptID;
Right Outer Join:
SELECT Emp.FirstName, Emp.LastName, Dept.DepartmentName
FROM Employees AS Emp
RIGHT JOIN Department AS Dept ON Emp.DeptID = Dept.DeptID;
Full Outer Join:
SELECT Emp.FirstName, Emp.LastName, Dept.DepartmentName
FROM Employees AS Emp
FULL JOIN Department AS Dept ON Emp.DeptID = Dept.DeptID;
Self Join:
SELECT Emp1.FirstName, Emp2.FirstName AS ManagerName
FROM Employees AS Emp1
INNER JOIN Employees AS Emp2 ON Emp1.ManagerID = Emp2.EmpID;
Cross Join:
SELECT Emp.FirstName, Dept.DepartmentName
FROM Employees AS Emp
CROSS JOIN Department AS Dept;
نکات پیشرفته
Non-Equi Join: استفاده از عملگرهای مقایسهای غیر مساوی مانند <، > در شرط Join.
Semi-Join: بازگرداندن رکوردهای جدول اول که در جدول دوم تطابق دارند.
Anti-Join: بازگرداندن رکوردهای جدول اول که در جدول دوم تطابق ندارند.
اتصال چند جدول (Multiple Joins)
میتوان چندین جدول را با انواع مختلف Join به هم متصل کرد تا اطلاعات کاملتری استخراج شود. برای این کار باید رابطه بین جداول، کلیدهای اصلی و خارجی و نوع Join مناسب را شناسایی کرد.
دیدگاهتان را بنویسید