دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
توابع مقایسه ای در پایگاه داده اوراکل
1403/07/14 -
توابع تاریخ در پایگاه داده اوراکل
1403/07/12 -
توابع ریاضی در پایگاه داده اوراکل
1403/07/11 -
توابع رشته ای در پایگاه داده اوراکل
1403/07/10 -
مدیریت زمانبندی (Job) در پایگاه داده اوراکل
1403/07/09 -
مدیریت Trigger در پایگاه داده اوراکل
1403/07/08
عملگرهای مجموعه ای در پایگاه داده اوراکل
عملگرهای مجموعهای (Set Operators) در پایگاه داده اوراکل
عملگرهای مجموعهای (Set Operators) در پایگاه داده اوراکل به کاربران امکان میدهند تا دو یا چند مجموعه از نتایج را با هم ترکیب کرده و بهصورت یک مجموعه واحد نمایش دهند.
این عملگرها بر اساس تئوری مجموعهها در ریاضیات تعریف شدهاند و در کار با دادهها و تحلیلهای پیچیده بسیار مفید هستند.
عملگرهای مجموعهای به کاربران کمک میکنند که کوئریهای SQL را ترکیب کنند و بهجای اجرای چند کوئری مختلف، نتایج را بهصورت یکپارچه دریافت کنند.
اوراکل چندین عملگر مجموعهای را ارائه میدهد که به ترتیب در مورد هرکدام و همراه با مثالهای عملی صحبت خواهیم کرد.
انواع عملگرهای مجموعهای اوراکل
-
UNION
-
UNION ALL
-
INTERSECT
-
MINUS
هر کدام از این عملگرها برای ترکیب نتایج از دو یا چند دستور SELECT استفاده میشوند و نحوه ترکیب نتایج توسط هر یک از آنها متفاوت است.
-
عملگر UNION
عملگر UNION نتایج دو یا چند کوئری SELECT را با هم ترکیب کرده و مجموعهای از نتایج یکتا (غیر تکراری) را بازمیگرداند.
در واقع، عملگر UNION مقادیر تکراری را حذف میکند و فقط مقادیر منحصر به فرد را در خروجی نمایش میدهد.
قوانین استفاده از UNION:
ستونها در دو یا چند کوئری که ترکیب میشوند، باید تعداد و نوع داده یکسان داشته باشند.
ترتیب ستونها نیز باید یکسان باشد.
نحو (Syntax) عملگر UNION:
SELECT column_list FROM table1
UNION
SELECT column_list FROM table2;
مثال از عملگر UNION:
فرض کنید دو جدول داریم: employees_2023 و employees_2024 که هر دو شامل فهرستی از کارمندان هستند. میخواهیم فهرست یکتای همه کارمندان در هر دو سال را به دست بیاوریم.
SELECT employee_id, first_name, last_name FROM employees_2023
UNION
SELECT employee_id, first_name, last_name FROM employees_2024;
در اینجا، UNION رکوردهای تکراری را حذف میکند و تنها فهرستی از کارمندان یکتا را برمیگرداند.
نکات مهم در مورد UNION:
UNION مقادیر تکراری را حذف میکند، بنابراین ممکن است زمان بیشتری نسبت به UNION ALL صرف شود زیرا اوراکل باید نتایج را برای یافتن مقادیر تکراری بررسی کند.
اگر نیاز به حفظ ترتیب خاصی در نتایج دارید، باید از عبارت ORDER BY در آخرین کوئری SELECT استفاده کنید.
-
عملگر UNION ALL
عملگر UNION ALL نیز مانند UNION دو مجموعه نتایج را با هم ترکیب میکند، اما برخلاف UNION، مقادیر تکراری را حذف نمیکند. در نتیجه، تمام رکوردها (حتی تکراریها) در خروجی نمایش داده میشوند.
نحو (Syntax) عملگر UNION ALL:
SELECT column_list FROM table1
UNION ALL
SELECT column_list FROM table2;
مثال از عملگر UNION ALL:
همان مثال قبلی را در نظر بگیرید، اما این بار میخواهیم همه کارمندان، حتی آنهایی که در هر دو جدول هستند، در خروجی نمایش داده شوند.
SELECT employee_id, first_name, last_name FROM employees_2023
UNION ALL
SELECT employee_id, first_name, last_name FROM employees_2024;
در اینجا، UNION ALL تمامی رکوردها، از جمله رکوردهای تکراری، را نمایش میدهد.
نکات مهم در مورد UNION ALL:
UNION ALL سریعتر از UNION است، زیرا نیازی به بررسی و حذف مقادیر تکراری ندارد.
برای مواقعی که نیاز به نتایج تکراری دارید یا از تکراری بودن دادهها مطمئن هستید، استفاده از UNION ALL توصیه میشود.
-
عملگر INTERSECT
عملگر INTERSECT فقط رکوردهایی را برمیگرداند که در هر دو مجموعه نتایج مشترک باشند. این عملگر معادل تقاطع دو مجموعه در تئوری مجموعهها است. بنابراین، تنها رکوردهایی که در هر دو کوئری SELECT موجود باشند، در خروجی نمایش داده میشوند.
نحو (Syntax) عملگر INTERSECT:
SELECT column_list FROM table1
INTERSECT
SELECT column_list FROM table2;
مثال از عملگر INTERSECT:
فرض کنید میخواهیم فهرست کارمندانی را به دست بیاوریم که هم در سال 2023 و هم در سال 2024 کار میکردهاند.
SELECT employee_id, first_name, last_name FROM employees_2023
INTERSECT
SELECT employee_id, first_name, last_name FROM employees_2024;
در اینجا، INTERSECT فقط آن دسته از کارمندانی را برمیگرداند که در هر دو جدول وجود داشته باشند.
نکات مهم در مورد INTERSECT:
INTERSECT مقادیر تکراری را به طور خودکار حذف میکند، زیرا فقط مقادیر مشترک در هر دو مجموعه را برمیگرداند.
ترتیب ستونها و نوع دادهها در هر دو کوئری SELECT باید یکسان باشد.
-
عملگر MINUS
عملگر MINUS تمام رکوردهایی را که در کوئری اول وجود دارند ولی در کوئری دوم وجود ندارند، برمیگرداند. به عبارت دیگر، عملگر MINUS تفاوت بین دو مجموعه از نتایج را نمایش میدهد.
نحو (Syntax) عملگر MINUS:
SELECT column_list FROM table1
MINUS
SELECT column_list FROM table2;
مثال از عملگر MINUS:
فرض کنید میخواهیم فهرست کارمندانی را به دست بیاوریم که در سال 2023 کار میکردهاند اما در سال 2024 دیگر کار نمیکنند.
SELECT employee_id, first_name, last_name FROM employees_2023
MINUS
SELECT employee_id, first_name, last_name FROM employees_2024;
در اینجا، MINUS فهرست کارمندانی را بازمیگرداند که فقط در جدول employees_2023 وجود دارند و در جدول employees_2024 نیستند.
نکات مهم در مورد MINUS:
MINUS فقط مقادیر منحصر به فردی که در مجموعه اول هستند و در مجموعه دوم نیستند را نمایش میدهد.
مانند سایر عملگرهای مجموعهای، نوع و ترتیب ستونها در دو کوئری باید یکسان باشد.
مقایسه و تفاوتهای کلیدی بین عملگرهای مجموعهای
UNION و UNION ALL هر دو برای ترکیب نتایج استفاده میشوند، اما UNION مقادیر تکراری را حذف میکند، در حالی که UNION ALL همه نتایج (حتی تکراریها) را نمایش میدهد.
INTERSECT فقط مقادیر مشترک بین دو مجموعه از نتایج را نمایش میدهد، در حالی که MINUS مقادیر موجود در مجموعه اول را که در مجموعه دوم نیستند، بازمیگرداند.
عملگرهای UNION و UNION ALL برای ترکیب مجموعههای مختلف داده به کار میروند، در حالی که INTERSECT و MINUS برای مقایسه و یافتن مقادیر مشترک یا تفاوتها استفاده میشوند.
قوانین استفاده از عملگرهای مجموعهای
هنگام استفاده از عملگرهای مجموعهای در اوراکل، باید قوانین خاصی را رعایت کنید تا کوئری به درستی عمل کند:
تعداد و ترتیب ستونها
تعداد ستونهای انتخابشده در هر کوئری SELECT باید یکسان باشد.
ترتیب ستونها نیز باید یکسان باشد.
نوع داده ستونها
نوع داده هر ستون در هر کوئری باید سازگار باشد. به عنوان مثال، اگر ستون اول در کوئری اول از نوع عددی است، باید ستون اول در کوئری دوم نیز از نوع عددی باشد.
استفاده از عبارت ORDER BY
عملگرهای مجموعهای بهطور مستقیم نمیتوانند با عبارت ORDER BY ترکیب شوند. اگر میخواهید نتایج را مرتب کنید، باید از ORDER BY در انتهای آخرین کوئری استفاده کنید.
مثال:
SELECT employee_id, first_name, last_name FROM employees_2023
UNION
SELECT employee_id, first_name, last_name FROM employees_2024
ORDER BY last_name;
دوره های مرتبط
اموزش پایگاه داده اوراکل Oracle
در دوره آموزش پایگاه داده اوراکل اصول ، مفاهیم ، طراحی ، پیادهسازی و مدیریت پایگاه داده را به صورت جامع آموزش می دهیم .