Selamlar arkadaşlar, bu yazımda da SQL Set Operatörleri nden bahsedeceğim.

1-)UNION Kullanımı
Join işleminde tablolar yan yana koyulurken union işleminde ise tablolar alt alta dizilmektedir. Union işleminde her iki tabloda da aynı kayıtlar varsa sorgu sonucunda tek kayıt döner. Bu da performans olarak olumsuz etki oluşturur. Ayrıca burada dikkat edilmesi gereken diğer bir husus birleştirilecek tablolarda istenilen kolonların her tabloda da aynı data tipine sahip olması gerekmektedir. Yani ilk tabloda varchar2 data tipine sahip bir kolon ile diğer tabloda number data tipine sahip bir tabloyu union layamayız.
İki tablo create edelim ve içerisine data insert edelim;

Şimdi iki tabloyu idnum ve first_name kolonları üzerinden unionlayalım;

Şimdi de data tipleri uymayan department ve department_no kolonları üzerinden union işlemi yapmayı deneyelim;

Görüldüğü gibi Oracle DB kolonların data tipleri uyuşmadığı için union işlemini yapamamaktadır.
2- UNION ALL
Union All işleminin union işleminden tek farkı iki tabloda da aynı olan kayıtları tek satır olarak döndürmez, her iki tablodaki tüm datayı bize döndürür. Burada DB dataları tek satıra indirmek için data taraması yapmayacağından performans olarak olumlu etki sağlamaktadır.
Bunu gözlemleyebilmek için aynı değerlerin olduğu idnum kolonu üzerinden union all işlemi yapalım;

Görüldüğü gibi 2 ve 3 değeri her iki tabloda olmasına rağmen tek e indirmedi ve her iki tablodaki count sayısı kadar data döndürdü.
3- INTERSECT
Intersect operatörü ise iki tablo arasında kullanılan kolon/kolonlar üzerinden eşleşen dataları bizlere döndürür. Yani joinlerdeki inner join in yapısına benzemektedir.

4- MINUS
Minus operatörünü A fark B prensibi ile çalışmaktadır. Yani sadece minus operatöründen önceki tabloda olup diğer tabloda olmayan dataları getirmektedir. En üstte paylaştığım görseli incelerseniz mantığı daha anlaşılır olacaktır. Şimdi idnum kolonu üzerinden A fark B örneği ve sonrasında B fark A örneğini yapalım;


Minus operatörü SQL Set Operatörleri nin sonuna geldik. Umarım faydalı olmuştur, herkese iyi çalışmalar 🙂