دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
توابع مقایسه ای در پایگاه داده اوراکل
1403/07/14 -
توابع تاریخ در پایگاه داده اوراکل
1403/07/12 -
توابع ریاضی در پایگاه داده اوراکل
1403/07/11 -
توابع رشته ای در پایگاه داده اوراکل
1403/07/10 -
مدیریت زمانبندی (Job) در پایگاه داده اوراکل
1403/07/09 -
مدیریت Trigger در پایگاه داده اوراکل
1403/07/08
پیوندها (join) در پایگاه داده اوراکل
پیوندها (Join) در پایگاه داده اوراکل
در پایگاه دادههای رابطهای مانند اوراکل، دادهها معمولاً در چندین جدول ذخیره میشوند و برای استخراج دادههای مرتبط از جداول مختلف نیاز به پیوند (Join) داریم.
پیوندها به ما اجازه میدهند تا دادههایی که بهصورت مجزا در جداول مختلف ذخیره شدهاند را به صورت یکپارچه در خروجی نمایش دهیم.
در اوراکل و سایر پایگاه دادههای رابطهای، پیوندها از مهمترین مفاهیم برای کار با دادههای ساختار یافته هستند.
در این مطلب، انواع پیوندها، کاربرد آنها و مثالهایی از نحوه استفاده از هر کدام توضیح داده میشود..
انواع پیوندها (Join Types)
پیوندها در SQL به چند دسته مختلف تقسیم میشوند. انواع مختلف پیوندها عبارتند از:
-
INNER JOIN
-
LEFT OUTER JOIN
-
RIGHT OUTER JOIN
-
FULL OUTER JOIN
-
CROSS JOIN
-
SELF JOINNATURAL JOIN
مفهوم انواع پیوندها در پایگاه داده اوراکل
در ادامه هرکدام از این پیوندها بهطور کامل توضیح داده میشوند.
-
INNER JOIN
INNER JOIN یا پیوند داخلی، رایجترین نوع پیوند است که فقط رکوردهایی را برمیگرداند که در هر دو جدول مطابقت داشته باشند.
به بیان دیگر، فقط ردیفهایی از هر دو جدول که دارای مقادیر مشترک در ستونهای مشخصشده هستند، در خروجی نمایش داده میشوند.
نحو (Syntax) پیوند داخلی:
SELECT columns
FROM table1
INNER JOIN table2
ON table1.common_column = table2.common_column;
مثال از INNER JOIN:
فرض کنید دو جدول داریم: employees (کارمندان) و departments (بخشها). جدول employees شامل اطلاعات کارمندان و جدول departments شامل اطلاعات بخشها است.
هر کارمند در یک بخش کار میکند و بین این دو جدول یک ستون مشترک department_id وجود دارد.
SELECT employees.employee_id, employees.first_name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.department_id;
در اینجا، INNER JOIN تمام کارمندانی را که در هر دو جدول وجود دارند و دارای بخش مشخصی هستند، برمیگرداند.
نکات مهم در مورد INNER JOIN:
اگر یک ردیف در یک جدول باشد ولی ردیف متناظر در جدول دیگر وجود نداشته باشد، آن ردیف در خروجی نمایش داده نمیشود.
برای یافتن رکوردهای مرتبط بین دو جدول، این پیوند ایدهآل است.
-
LEFT OUTER JOIN
LEFT OUTER JOIN یا پیوند بیرونی چپ، تمام رکوردهای جدول سمت چپ (اول) را به همراه رکوردهای مطابقتدار از جدول سمت راست (دوم) برمیگرداند.
اگر رکوردی در جدول سمت راست وجود نداشته باشد، مقادیر مربوط به آن NULL خواهند بود.
نحو (Syntax) پیوند بیرونی چپ:
SELECT columns
FROM table1
LEFT OUTER JOIN table2
ON table1.common_column = table2.common_column;
مثال از LEFT OUTER JOIN:
فرض کنید میخواهیم لیستی از تمام کارمندان به همراه نام بخش آنها بگیریم، اما ممکن است برخی کارمندان هنوز در هیچ بخشی قرار نگرفته باشند.
SELECT employees.employee_id, employees.first_name, departments.department_name
FROM employees
LEFT OUTER JOIN departments
ON employees.department_id = departments.department_id;
در اینجا، LEFT OUTER JOIN تمامی کارمندان را نمایش میدهد، حتی آنهایی که هنوز در هیچ بخشی قرار ندارند.
برای کارمندانی که بخش ندارند، ستون department_name مقدار NULL خواهد داشت.
نکات مهم در مورد LEFT OUTER JOIN:
تمامی رکوردهای جدول سمت چپ نمایش داده میشوند، حتی اگر در جدول سمت راست مطابقت نداشته باشند.
رکوردهایی که مطابقت ندارند در ستونهای جدول سمت راست مقدار NULL خواهند داشت.
-
RIGHT OUTER JOIN
RIGHT OUTER JOIN یا پیوند بیرونی راست، مشابه LEFT OUTER JOIN است، با این تفاوت که در این نوع پیوند، تمام رکوردهای جدول سمت راست نمایش داده میشوند و اگر در جدول سمت چپ مطابقتی وجود نداشته باشد، مقدار NULL در ستونهای مربوط به جدول سمت چپ نمایش داده میشود.
نحو (Syntax) پیوند بیرونی راست:
SELECT columns
FROM table1
RIGHT OUTER JOIN table2
ON table1.common_column = table2.common_column;
مثال از RIGHT OUTER JOIN:
فرض کنید میخواهیم لیستی از تمامی بخشها و کارمندان آنها بگیریم، اما ممکن است برخی بخشها هنوز کارمند نداشته باشند.
SELECT employees.employee_id, employees.first_name, departments.department_name
FROM employees
RIGHT OUTER JOIN departments
ON employees.department_id = departments.department_id;
در اینجا، RIGHT OUTER JOIN تمامی بخشها را نمایش میدهد، حتی آنهایی که هنوز هیچ کارمندی ندارند.
برای بخشهایی که کارمند ندارند، ستونهای مربوط به اطلاعات کارمند مقدار NULL خواهند داشت.
نکات مهم در مورد RIGHT OUTER JOIN:
تمامی رکوردهای جدول سمت راست نمایش داده میشوند، حتی اگر در جدول سمت چپ مطابقتی نداشته باشند.
رکوردهایی که مطابقت ندارند در ستونهای جدول سمت چپ مقدار NULL خواهند داشت.
-
FULL OUTER JOIN
FULL OUTER JOIN یا پیوند بیرونی کامل، ترکیبی از LEFT OUTER JOIN و RIGHT OUTER JOIN است.
در این نوع پیوند، تمامی رکوردهای هر دو جدول نمایش داده میشوند و اگر مطابقتی بین آنها وجود نداشته باشد، مقدار NULL در ستونهای مربوط به جدول دیگر نمایش داده خواهد شد.
نحو (Syntax) پیوند بیرونی کامل:
SELECT columns
FROM table1
FULL OUTER JOIN table2
ON table1.common_column = table2.common_column;
مثال از FULL OUTER JOIN:
فرض کنید میخواهیم لیستی از تمامی کارمندان و تمامی بخشها بگیریم، حتی اگر برخی کارمندان بخش نداشته باشند یا برخی بخشها کارمند نداشته باشند.
SELECT employees.employee_id, employees.first_name, departments.department_name
FROM employees
FULL OUTER JOIN departments
ON employees.department_id = departments.department_id;
در اینجا، FULL OUTER JOIN تمامی کارمندان و تمامی بخشها را نمایش میدهد. برای کارمندانی که بخش ندارند یا بخشهایی که کارمند ندارند، مقدار NULL در ستونهای مربوطه نمایش داده خواهد شد.
نکات مهم در مورد FULL OUTER JOIN:
تمامی رکوردهای هر دو جدول نمایش داده میشوند، حتی اگر مطابقتی وجود نداشته باشد.
اگر مطابقتی وجود نداشته باشد، مقدار NULL در ستونهای مربوط به جدول دیگر نمایش داده میشود.
-
CROSS JOIN
CROSS JOIN یا پیوند ضربدکارتی، تمامی ترکیبهای ممکن از رکوردهای دو جدول را برمیگرداند. به بیان دیگر، هر رکورد از جدول اول با هر رکورد از جدول دوم ترکیب میشود. این پیوند در برخی موارد مفید است، اما اغلب باعث ایجاد تعداد بسیار زیادی از رکوردها میشود و در کاربردهای عملی کمتر استفاده میشود.
نحو (Syntax) پیوند ضرب دکارتی:
SELECT columns
FROM table1
CROSS JOIN table2;
مثال از CROSS JOIN:
فرض کنید دو جدول داریم: products و suppliers (محصولات و تأمینکنندگان). میخواهیم تمامی ترکیبهای ممکن از محصولات و تأمینکنندگان را به دست بیاوریم.
SELECT products.product_name, suppliers.supplier_name
FROM products
CROSS JOIN suppliers;
در اینجا، CROSS JOIN تمامی ترکیبهای ممکن از هر محصول با هر تأمینکننده را نمایش میدهد.
نکات مهم در مورد CROSS JOIN:
CROSS JOIN میتواند تعداد زیادی رکورد تولید کند، زیرا تمامی ترکیبهای ممکن بین دو جدول نمایش داده میشوند.
این پیوند بیشتر در مواقعی استفاده میشود که تمام ترکیبهای ممکن مورد نیاز باشند، اما در اکثر موارد، پیوندهای دیگر مفیدتر هستند.
-
SELF JOIN
SELF JOIN نوعی پیوند است که در آن یک جدول به خودش پیوند میخورد. این پیوند زمانی مفید است که بخواهیم دادههای مرتبط درون یک جدول را مقایسه یا تحلیل کنیم. به عنوان مثال، میتوانیم برای یافتن روابط سلسله مراتبی در یک سازمان از SELF JOIN استفاده کنیم.
نحو (Syntax) پیوند خود:
SELECT A.columns, B.columns
FROM table A
JOIN table B
ON A.common_column = B.common_column;
مثال از SELF JOIN:
فرض کنید در جدول employees ستون manager_id وجود دارد که شناسه مدیر هر کارمند را نشان میدهد. میخواهیم لیستی از کارمندان به همراه مدیران آنها بگیریم.
SELECT e.employee_id, e.first_name AS employee_name, m.first_name AS manager_name
FROM employees e
LEFT JOIN employees m
ON e.manager_id = m.employee_id;
در اینجا، جدول employees دوبار در کوئری استفاده شده است، یکبار بهعنوان e و یکبار بهعنوان m. این SELF JOIN به ما اجازه میدهد تا هر کارمند را با مدیرش مرتبط کنیم.
نکات مهم در مورد SELF JOIN:
SELF JOIN معمولاً برای تحلیل روابط درون یک جدول استفاده میشود، مانند روابط سلسلهمراتبی.
این نوع پیوند نیاز به استفاده از نام مستعار جدولها دارد تا بتوانیم جدول را چند بار در یک کوئری استفاده کنیم.
-
NATURAL JOIN
NATURAL JOIN نوع خاصی از پیوند است که بهطور خودکار ستونهای مشترک بین دو جدول را تشخیص میدهد و بر اساس آنها پیوند ایجاد میکند. برخلاف سایر پیوندها که باید صراحتاً مشخص کنیم که کدام ستونها باید با هم مطابقت داشته باشند، در NATURAL JOIN این فرآیند بهطور خودکار انجام میشود.
نحو (Syntax) پیوند طبیعی:
SELECT columns
FROM table1
NATURAL JOIN table2;
مثال از NATURAL JOIN:
فرض کنید دو جدول employees و departments داریم که هر دو دارای ستون department_id هستند. میخواهیم فهرستی از کارمندان به همراه نام بخش آنها بگیریم.
SELECT employee_id, first_name, department_name
FROM employees
NATURAL JOIN departments;
در اینجا، NATURAL JOIN بهطور خودکار ستون department_id را که بین دو جدول مشترک است پیدا میکند و بر اساس آن پیوند ایجاد میکند.
نکات مهم در مورد NATURAL JOIN:
NATURAL JOIN فقط در صورتی استفاده میشود که ستونهای مشترک بین دو جدول وجود داشته باشد.
این پیوند نیاز به صراحتاً مشخص کردن ستونها ندارد، اما ممکن است باعث خطا شود اگر بیش از یک ستون مشترک وجود داشته باشد.
دوره های مرتبط
اموزش پایگاه داده اوراکل Oracle
در دوره آموزش پایگاه داده اوراکل اصول ، مفاهیم ، طراحی ، پیادهسازی و مدیریت پایگاه داده را به صورت جامع آموزش می دهیم .