شما نمی توانید اهمیت JOIN را هنگام یادگیری SQL دست کم بگیرید. این نه تنها یکی از اساسی ترین عملیات در پایگاه داده های رابطه ای است، بلکه با انواع مختلف بسیار متنوع است. اگرچه SQL JOIN ممکن است در ابتدا ترسناک باشد، اما هنگامی که آن را درک کنید به ابزاری بسیار مفید در زرادخانه شما تبدیل می شود. بیایید تمام انواع SQL JOIN را بررسی کنیم!
به جرات می توان گفت عملیات JOIN یکی از قدرتمندترین ویژگی های SQL است. این منبع حسادت برای همه DBMS های غیرمرتبط (سیستم های مدیریت پایگاه داده) است - این یک مفهوم بسیار ساده است اما به طور گسترده در مواردی که دو مجموعه از داده ها را به هم می پیوندند قابل استفاده است.
LearnSQL.com یک پلت فرم آنلاین است که برای کمک به شما در تسلط بر SQL طراحی شده است. این برنامه 30 دوره تعاملی را ارائه می دهد که از مبتدی تا پیشرفته دارای مشکل هستند. هر دوره هم دانش نظری و هم تمرینات عملی را ارائه می دهد تا بتوانید این ایده های جدید را تقویت کنید.
به طور خلاصه، JOIN عملیاتی است که در آن جداول، سطر به سطر با یکدیگر مقایسه می شوند. این مقایسه به شما امکان می دهد از هر جدولی که در JOIN درگیر است، ستون های خروجی بگیرید.
یک مکان عالی برای تمرینات پس از خواندن این مقاله دوره تعاملی SQL JOINs ما است. این بیش از 90 تمرین عملی در مورد انواع مختلف اتصالات ارائه می دهد که در اینجا مورد بحث قرار گرفته است.
اکنون، بیایید 2 جدول برای کاوش و تسلط بر هنر JOIN ایجاد کنیم. اولین جدول ما، کارکنان، از 5 ستون تشکیل شده است:
id - شناسه منحصر به فرد کارمند.
نام - نام کارمند.
تخصص - تخصص کارمند در شرکت.
coach_id - شناسه مربی/مرشد کارمند. این یکی دیگر از کارمندان یک شرکت است.
project_id - شناسه پروژه فعلی که کارمند در آن مشارکت دارد.
شناسه تخصص coach_id project_id
1 توسعه دهنده Olli Woodward 4 1
2 مدیر پیت نولان NULL 1
3 Will Barker IT پشتیبانی 4 3
4 توسعه دهنده Uma Norman NULL 4
5 پگی برگ مدیر 2 4
6 ماری شلتون تحلیلگر NULL NULL
جدول دوم پروژه ها است. این شامل 3 ستون است:
id - شناسه منحصر به فرد پروژه.
نام - نام پروژه.
is_external - یک مقدار بولی که نمایانگر خارجی یا داخلی بودن پروژه است.
نام شناسه is_external
1 طراحی UI/UX وب سایت درست است
2 تحقیق و توسعه FALSE
3 از FALSE پشتیبانی کنید
4 طراحی معماری پایگاه داده درست است
توجه داشته باشید که یک ارتباط منطقی بین دو جدول وجود دارد. project_id در کارکنان با شناسه پروژه ها مطابقت دارد. مقادیر متناظر در جداول برای ارائه بهتر کد رنگی دارند.
حالا که جداول را داریم، بیایید به اصل مطلب برویم!
پیوستن داخلی (با نام مستعار JOIN)
اولین مورد از انواع SQL JOIN، JOIN داخلی است. هنگامی که "JOIN" را در کد SQL خود تایپ می کنید، از JOIN داخلی استفاده می کند. بنابراین، در حالی که ضرری ندارد، نیازی به نوشتن INNER در جستارهای خود ندارید.
یک کلمه کلیدی ON همه JOIN ها را در SQL دنبال می کند. شروع وضعیت اتصال را نشان می دهد. JOIN های داخلی، مانند همه JOIN های دیگر، تنها ردیف هایی را که شرایط اتصال را برآورده می کنند، خروجی می دهد.
قبل از ادامه، توجه داشته باشید که عملگر JOIN تنها راه برای اتصال داده ها از دو جدول نیست. همچنین می توانید از WHERE استفاده کنید. علاقه مند به یادگیری بیشتر در مورد آن هستید؟ ما فقط مقاله مناسب را برای شما داریم!
اما بیایید یک لحظه نظریه را کنار بگذاریم و به کدنویسی بپردازیم. بیایید از دو جدول و یک JOIN داخلی استفاده کنیم تا بفهمیم کدام کارمند در کدام پروژه کار می کند:
انتخاب کنید
staff.name به عنوان کارمند،
تخصص،
projects.name به عنوان پروژه
از کارمندان
به پروژه ها بپیوندید
ON staffs.project_id = projects.id
قبل از اینکه به نتیجه این پرس و جو نگاه کنیم، بیایید خود پرس و جو را تجزیه و تحلیل کنیم. همانطور که مشاهده می کنید با استفاده از JOIN دو جدول را به هم وصل می کنیم. بعد از JOIN عملگر ON و شرط join را مشخص می کنیم.
بنابراین، بر اساس این شرط که project_id از جدول کارکنان برابر با id از پروژه های جدول باشد، جداول را به هم ملحق کرده ایم. بیایید به نتیجه پرس و جو نگاه کنیم:
پروژه تخصصی شدن کارکنان
طراحی UI/UX وب سایت توسعه دهنده Olli Woodward
طراحی UI/UX وب سایت مدیر پیت نولان
پشتیبانی ویل بارکر IT
طراحی معماری پایگاه داده توسعه دهندگان Uma Norman
طراحی معماری پایگاه داده مدیر پگی برگ
می بینیم که اولی وودوارد و پیت نولان پروژه ای با عنوان طراحی UI/UX وب سایت دارند. project_id آنها برابر با 1 است که شناسه این پروژه در پروژه های جدولی است. همین امر در مورد سایر ردیف های نتیجه نیز صدق می کند.
با این حال، ما مری شلتون را در اینجا نمی بینیم. project_id او NULL است و هیچ پروژه ای با شناسه برابر با NULL وجود ندارد. به طور مشابه، پروژه "تحقیق و توسعه" دارای شناسه 2 است، اما هیچ کارمندی پروژه_id برابر با 2 ندارد.
آیا ما شما را به پیوستن داخلی علاقه مند کرده ایم و می خواهید بیشتر از پیچیدگی های آن بدانید؟ به مقاله ما به طور خاص در مورد پیوستن داخلی نگاه کنید!
پیوستن به بیرون چپ
LEFT OUTER JOIN یکی از انواع SQL JOIN خارجی است. کلمه کلیدی OUTER اختیاری است و اغلب حذف می شود، بنابراین فقط عملگر LEFT JOIN را برای ما باقی می گذارد.
تفاوت کلی بین OUTER JOIN و Inner Join در این است که OUTER JOIN فقط شامل ردیف هایی نمی شود که شرایط اتصال را برآورده می کنند، بلکه ردیف هایی را نیز شامل می شود که شرایط یک (یا چند) از جداول را برآورده نمی کنند.
SQL JOINs را با دوره تعاملی SQL JoINs ما تمرین کنید.
به طور خاص به LEFT OUTER JOIN برمی گردیم، این شامل ردیف هایی است که شرایط اتصال را برآورده می کنند (درست مانند JOIN داخلی) و تمام ردیف های دیگر از جدول سمت چپ (یا اول). بیایید از مثال قبلی خود استفاده کنیم و JOIN را به LEFT JOIN تغییر دهیم تا تفاوت را ببینیم:
انتخاب کنید
staff.name به عنوان کارمند،
تخصص،
projects.name به عنوان پروژه
از کارمندان
LEFT JOIN پروژه ها
ON staffs.project_id = projects.id
و این هم نتیجه پرس و جو:
پروژه تخصصی شدن کارکنان
طراحی UI/UX وب سایت توسعه دهنده Olli Woodward
طراحی UI/UX وب سایت مدیر پیت نولان
پشتیبانی ویل بارکر IT
طراحی معماری پایگاه داده توسعه دهندگان Uma Norman
طراحی معماری پایگاه داده مدیر پگی برگ
مری شلتون تحلیلگر NULL
همانطور که می بینید، یک ردیف دیگر اضافه شده است: Mary Shelton با پروژه NULL. این ردیف خاص، شرط staffs.project_id = projects.id را برآورده نمی کند، زیرا هیچ پروژه ای با شناسه NULL وجود ندارد. اما این ردیف در جدول کارکنان وجود دارد، بنابراین به نتیجه اضافه می شود. نام پروژه برای Mary Shelton یک مقدار NULL است به همین دلیل زیرا هیچ شناسه NULL در بین پروژه ها وجود ندارد.
اکنون ایده اصلی LEFT OUTER JOIN را دریافت می کنید. با این حال، شما همیشه می توانید مقاله ما در مورد LEFT OUTER JOIN را بخوانید تا در مورد آن بیشتر بدانید یا نمونه های بیشتری از آن را ببینید!
JOIN های داخلی و چپ رایج ترین نوع JOIN در SQL هستند. بنابراین، مطمئن شوید که آن را به طور کامل با دوره SQL JOINs ما تمرین کنید. در مورد دوره اینجا بخوانید.
پیوستن به بیرون راست
RIGHT OUTER JOIN ممکن است به عنوان برادر دوقلوی LEFT OUTER JOIN در نظر گرفته شود. تنها تفاوت بین این دو نوع SQL JOIN جدولی است که رکوردها بدون توجه به شرط JOIN از آن گرفته می شوند. در LEFT OUTER JOIN، این جدول اول یا سمت چپ است. در RIGHT OUTER JOIN، جدول دوم یا سمت راست است.
بیایید از مثال قبلی استفاده کنیم، اما اکنون LEFT JOIN را به RIGHT JOIN تغییر دهید:
انتخاب کنید
staff.name به عنوان کارمند،
تخصص،
projects.name به عنوان پروژه
از کارمندان
RIGHT JOIN پروژه ها
ON staffs.project_id = projects.id
حال، بیایید نتیجه پرس و جو را تجزیه و تحلیل کنیم:
پروژه تخصصی شدن کارکنان
طراحی UI/UX وب سایت توسعه دهنده Olli Woodward
طراحی UI/UX وب سایت مدیر پیت نولان
پشتیبانی ویل بارکر IT
طراحی معماری پایگاه داده توسعه دهندگان Uma Norman
طراحی معماری پایگاه داده مدیر پگی برگ
NULL NULL تحقیق و توسعه
همانطور که می بینیم، رکورد مری شلتون اکنون از بین رفته است. شرط ON را برآورده نمی کند و به جدول سمت راست تعلق ندارد. بنابراین، در اینجا در نتیجه گنجانده نشده است.
از طرف دیگر، اکنون پروژه "تحقیق و توسعه" را در اینجا دریافت می کنیم. شرط JOIN را برآورده نمی کند، اما در جدول سمت راست وجود دارد، بنابراین در نتیجه گنجانده شده است. توجه داشته باشید که این ردیف دارای NULL در ستون های کارمند و تخصص است. این به این دلیل است که هیچ رکوردی در جدول کارکنان پروژه_id برابر با 2، شناسه این پروژه نیست. بنابراین، یک NULL به جای آن برگردانده می شود.
پیوستن کامل بیرونی
FULL OUTER JOIN یا به سادگی FULL JOIN آخرین نوع از OUTER JOIN است. به نوعی، هر دو LEFT و RIGHT OUTER JOIN را ترکیب می کند.
در حالی که شامل رکوردهایی می شود که شرط JOIN را برآورده می کنند، همچنین شامل ردیف هایی از هر دو جدول است که چنین نیستند. یعنی یک FULL JOIN تمام سطرهای هر دو جدول را برمی گرداند. اگر ردیفی از یک جدول دارای رکورد مربوطه از جدول دیگر نباشد، داده های از دست رفته با NULL پر می شود.
آیا می خواهید SQL اولیه را با استفاده از تمرینات عملی تمرین کنید؟ مجموعه تمرین SQL ما را امتحان کنید: 88 تمرین SQL تعاملی.
بیایید نمونه ای از FULL OUTER JOIN را ببینیم:
انتخاب کنید
staff.name به عنوان کارمند،
تخصص،
projects.name به عنوان پروژه
از کارمندان
پروژه های FULL Join
ON staffs.project_id = projects.id
در اینجا نتیجه است:
پروژه تخصصی شدن کارکنان
طراحی UI/UX وب سایت توسعه دهنده Olli Woodward
طراحی UI/UX وب سایت مدیر پیت نولان
پشتیبانی ویل بارکر IT
طراحی معماری پایگاه داده توسعه دهندگان Uma Norman
طراحی معماری پایگاه داده مدیر پگی برگ
مری شلتون تحلیلگر NULL
NULL NULL تحقیق و توسعه
همانطور که می بینید، در اینجا ما همه ردیف های هر دو جدول را داریم. سطرهایی که شرط را برآورده می کنند، داده های مربوط به هر دو جدول را دارند. برای سطرهایی که این کار را انجام نمی دهند، ستون های جدول دیگر با NULL پر می شوند.
اگر میخواهید یک توضیح مختصر و در دسترس از FULL OUTER JOIN و همچنین سایر انواع SQL JOIN داشته باشید، از برگه تقلب SQL JOIN ما استفاده کنید.
CROSS JOIN
این نوع SQL JOIN کاملاً با مواردی که تاکنون در این مقاله ذکر شد متفاوت است. نه تنها هدف آن متفاوت است، بلکه نحوی نیز کمی متفاوت دارد.
هنگامی که در یک پرس و جو استفاده می شود، یک CROSS JOIN یک محصول دکارتی را برمی گرداند - همه ترکیب های ممکن از ردیف های هر دو جدول. تمام رکوردهای یک جدول به طور خودکار به تمام رکوردهای دیگری متصل می شوند.
همچنین شرط ON وجود ندارد. برای این JOIN در یک پرس و جو، به سادگی از عملگر CROSS JOIN بدون دنبال کردن کلمه کلیدی ON استفاده کنید.
بیایید در یک مثال نگاه کنیم که چگونه همه چیز کار می کند:
انتخاب کنید
staff.name به عنوان کارمند،
projects.name به عنوان پروژه
از کارمندان
پروژه های CROSS JOIN
توجه داشته باشید که ما دو ستون، نام کارمند و نام پروژه را انتخاب می کنیم و سپس CROSS JOIN را انتخاب می کنیم. بیایید به نتیجه نگاه کنیم:
پروژه کارمند
طراحی UI/UX وب سایت Olli Woodward
تحقیق و توسعه Olli Woodward
پشتیبانی اولی وودوارد
طراحی معماری پایگاه داده Olli Woodward
طراحی UI/UX وب سایت پیت نولان
تحقیق و توسعه پیت نولان
پشتیبانی پیت نولان
طراحی معماری پایگاه داده پیت نولان
طراحی UI/UX وب سایت Will Barker
تحقیق و توسعه ویل بارکر
پشتیبانی ویل بارکر
طراحی معماری پایگاه داده ویل بارکر
طراحی UI/UX وب سایت Uma Norman
تحقیق و توسعه اوما نورمن
پشتیبانی اوما نورمن
طراحی معماری پایگاه داده اوما نورمن
طراحی UI/UX وب سایت پگی برگ
تحقیق و توسعه پگی برگ
پشتیبانی پگی برگ
طراحی معماری پایگاه داده پگی برگ
طراحی UI/UX وب سایت مری شلتون
تحقیق و توسعه مری شلتون
پشتیبانی مری شلتون
طراحی معماری پایگاه داده مری شلتون
به تعداد ردیف هایی که برمی گرداند توجه کنید. محاسبه این بسیار آسان است: تعداد ردیفهای جدول اول * تعداد ردیفهای جدول دوم = تعداد ردیفهای حاصل. بنابراین، هر یک از 6 کارمند به هر یک از 4 پروژه اختصاص داده شده است.
اگر دوست دارید SQL را با استفاده از تمرینات عملی یاد بگیرید، باید LearnSQL.com را امتحان کنید.
آیا هنوز سوالاتی در مورد CROSS JOIN دارید؟ یا شاید فقط می خواهید در مورد آن بیشتر بدانید. راهنمای مصور ما برای SQL CROSS JOIN را بررسی کنید!
همه انواع SQL JOIN را تمرین کنید!
اکنون با انواع مختلف JOIN در SQL آشنا هستید. این یک فرصت عالی برای تعمیق این دانش جدید یا به سادگی مرور چیزهایی است که قبلاً می دانید. در هر صورت، من دوره عالی تعاملی SQL JOIN را توصیه می کنم. با بیش از 90 تمرین عملی، فرصتی برای تمرین این جنبه اساسی SQL است!