دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
view در پایگاه داده SQL
1403/12/20 -
پیاده سازی Synchronization در سی شارپ
1403/12/20 -
Fragmentation در پایگاه داده SQL
1403/12/19 -
Delegate در سی شارپ
1403/12/19 -
B-Trees در پایگاه داده SQL
1403/12/18 -
Thread ها در سی شارپ
1403/12/18
پیوندها (JOIN) در پایگاه داده SQL

پیوندها (JOIN) در پایگاه داده SQL
در پایگاه دادههای رابطهای، اطلاعات معمولاً در جداول مختلف ذخیره میشوند.
برای استخراج دادههای موردنیاز، لازم است که این جداول با هم ترکیب شوند.
این ترکیب دادهها در SQL از طریق JOIN انجام میشود.
پیوند (JOIN) در SQL یک عملیات است که به کمک آن میتوان دادهها را از دو یا چند جدول مرتبط استخراج کرد
در اصل، پیوند بین جداول از طریق یک ستون مشترک صورت میگیرد.
به عنوان مثال، اگر یک جدول شامل اطلاعات مشتریان و جدول دیگری شامل اطلاعات سفارشها باشد، میتوان از طریق یک ستون مانند CustomerID این دو جدول را به یکدیگر متصل کرد و اطلاعاتی ترکیبی از هر دو را دریافت نمود.
انواع پیوندها در SQL
پیوندها در SQL انواع مختلفی دارند که در ادامه به توضیح آنها میپردازیم:
-
پیوند داخلی (INNER JOIN)
پیوند داخلی فقط سطرهایی را که در هر دو جدول دارای مقدار مشترک در ستون مشخصشده هستند، بازمیگرداند.
به بیان دیگر، اگر مقدار متناظر در یکی از جداول وجود نداشته باشد، آن سطر در خروجی نمایش داده نمیشود.
مثال:
فرض کنید دو جدول داریم:
-
- Customers (مشتریان): شامل ستونهای CustomerID, CustomerName
- Orders (سفارشها): شامل ستونهای OrderID, CustomerID, OrderDate
میخواهیم نام مشتری و جزئیات سفارشهای او را استخراج کنیم:
SELECT Customers.CustomerName, Orders.OrderID, Orders.OrderDate
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
نتیجه: این کوئری فقط اطلاعات مشتریانی را نمایش میدهد که حداقل یک سفارش ثبت کردهاند.
-
پیوند خارجی (OUTER JOIN)
پیوند خارجی به ما این امکان را میدهد که حتی در صورتی که دادهای در یکی از جداول وجود نداشته باشد، همچنان اطلاعات را نمایش دهیم. پیوند خارجی به سه دسته تقسیم میشود:
-
-
LEFT JOIN
این نوع پیوند تمام سطرهای جدول سمت چپ را برمیگرداند، حتی اگر در جدول سمت راست مقدار متناظری وجود نداشته باشد.
-
SELECT Customers.CustomerName, Orders.OrderID, Orders.OrderDate
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
نتیجه: مشتریانی که سفارش ندارند نیز در خروجی نمایش داده میشوند، ولی مقدار سفارش آنها NULL خواهد بود.
-
-
RIGHT JOIN
این نوع پیوند تمام سطرهای جدول سمت راست را برمیگرداند، حتی اگر در جدول سمت چپ مقدار متناظری وجود نداشته باشد.
-
SELECT Customers.CustomerName, Orders.OrderID, Orders.OrderDate
FROM Customers
RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
نتیجه: تمامی سفارشات نمایش داده میشوند، حتی اگر مشتریای برای آنها تعریف نشده باشد.
-
-
FULL JOIN
این نوع پیوند تمام سطرهای هر دو جدول را بازمیگرداند. اگر مقدار متناظری در جدول دیگر وجود نداشته باشد، مقدار NULL جایگزین آن خواهد شد.
-
SELECT Customers.CustomerName, Orders.OrderID, Orders.OrderDate
FROM Customers
FULL JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
نتیجه: همه مشتریان و همه سفارشها نمایش داده میشوند، حتی اگر داده متناظر نداشته باشند.
-
پیوند خود (Self JOIN)
گاهی ممکن است نیاز داشته باشیم یک جدول را با خودش ترکیب کنیم. در این صورت از Self JOIN استفاده میشود.
مثال: فرض کنید جدولی داریم که شامل اطلاعات کارمندان است و هر کارمند یک سرپرست دارد که خودش نیز در همان جدول ثبت شده است.
SELECT E1.EmployeeName AS Employee, E2.EmployeeName AS Manager
FROM Employees E1
JOIN Employees E2 ON E1.ManagerID = E2.EmployeeID;
نتیجه: این کوئری نام هر کارمند را همراه با نام مدیر او نمایش میدهد.
-
پیوند Equi Join و Non-Equi Join
-
Equi Join
در این نوع پیوند، شرط اتصال بین جداول برابری (=) است. این همان INNER JOIN معمولی است که در مثالهای قبل دیدیم. -
Non-Equi Join
در این نوع پیوند، شرط اتصال میتواند از عملگرهایی مانند <, >, <=, >= یا != استفاده کند.
-
مثال: فرض کنید میخواهیم تمام سفارشهایی را که مبلغ آنها بیشتر از حداقل مقدار مشخصشده برای تخفیفها است، پیدا کنیم.
SELECT Orders.OrderID, Discounts.DiscountPercent
FROM Orders
JOIN Discounts ON Orders.TotalAmount > Discounts.MinAmount;
نتیجه: این کوئری تمام سفارشهایی را که واجد شرایط دریافت تخفیف هستند، نمایش میدهد.
نکات مهم در استفاده از JOIN در SQL
-
بهینهسازی پرسوجوها
استفاده نادرست از JOIN میتواند باعث کندی اجرای کوئریها شود.
برای بهینهسازی، باید از ایندکسها (Indexes) روی ستونهای مورد استفاده در پیوند استفاده کرد. -
دقت در NULLها
در برخی از انواع JOIN (مانند LEFT یا FULL JOIN) ممکن است مقدار NULL در خروجی وجود داشته باشد.
بنابراین هنگام کار با این کوئریها باید از توابعی مانند COALESCE برای جایگزینی مقدار NULL استفاده کرد. -
استفاده از ON به جای WHERE
در بسیاری از موارد، فیلتر کردن دادهها در بخش ON عملکرد بهتری دارد.
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟
با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!
این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.
با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.
پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
همین حالا شروع کنید و به دنیای دادهها بپیوندید!
کاربرد پیوند (JOIN) در SQL
استفاده از پیوندها به دلایل مختلفی انجام میشود، از جمله:
-
ترکیب دادههای جداول مختلف
به جای ذخیره همه اطلاعات در یک جدول (که باعث افزونگی دادهها میشود)، میتوان اطلاعات را در چندین جدول ذخیره کرد و در زمان نیاز آنها را به هم پیوند داد. -
بهبود کارایی پرسوجوها
با استفاده از روابط بین جداول، امکان اجرای پرسوجوهای بهینه و سریعتر فراهم میشود. -
افزایش خوانایی و مدیریت بهتر دادهها
به جای ذخیره دادههای تکراری، میتوان دادهها را در جداول جداگانه مدیریت کرد و هنگام نیاز آنها را ترکیب کرد.
دوره های مرتبط

آموزش پایگاه داده SqlServer
پایگاه داده Sqlserver یکی از پایگاه داده های مهم برای ذخیره اطلاعات محسوب میشود .