پیوند بین جداول در SQL
پیوندها برای فراخوانی داده ها از دو یا چند جدول با توجه به ارتباط بین ستون های خاصی از این جدول ها استفاده می شوند.
پیوند (JOIN) بین جداول در SQL
کلید واژه JOIN در دستورات SQL برای ایجاد Query از دو یا چند جدول براساس ارتباط بین ستون های خاصی از جداول استفاده می شود.
جداول در پایگاه داده اغلب به وسیله کلیدها به یکدیگر مرتبط می شوند.
primary key یا کلید اصلی، ستونی(یا ترکیبی از ستون ها) با داده منحصر به فرد و یکتا برای هر سطراست. مقدار کلید اصلی باید یکتا باشد. هدف مرتبط کردن داده ها بین جداول است بدون اینکه داده ها در جداول تکرار شوند.
در جدول Persons:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
توجه کنید که ستون P_Id در جدول فوق کلید اصلی است. این بدان معنی است که هیچ دو سطری نمی تواند مقدار یکسانی داشته باشد. ستون P_Id دو فرد را حتی اگر نام های یکسانی هم داشته باشند، متمایز می کند.
در جدول Orders:
O_Id | OrderNo | P_Id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 15 |
دقت کنید که ستون O_Id در جدول Orders کلید اصلی می باشد و ستون P_Id در اینجا به نفرات در جدول Persons بدون استفاده از نامشان اشاره دارد.
توجه کنید که ارتباط بین دو جدول به وسیله ستون P_Id می باشد.
تفاوت پیوندها
قبل از اینکه بحث را ادامه دهیم انواع پیوندهایی که می توان استفاده کرد را به همراه تفاوت های آن ها بیان می کنیم:
- JOIN: سطرهایی را که در هر دو جدول تناظر دارند را بر می گرداند.
- LEFT JOIN: تمامی سطرها از جدول سمت چپ را برمی گرداند حتی اگر هیچ تناظری در جدول سمت راست نداشته باشد.
- RIGHT JOIN: تمامی سطرها از جدول سمت راست را برمی گرداند حتی اگر هیچ تناظری در جدول سمت چپ نداشته باشد.
- FULL JOIN: تمام ردیف های موجود در جداول را با وجود حتی یک همخوانی میان جداول بر می گرداند.
برای مشاهده فیلم های آموزشی مقدماتی تا پیشرفته پایگاه داده SQLServer کلیک کنید.
- نوشته شده توسط مهندس تمیزی
- بازدید: 26343
دیدگاهها
سلام
اگر 2 جدول را بخواهیم پیوند دهیم و بطور مثال با * همه فیلدها رو انتخاب میکنیم و با نوشتن نام جدول . نام فیلد میتونیم فیلدی خاص را انتخاب کنیم
حالا اگر بخام همه فیلدهارو غیر از چند فیلد دلخواه انتخاب کنم کوتاه ترین و بهینه ترین دستور چیه؟
چون اگه بخام نام فیلدها رو بنویسم خیلی کوئری طولانی میشه. آیا غیر این راه ، روشی دیگه هم براش داریم؟
اگر نداریم و باید همه فیلدها رو بنویسم این کوئری طولانی باعث کندی نمیشه؟
ممنون
دوست عزیز از نام مستعار ستونها استفاده کن که مخفف باشه سریعتر ستونها رو لیست کنی
سلام
پیشنهاد می شه که هرگز از علامت ستاره (*) برای انتخاب همه فیلدها استفاده نکنید و حتی اگر می خواهید همه فیلدها رو لیست کنید، یکی یکی نام آنها را ذکر کنید. در واقع علامت ستاره Performance یا کارایی کوئری شما را کاهش خواهد داد.
اما با توجه به سوال مطرح شده، شما مجبور هستید که نام فیلدهایی که نیاز دارید را یکی یکی مشخص نمایید.