SQL JOIN ve farklı JOIN türleri

SQL JOIN nedir ve farklı türleri nelerdir?

Çözüm

SQL JOIN` nedir?

SQL JOIN iki veya daha fazla veritabanı tablosundan veri almak için kullanılan bir yöntemdir.

Farklı SQL JOINler nelerdir?

Toplam beş adet JOIN vardır. Bunlar:

  1. JOIN or INNER JOIN
  2. OUTER JOIN

     2.1 LEFT OUTER JOIN or LEFT JOIN
     2.2 RIGHT OUTER JOIN or RIGHT JOIN
     2.3 FULL OUTER JOIN or FULL JOIN

  3. NATURAL JOIN
  4. CROSS JOIN
  5. SELF JOIN
  1. JOIN veya INNER JOIN:

Bu tür bir JOINde, 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 bir JOINin bir INNER JOIN olduğunu unutmayın. Başka bir deyişle, JOIN a INNER JOIN için sözdizimsel şeker (bkz: https://stackoverflow.com/questions/565620/difference-between-join-and-inner-join).

  1. OUTER JOIN:

OUTER JOIN alır

Ya 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 yoksa NULL değerlerini döndürür.

2.3 FULL OUTER JOIN veya FULL JOIN

Bu JOIN, LEFT OUTER JOIN ve RIGHT 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ığında NULL 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.

Note that `OUTER JOIN` is a loosened form of `INNER JOIN`.
  1. DOĞAL BİRLEŞİM:

Bu iki koşula dayanmaktadır:

  1. JOIN eşitlik için aynı isme sahip tüm sütunlarda yapılır.
  2. Sonuçtan yinelenen sütunları kaldırır.

Bu daha çok teorik bir konu gibi görünmektedir ve sonuç olarak (muhtemelen) çoğu DBMS Bunu destekleme zahmetine bile girmeyin.

  1. 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).

  1. SELF JOIN:

Bu JOINin farklı bir formu değildir, daha ziyade bir tablonun kendisine JOINidir (INNER, OUTER, vb.).

Operatörlere dayalı JOIN'ler

Bir JOIN cümlesi için kullanılan işlece bağlı olarak, iki tür JOIN olabilir. Bunlar

  1. Equi JOIN

  2. Theta JOIN

  3. 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 JOINbirEQUI JOIN`dir.

  1. Theta JOIN:

Bu EQUI JOIN ile aynıdır ancak >, = vb. gibi diğer tüm operatörlere izin verir.

Birçok kişi hem EQUI JOIN hem de Theta JOIN'i INNER, OUTER ile benzer görür vb GİRİŞ. Ama ben bunun bir hata olduğuna ve fikirler belirsiz. Çünkü INNER JOIN, OUTER JOIN vb. tüm bağlantılar tabloları ve verilerini içerirken, EQUI JOIN ve THETA JOIN sadece ilkinde kullandığımız operatörlerle bağlantılıdır.

Yine, NATURAL JOINi bir tür NATURAL JOIN olarak gören birçok kişi vardır. "peculiar" EQUI JOIN. Aslında, bu doğrudur, çünkü ilk NATURAL JOIN için bahsettiğim koşul. Ancak, bunu yapmak zorunda değiliz bunu yalnızca NATURAL JOIN ile sınırlandırın. INNER JOINs,OUTER JOINs vb. de birEQUI JOIN` olabilir.

Yorumlar (3)

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.

  1. 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.

  2. 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.

  3. 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ı

SELECT  *
FROM Table1 A 
 INNER JOIN Table2 B ON A. =B.;

1.2: INNER-JOIN: Doğal-JOIN uygulaması

Select A.*, B.Col1, B.Col2          --But no B.ForeignKeyColumn in Select
 FROM Table1 A
 INNER JOIN Table2 B On A.Pk = B.Fk;

1.3: NON-Equi-join uygulaması ile INNER-JOIN


Select *
 FROM Table1 A INNER JOIN Table2 B On A.Pk 
Yorumlar (2)