3.1.5.2 UNION ALL
Operator UNION ALL menggabungkan masing-masing hasil dari perintah SELECT menjadi sebuah SET hasil result set. Contoh di bawah ini
menggambarkan operasi UNION ALL:
Seperti yang kita lihat pada hasil query di atas, terdapat satu customer yang dihasilkan oleh dua query SELECT, muncul sebanyak dua kali Flowtech Inc..
Operator UNION ALL menggabungkan semua output dari kedua query SELECT tanpa peduli tentang duplikasi apapun di result set.
3.1.5.3 UNION
Operator UNION mengembalikan semua baris yang berbeda all distinct rows diambil oleh dua query SELECT. Operator UNION mengeliminasi duplikasi
yang terjadi pada result set hasil penggabungan dua query SELECT. Contoh di bawah ini menggambarkan operasi UNION:
SELECT CUST_NBR, NAME FROM CUSTOMER
WHERE REGION_ID = 5 UNION ALL
SELECT C.CUST_NBR, C.NAME FROM CUSTOMER C
WHERE C.CUST_NBR IN SELECT O.CUST_NBR FROM CUST_ORDER O, EMPLOYEE E
WHERE O.SALES_EMP_ID = E.EMP_ID AND E.LNAME = MARTIN;
CUST_NBR NAME ---------- ------------------------------
1 Cooper Industries 2 Emblazon Corp.
3 Ditech Corp. 4 Flowtech Inc.
5 Gentech Industries 4 Flowtech Inc.
8 Zantech Inc.
Query di atas adalah modifikasi dari query sebelumnya, yaitu dengan mengganti operator UNION ALL dengan operator UNION. Perhatikan bahwa hasil
dari query di atas hanya berisi semua baris yang berbeda all distinct rows dan tidak terdapat duplikasi baris. Untuk mengeliminasi duplikasi baris, operasi
UNION memerlukan tambahan proses jika dibandingkan dengan operasi UNION ALL. Tambahan proses yang dimaksud meliputi proses sorting dan filtering dari
result set. Jika kita perhatikan baik-baik, kita akan menemukan bahwa result set dari operasi UNION ALL adalah tidak urut, sedangkan result set dari operasi
UNION adalah urut. Tambahan proses pada operasi UNION ini tentu saja memerlukan waktu tambahan jika dibandingkan dengan operasi UNION ALL
meskipun tidak ada duplikasi yang harus dihilangkan. Jika kita sudah yakin tidak akan ada duplikasi di dua buah query SELECT, maka lebih baik kita gunakan
operasi UNION ALL untuk menggabungkan data.
SELECT CUST_NBR, NAME FROM CUSTOMER
WHERE REGION_ID = 5 UNION
SELECT C.CUST_NBR, C.NAME FROM CUSTOMER C
WHERE C.CUST_NBR IN SELECT O.CUST_NBR FROM CUST_ORDER O, EMPLOYEE E
WHERE O.SALES_EMP_ID = E.EMP_ID AND E.LNAME = MARTIN;
CUST_NBR NAME ---------- ------------------------------
1 Cooper Industries 2 Emblazon Corp.
3 Ditech Corp. 4 Flowtech Inc.
5 Gentech Industries 8 Zantech Inc.
3.1.5.4 INTERSECT