عملگرهای UNION (اجتماع)، UNION ALL، INTERSECT (اشتراک) و MINUS (تفاضل)
مثالی از عملگر UNION
دستور زیر با استفاده از عملگر نام برده، نتایج را با هم ترکیب کرده و سطرهای تکراری را خذف می کند. عملگر UNION برای ترکیب نتایج دو یا چند دستور SELECT استفاده می شود.
توجه داشته باشید که هر دستور SELECT در عملگر UNION باید تعداد ستونهای یکسانی را برگردانند. همچنین ستونها باید نوع داده ی همسانی داشته باشند. علاوه بر این ستونها در هر دستور SELECT باید به یک صورت مرتب شده باشند (Order By).
این دستور نشان می دهد که در صورت عدم وجود ستون در یکی از دو جدول، باید نوع داده ها را با استفاده از تابع TO_CHAR، با هم match کنید.
select empno, ename, sal, to_char(null) as “Transfer Date” from emp
UNION
select empno,ename,to_char(null) as “Sal”,tdate from oldemp; مثالی از کاربرد عملگر union
عملگر UNION تنها سطرهای متمایز را برمی گرداند که در تنها یکی از نتایج ظاهر می شود (عملگر UNION تنها داده هایی را به صورت پیش فرض انتخاب می کند که از یکدیگر متمایز باشند. برای اینکه داده های تکراری را هم بازیابی کنیم، عملگر UNION ALL را مورد استفاده قرار می دهیم).
در حالی که UNION ALL کلیه ی سطرها را بازگردانی می نماید. به عبارتی دیگر عملگر UNION ALL سطرهای تکراری را حذف نکرده و همه ی آن ها را نمایش می دهد.
select empno,ename from emp
union all
select empno,ename from oldemp;
مثالی از کاربرد عملگر INTERSECT
دستور زیر به وسیله ی عملگر INTERSECT، دو نتیجه را باهم ترکیب می کند. این عملگر سطرهایی را برمی گرداند که توسط هر دو query ارائه شده.
SELECT empno FROM emp
INTERSECT
SELECT empno FROM oldemp;
عملگر MINUS
دستور زیر نتایج را با استفاده از عملگر MINUS با هم ترکیب کرده و تنها نتایج سطرهایی را برمی گرداند که توسط query اول ارائه شده (و نه query دوم)
SELECT empno FROM emp
MINUS
SELECT empno FROM oldemp;
مرتب سازی نتایج query
به منظور مرتب سازی نتایج یک query می توان از عبارت ORDER BY در دستور SELECT استفاده کرد.
مثال:
Query زیر کارکنان را با توجه به ترتیب صعودی درآمد (بالا رونده) مرتب می سازد.
select * from emp order by sal;
query زیر کارکنان را با توجه به ترتیب نزولی درآمد آن ها مرتب می سازد.
select * from emp order by sal desc;
مثال زیر کارکنان را با توجه به ترتیب صعودی اسم آن ها مرتب می سازد.
select * from emp order by ename;
در این مثال، query ابتدا کارکنان را با توجه ترتیب صعودی اسم آن ها مرتب می سازد. در صورتی که اسم کارکنان با هم یکسان بود، به مرتب سازی کارکنان با توجه به ترتیب نزولی درآمد آن ها می پردازد.
select * from emp order by ename, sal desc;
همچنین می توان بجای اسم ستون ها، مکان آن ها مشخص کرد. درست مشابه query زیر که کارکنان را بر اساس ترتیب صعودی اسم آن ها نمایش می دهد.
select * from emp order by 2;
query زیر ابتدا کارکنان را بر اساس ترتیب صعودی درآمد آن ها مرتب می سازد. اگر درآمد ها باهم یکسان بود، کارکنان را بر مبنای ترتیب صعودی اسم آن ها مرتب می کند.
select * from emp order by 3, 2;