İner join ,Join Using,Join On,Natural Join, Cross Join,Union, Union All , Minus ,İntersect Birleştirmeler (Oracle Sql)
İner join , Join Using , Join On
INNER JOIN en çok kullanılan tablo birleştirme yöntemidir. İki tablo arasında birleştirme yaparken, tablolardan her ikisinde de yer alan değerler seçilir, tek tabloda yer alan değerler seçilmez.Buna ,ç,ne bağlantıda deniliyor sadece bağlantı kurulan alanları eşleşebilen kayıtlar dönderir bize .. İçine bağlantı, bağlantı kurulan alanlar arasına “=” işareti konarak yazılır.
Join on ile Join Using te sadece söz dizimi kullanımı farklılıı vardır assagıda yazacagımız sorgularla aynı sonucu elde etmiş oluruz
Misal olarak oracle xe kullanan arkadaşlar bilirler hr userinin employees ve departments tablolarını kullanalım.
Natural Join
inner joinden farkı aslında ayn işi yapıyolar ama natural join kullandığımızda tablolar arasındaki tüm ilişkilendirmeleri göz önünde bulundurarak yapıyor mesela iki tablomuzda department_id kolonlarını ilişkili ozaman sorgumuz calıstıgında department_id lere göre bütün employees leri getirecek.
Örnekte gene aynı tablo kullanılmıştır..
Cross Join
Her iki tabloyu çapraz olarak birleştirir.
Yani, ilk tablodaki her bir satır için ikinci tablodaki her satır sonuç olarak döner.
burada ortak alanlar eşitlenmez,sadece tablolar belirtilir.
select e.first_name,d.department_name from employees e cross join departments d ;
Bu sorguyu yazdıktan sonra aynı tablolar için konusuyorum employees kayıtımız varken suan bana 2889 kayıt dönderdi bu sorguda ortak alanlar eşitlenmeksizin Kartezyen çarpımı yapılıyor bir nevi.
UNION , UNION ALL , Minus ,İntersect
UNION ve UNION ALL ifadeleri iki sorgu sonucunun birleştirilmesi için kullanılır.
Tek farkı, UNION mükerrer kayıtları getirmez, UNION ALL ise tüm kayıtları olduğu gibi listeler.
Minus misal a ve b tablomuz olsun A daki veriler fark B yigetirir yani küme gibi düşünelim A fark B yi dönderir.
İntersect ise gene iki küme gibi düşünelim A kesişim B yi verir .
1-)İki tablonun sütun sayısı aynı olmalıdır.
2-)İlk tablodaki her sütunun veri tipi ikinci tabloda ona karşılık gelen sütunun veri tipiyle aynı olmalıdır.
3-)İki tablonun hiç biri ORDER BEY cümleciğiyle sıralanamaz.
Kullanım Şekilleri
Union
select name ,surname from A union select name ,surname from B;
Çıktısı :
NAME SURNAME
—————————— ——————–
Cumhur CAGATAY
Engin TURGUT
Ertugrul ARSLAN
Halil KILIC
Mehmet ARSLAN
Mehmet KILIC
Mehmet TURKER
Melike ACIK
Salih KINCAL
9 rows selected.
Union All
select name ,surname from A union all select name ,surname from B;
Çıktısı:
NAME SURNAME
—————————— ——–
Mehmet KILIC
Mehmet TURKER
Cumhur CAGATAY
Engin TURGUT
Melike ACIK
Ertugrul ARSLAN
Mehmet ARSLAN
Cumhur CAGATAY
Mehmet KILIC
Salih KINCAL
Halil KILIC
11 rows selected.
Minus
select name ,surname from A minus select name ,surname from B;
Çıktısı:
NAME SURNAME
—————————— ———–
Engin TURGUT
Ertugrul ARSLAN
Mehmet TURKER
Melike ACIK
İntersect
select name ,surname from A intersect select name ,surname from B;
Çıktısı:
NAME SURNAME
—————————— ———
Cumhur CAGATAY
Mehmet KILIC
Kısa ama açıklayıcı olmuş ellerine sağlık!