پیوندها (JOIN) در پایگاه داده SQL

تیم تحریریه 1403/11/20 0 106
لینک کوتاه https://zoheirsoftware.com/z/39c75a681 |
پیوندها (JOIN) در پایگاه داده SQL,کاربرد پیوند (JOIN) در SQL,انواع پیوندها در SQL

پیوندها (JOIN) در پایگاه داده SQL

در پایگاه داده‌های رابطه‌ای، اطلاعات معمولاً در جداول مختلف ذخیره می‌شوند.

برای استخراج داده‌های موردنیاز، لازم است که این جداول با هم ترکیب شوند.

این ترکیب داده‌ها در SQL از طریق JOIN انجام می‌شود.

پیوند (JOIN) در SQL یک عملیات است که به کمک آن می‌توان داده‌ها را از دو یا چند جدول مرتبط استخراج کرد

 در اصل، پیوند بین جداول از طریق یک ستون مشترک صورت می‌گیرد.

به عنوان مثال، اگر یک جدول شامل اطلاعات مشتریان و جدول دیگری شامل اطلاعات سفارش‌ها باشد، می‌توان از طریق یک ستون مانند CustomerID این دو جدول را به یکدیگر متصل کرد و اطلاعاتی ترکیبی از هر دو را دریافت نمود.

 

پیوندها (JOIN) در پایگاه داده SQL

 

انواع پیوندها در 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;

نتیجه: این کوئری تمام سفارش‌هایی را که واجد شرایط دریافت تخفیف هستند، نمایش می‌دهد.

 

انواع پیوندها در SQL

 

 

نکات مهم در استفاده از JOIN در SQL

  • بهینه‌سازی پرس‌وجوها

    استفاده نادرست از JOIN می‌تواند باعث کندی اجرای کوئری‌ها شود.
    برای بهینه‌سازی، باید از ایندکس‌ها (Indexes) روی ستون‌های مورد استفاده در پیوند استفاده کرد.
  • دقت در NULLها

    در برخی از انواع JOIN (مانند LEFT یا FULL JOIN) ممکن است مقدار NULL در خروجی وجود داشته باشد.
    بنابراین هنگام کار با این کوئری‌ها باید از توابعی مانند COALESCE برای جایگزینی مقدار NULL استفاده کرد.
  • استفاده از ON به جای WHERE

    در بسیاری از موارد، فیلتر کردن داده‌ها در بخش ON عملکرد بهتری دارد.

 

 

🌟 آیا می‌خواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟

با دوره آموزشی SQL Server ما، شما می‌توانید به راحتی و با روشی عملی، تمام مهارت‌های لازم را یاد بگیرید!

این دوره به شما آموزش می‌دهد که چگونه داده‌ها را به بهترین شکل مدیریت کنید، گزارش‌های قدرتمند بسازید و به تحلیل‌های عمیق دست یابید.

با محتوای جذاب و پروژه‌های واقعی، شما نه تنها تئوری را یاد می‌گیرید، بلکه توانایی‌های عملی خود را نیز تقویت می‌کنید.

پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشن‌تر بردارید!

 همین حالا شروع کنید و به دنیای داده‌ها بپیوندید!

 

 

 

کاربرد پیوند (JOIN) در SQL

استفاده از پیوندها به دلایل مختلفی انجام می‌شود، از جمله:

  • ترکیب داده‌های جداول مختلف

    به جای ذخیره همه اطلاعات در یک جدول (که باعث افزونگی داده‌ها می‌شود)، می‌توان اطلاعات را در چندین جدول ذخیره کرد و در زمان نیاز آن‌ها را به هم پیوند داد.
  • بهبود کارایی پرس‌وجوها

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

    به جای ذخیره داده‌های تکراری، می‌توان داده‌ها را در جداول جداگانه مدیریت کرد و هنگام نیاز آن‌ها را ترکیب کرد.

 

کاربرد پیوند (JOIN) در SQL

 

دوره های مرتبط
آموزش Sql,آموزش sqlserver, آموزش جامع Sqlserver

آموزش پایگاه داده SqlServer

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

997,000 تومان

2.5k بازدید

ارسال دیدگاه

برای ارسال نظر لطفا ورود یا ثبت نام کنید.