Daha
SQL JOIN ve farklı JOIN türleri
SQL JOIN
nedir ve farklı türleri nelerdir?
236
3
SQL JOIN
nedir ve farklı türleri nelerdir?
W3schools](https://www.w3schools.com/sql/sql_join.asp) adresinden bir örnek:
SQL JOIN` nedir?
SQL JOIN
iki veya daha fazla veritabanı tablosundan veri almak için kullanılan bir yöntemdir.Farklı
SQL JOIN
ler nelerdir?Toplam beş adet
JOIN
vardır. Bunlar:JOIN veya INNER JOIN:
Bu tür bir
JOIN
de, her iki tabloda da koşulla eşleşen tüm kayıtları alırız ve her iki tabloda da eşleşmeyen kayıtlar raporlanmaz.Başka bir deyişle,
INNER JOIN
tek bir gerçeğe dayanır: SADECE HER İKİ tablodaki eşleşen girdiler listelenmelidir.Başka herhangi bir
JOIN
anahtar sözcüğü (INNER
,OUTER
,LEFT
, vb. gibi) içermeyen birJOIN
in birINNER JOIN
olduğunu unutmayın. Başka bir deyişle,JOIN
aINNER JOIN
için sözdizimsel şeker (bkz: https://stackoverflow.com/questions/565620/difference-between-join-and-inner-join).OUTER JOIN:
OUTER JOIN
alırYa da, bir tablodaki eşleşen satırları ve diğer tablodaki tüm satırları Ya da, tüm tablolardaki tüm satırlar (bir eşleşme olup olmadığı önemli değildir).
Üç çeşit Outer Join vardır:
2.1 LEFT OUTER JOIN veya LEFT JOIN
Bu birleştirme, soldaki tablodaki tüm satırları, aşağıdaki tablodaki eşleşen satırlarla birlikte döndürür Sağ masa. Doğru tabloda eşleşen sütun yoksa,
NULL
değerlerini döndürür.2.2 SAĞ DIŞ ORTAK veya SAĞ ORTAK
Bu
JOIN
, sağ tablodaki tüm satırları, aşağıdaki tablodaki eşleşen satırlarla birlikte döndürür Sol masa. Sol tabloda eşleşen sütun yoksaNULL
değerlerini döndürür.2.3 FULL OUTER JOIN veya FULL JOIN
Bu
JOIN
,LEFT OUTER JOIN
veRIGHT OUTER JOIN
öğelerini birleştirir. Koşullar karşılandığında her iki tablodan da satır döndürür ve eşleşme olmadığındaNULL
değerini döndürür.Başka bir deyişle,
OUTER JOIN
şu gerçeğe dayanır: SADECE tablolardan BİRİNDE (SAĞ veya SOL) veya tabloların HER İKİSİNDE (TAM) eşleşen girişler listelenmelidir.DOĞAL BİRLEŞİM:
Bu iki koşula dayanmaktadır:
JOIN
eşitlik için aynı isme sahip tüm sütunlarda yapılır.Bu daha çok teorik bir konu gibi görünmektedir ve sonuç olarak (muhtemelen) çoğu DBMS Bunu destekleme zahmetine bile girmeyin.
CROSS JOIN:
İlgili iki tablonun Kartezyen çarpımıdır. Bir
CROSS JOIN
sonucu bir anlam ifade etmeyecektir çoğu durumda. Dahası, buna hiç ihtiyaç duymayacağız (ya da kesin olmak gerekirse en az ihtiyaç duyacağız).SELF JOIN:
Bu
JOIN
in farklı bir formu değildir, daha ziyade bir tablonun kendisineJOIN
idir (INNER
,OUTER
, vb.).Operatörlere dayalı JOIN'ler
Bir
JOIN
cümlesi için kullanılan işlece bağlı olarak, iki türJOIN
olabilir. BunlarEqui JOIN
Theta JOIN
Equi JOIN:
Hangi
JOIN
türü için olursa olsun (INNER
,OUTER
, vb.), SADECE eşitlik operatörünü (=) kullanırsak, o zaman şunu söyleriz JOINbir
EQUI JOIN`dir.Theta JOIN:
Bu
EQUI JOIN
ile aynıdır ancak >, = vb. gibi diğer tüm operatörlere izin verir.Tanım:
JOIN'ler, birden fazla tablodan bir araya getirilen verileri aynı anda sorgulamanın bir yoludur.
JOIN Türleri:
RDBMS ile ilgili olarak 5 tür birleştirme vardır:
Equi-Join:** İki tablodaki ortak kayıtları eşitlik koşuluna göre birleştirir. Teknik olarak Join, bir tablonun Birincil Anahtar değerlerini ve diğer tablonun Yabancı Anahtar değerlerini karşılaştırmak için eşitlik operatörü (=) kullanılarak yapılır, bu nedenle sonuç kümesi her iki tablodan ortak (eşleşen) kayıtları içerir. Uygulama için INNER-JOIN bölümüne bakınız.
Doğal Birleştirme:** Equi-Join'in geliştirilmiş versiyonudur, burada SELECT işlemi yinelenen sütunu atlar. Uygulama için bakınız INNER-JOIN
Eşit Olmayan Birleştirme:** Birleştirme koşulunun eşit operatör (=) dışında kullanıldığı Eşit Birleştirmenin tersidir; örneğin, !=, =, >, < veya BETWEEN vb. Uygulama için INNER-JOIN bölümüne bakınız.
Kendi Kendine Katıl:: Bir tablonun kendisiyle birleştirildiği özelleştirilmiş bir birleştirme davranışı; Bu genellikle kendi kendine referans veren tabloları (veya Unary relationship entity) sorgulamak için gereklidir. Uygulama için INNER-JOIN'lere bakın.
Kartezyen Ürün:** Her iki tablodaki tüm kayıtları herhangi bir koşul olmaksızın çapraz olarak birleştirir. Teknik olarak WHERE-Clause içermeyen bir sorgunun sonuç kümesini döndürür.
SQL endişesi ve ilerlemesine göre, 3 tür birleştirme vardır ve tüm RDBMS birleştirmeleri bu tür birleştirmeler kullanılarak gerçekleştirilebilir.
INNER-JOIN: İki tablodan eşleşen satırları birleştirir (veya birleştirir). Eşleştirme, tabloların ortak sütunlarına ve karşılaştırma işlemine dayalı olarak yapılır. Eşitlik temelli koşul ise o zaman: EQUI-JOIN gerçekleştirilir, aksi takdirde Non-EQUI-Join.
OUTER-JOIN: İki tablodan eşleşen satırları ve NULL değerlere sahip eşleşmeyen satırları birleştirir (veya birleştirir). Ancak, eşleşmeyen satırların seçimini özelleştirebilir, örneğin, alt türlere göre ilk tablodan veya ikinci tablodan eşleşmeyen satırı seçebilir: LEFT OUTER JOIN ve RIGHT OUTER JOIN.
2.1. SOL OUTER JOIN (diğer adıyla LEFT-JOIN): İki tablodan eşleşen satırları ve yalnızca LEFT tablosundan (yani ilk tablodan) eşleşmeyen satırları döndürür.
2.2. SAĞ DIŞ BİRLEŞİM (a.k.a, SAĞ BİRLEŞİM): İki tablodan eşleşen satırları ve yalnızca SAĞ tablodan eşleşmeyen satırları döndürür.
2.3. FULL OUTER JOIN (diğer adıyla OUTER JOIN): Her iki tablodan eşleşen ve eşleşmeyenleri döndürür.
CROSS-JOIN: Bu birleştirme birleştirme/birleştirme yapmaz, bunun yerine Kartezyen çarpım gerçekleştirir.
![resim açıklamasını buraya girin][1] Not: Self-JOIN, gereksinime göre INNER-JOIN, OUTER-JOIN ve CROSS-JOIN ile elde edilebilir ancak tablo kendi içinde birleşmelidir.
[Daha fazla bilgi için:][2]
Örnekler:
1.1: INNER-JOIN: Equi-join uygulaması
1.2: INNER-JOIN: Doğal-JOIN uygulaması
1.3: NON-Equi-join uygulaması ile INNER-JOIN