آموزش پیشرفته پیوندها یا Join ها در SQL

66
آموزش پیشرفته پیوندها یا Join ها در SQL
لینک کوتاه مطلب : http://birclick.com/Akm3X

آموزش پیشرفته پیوندها یا Join ها در SQL

آموزش پیشرفته پیوندها یا Join ها در SQL

پیوندها برای فراخوانی داده ها از دو یا چند جدول با توجه به ارتباط بین ستون های خاصی از این جدول ها استفاده می شوند . کلید واژه Join در دستورات SQL برای ایجاد Query از دو یا چند جدول براساس ارتباط بین ستون های خاصی از جداول استفاده می شود . جداول در پایگاه داده اغلب به وسیله کلیدها به یکدیگر مرتبط می شوند .

Primary Key یا کلید اصلی ، ستونی ( یا ترکیبی از ستون ها) با داده منحصر به فرد و یکتا برای هر سطر است . مقدار کلید اصلی باید یکتا باشد. هدف مرتبط کردن داده ها بین جداول است بدون اینکه داده ها در جداول تکرار شوند .

پایگاه داده های رابطه ای از یك یا چند مجموعه تشكیل شده است كه این مجموعه ها با یكدیگر در ارتباط هستند و هر مجموعه نیز از چند Tuple یا زوج مرتب تشكیل شده است . هر زوج مرتب نشان دهنده یك صفت از یك موجودیت داده است و هر مجموعه ، نشان دهنده یك موجودیت داده ای كه در دنیای واقعی برای آن معنایی وجود دارد . این كه یك پایگاه داده از چه موجودیت هایی تشكیل شده است، به طراحی و تحلیل شما از یك سیستم در دنیای واقعی بستگی دارد . در این بخش از مجله اینترنتی بیرکلیک با آموزش پیشرفته پیوندها یا Join ها در SQL با شما همراه خواهیم شد .

برای دسترسی به داده ها در یك پایگاه داده رابطه ای به یك زبان پرس وجو نیاز داریم كه همان SQL است . این زبان می تواند از یك مجموعه داده ها را استخراج كند ، اما بعضی وقت ها برای دسترسی به داده های مختلف نیاز است كه ما این داده ها را از چند مجموعه بیاوریم .

این كه مجموعه ها چگونه با هم در ارتباط هستند و آیا این روابط منطقی اند یا نه ، بستگی به طراحی شما و نرمال سازی پایگاه داده شما دارد . فرض کنید ۲ جدول به شرح زیر داریم :

جدول Persons :

P_IdLastNameFirstNameAddressCity
۱YZAmirNesfRAhTehran
۲BMAtrisaShahnazTabriz
۳ABBaranaValiAsrTehran

جدول Orders :

O_IdOrderNoP_Id
۱۱۰۲
۲۲۰۱
۳۷۰۳
۴۳۰۲
۵۵۰۱

انواع Join در SQL

 

۱ – عبارت Inner Join

آموزش پیشرفته پیوندها یا Join ها در SQL
آموزش پیشرفته پیوندها یا Join ها در SQL

عبارت کلیدی Inner Join سطرهایی را برمی گرداند که در هر دو جدول حداقل یک داده متناظر در ستون های مرتبط شده داشته باشد.

فرم عبارت Inner Join :

SELECT Column_Name(s)
FROM Table_Name1
INNER JOIN Table_Name2
ON Table_Name1.Column_Name=Table_Name2.Column_Name

می خواهیم تمامی افراد را به همراه سفارشاتشان لیست کنیم.

از دستور زیر استفاده می کنیم :

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

نتیجه به شکل زیر خواهد بود :

LastNameFirstNameOrderNo
BMAtrisa۱۰
BMAtrisa۳۰
YZAmir۲۰
YZAmir۵۰

عبارت کلیدی Inner Join سطرهایی که حداقل یک تناظر در دو جدول داشته باشد را برمی گرداند. اگر فردی در جدول Persons وجود دارد که تناظری در جدول Orders ندارد ، آن فرد لیست نمی شود.

۲ – عبارت Left Join

آموزش پیشرفته پیوندها یا Join ها در SQL
آموزش پیشرفته پیوندها یا Join ها در SQL

کلید واژه Left Join تمام سطرهای جدول سمت چپ (Table_Name1) را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت راست (Table_Name2) وجود نداشته باشد.

 

فرم عبارت Left Join :

SELECT Column_Name(s)
FROM Table_Name1
LEFT JOIN Table_Name2
ON Table_Name1.Column_Name=Table_Name2.Column_Name

در بعضی از پایگاه داده ها Left Join به شکل Left Outer Join می باشد.

می خواهیم تمام افراد را لیست کنیم حتی اگر سفارشی در مقابل نام آن وجود نداشته باشد.

از دستور زیر استفاده می کنیم:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.FirstName

نتیجه به شکل زیر خواهد شد :

LastNameFirstNameOrderNo
YZAmir۲۰
YZAmir۵۰
BMAtrisa۱۰
BMAtrisa۳۰
ABBarana۷۰

کلید واژه Left Join تمام سطرهای جدول سمت چپ (Persons) را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت راست (Orders) وجود نداشته باشد.

 

۳ – عبارت Right Join

آموزش پیشرفته پیوندها یا Join ها در SQL
آموزش پیشرفته پیوندها یا Join ها در SQL

کلید واژه Right Join تمام سطرهای جدول سمت راست (Table_Name2) را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت چپ (Table_Name1) وجود نداشته باشد.

فرم عبارت Right Join :

 

SELECT Column_Name(s)
FROM Table_Name1
RIGHT JOIN Table_Name2
ON Table_Name1.Column_Name=Table_Name2.Column_Name

در بعضی از پایگاه داده ها Right Join به شکل Right Outer Join  می باشد.

می خواهیم تمام سفارشات (orderها) را  لیست کنیم حتی اگر نام فردی در مقابل آن سفارش وجود نداشته باشد.

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.FirstName

جدول نتایج به شکل زیر خواهد بود :

LastNameFirstNameOrderNo
YZAmir۲۰
YZAmir۵۰
BMAtrisa۱۰
BMAtrisa۳۰
ABBarana۷۰

کلید واژه Right Join تمام سطرهای جدول سمت راست (Orders) را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت چپ (Persons) وجود نداشته باشد.

 

۴ – عبارت Full Join

آموزش پیشرفته پیوندها یا Join ها در SQL
آموزش پیشرفته پیوندها یا Join ها در SQL

کلید واژه Full Join تمام ردیف های موجود در جداول را با وجود حتی یک همخوانی میان جداول بر می گرداند .

فرم دستور Full Join :

SELECT Column_Name(s)
FROM Table_Name1
FULL JOIN Table_Name2
ON Table_Name1.Column_Name=Table_Name2.Column_Name

می خواهیم تمام افراد و سفارش هایشان، و نیز تمام سفارش ها به همراه افراد مربوطه را لیست کنیم:

از دستور زیر استفاده می کنیم :

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.FirstName

نتیجه به شکل زیر خواهد شد :

LastNameFirstNameOrderNo
YZAmir۲۰
YZAmir۵۰
BMAtrisa۱۰
BMAtrisa۳۰
ABBarana۷۰

کلید واژه Full Join تمام سطرهایی که در جدول چپ (Persons) و تمام سطرهای جدول راست (Orders) وجود دارد را بر می گرداند. اگر سطری در جدول Persons وجود دارد که تناظری در جدول Orders ندارد یا اگر سطری در جدول Orders وجود دارد که تناظری در جدول Persons ندارد این سطرها نیز در جدول نتیجه نمایش داده خواهند شد .

Cross Join : نتیجه این Join تمام ترکیباتی است که از قرار گرفتن هر سطر از جدول اولی در کنار تمام سطرهای جدول دومی بدست می آید(همانند حاصلضرب دکارتی).

آموزش پیشرفته پیوندها یا Join ها در SQL
آموزش پیشرفته پیوندها یا Join ها در SQL

Cross Join دارای شرط نمی باشد ودو جدول را در هم ضرب می کند.

اینکه در هر مرحله در Join های تودرتو از چه Join  استفاده کنید به انتخاب خودتان است . می توانید برای Join ها دستور WHERE ، Group By و … بنویسید.

 

آموزش پیشرفته پیوندها یا Join ها در SQL نوشته شده در تاریخ : توسط کاربر
به اشتراک بگذارید...

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دو × دو =