INNER JOIN, LEFT JOIN, RIGHT JOIN ve FULL JOIN arasındaki fark nedir?

INNER JOIN,LEFT JOIN,RIGHT JOINveFULL JOIN` arasındaki fark nedir? içinde MySQL?

Çözüm

The Code Project'teki** bu orijinal makaleyi okumak size çok yardımcı olacaktır: SQL Birleşimlerinin Görsel Gösterimi.

Ayrıca bu gönderiyi de kontrol edin: SQL SERVER - Daha İyi Performans - LEFT JOIN mi NOT IN mi?.

Orijinalini şurada bulabilirsiniz: MySQL'de JOIN ve OUTER JOIN arasındaki fark.

Yorumlar (34)

INNER JOIN verilen ON cümlesine göre her iki tablo arasında ortak olan tüm kayıtları alır.

SOL JOIN, SOL bağlantılı tablodaki tüm kayıtları alır, ancak SAĞ tablodan bazı sütunları seçtiyseniz, ilgili kayıt yoksa, bu sütunlar NULL içerecektir.

RIGHT JOIN yukarıdaki gibidir ancak RIGHT tablosundaki tüm kayıtları alır.

FULL JOIN her iki tablodaki tüm kayıtları alır ve ilgili kayıtların karşı tabloda bulunmadığı sütunlara NULL koyar.

Yorumlar (6)

İki veya daha fazla tablodan satırları birleştirmek için bir SQL JOIN cümlesi kullanılır, aralarındaki ortak bir alana dayanmaktadır.

SQL'de farklı birleştirme türleri mevcuttur:

INNER JOIN: her iki tabloda da bir eşleşme olduğunda satırları döndürür.

SOL JOIN: sağ tabloda eşleşme olmasa bile sol tablodaki tüm satırları döndürür.

RIGHT JOIN: sol tabloda eşleşme olmasa bile sağ tablodaki tüm satırları döndürür.

TAM KATILIM: Hem sol hem de sağ dış birleşimlerin sonuçlarını birleştirir.

Birleştirilmiş tablo her iki tablodaki tüm kayıtları içerecek ve her iki taraftaki eksik eşleşmeler için NULL'leri dolduracaktır.

SELF JOIN: SQL deyiminde en az bir tabloyu geçici olarak yeniden adlandırarak, tablo iki tabloymuş gibi bir tabloyu kendisine birleştirmek için kullanılır.

CARTESIAN JOIN: iki veya daha fazla birleştirilmiş tablodaki kayıt kümelerinin Kartezyen çarpımını döndürür.

İlk dört birleşimin her birini ayrıntılı olarak ele alabiliriz:

Aşağıdaki değerlere sahip iki tablomuz var.

TabloA

id  firstName                  lastName
.......................................
1   arun                        prasanth                 
2   ann                         antony                   
3   sruthy                      abc                      
6   new                         abc                                           

TabloB

id2 age Place
................
1   24  kerala
2   24  usa
3   25  ekm
5   24  chennai

....................................................................

YENİ KATILIM

Not :iki tablonun kesişimini, yani TabloA ve TabloB'de ortak olan satırları verir

Sözdizimi

SELECT table1.column1, table2.column2...
  FROM table1
 INNER JOIN table2
    ON table1.common_field = table2.common_field;

Örnek tablomuzda uygulayın:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 INNER JOIN TableB
    ON TableA.id = TableB.id2;

Sonuç Olacak

firstName       lastName       age  Place
..............................................
arun            prasanth        24  kerala
ann             antony          24  usa
sruthy          abc             25  ekm

LEFT JOIN

Not : TabloA'daki tüm seçili satırları ve TabloB'deki tüm ortak seçili satırları verecektir.

Sözdizimi

SELECT table1.column1, table2.column2...
  FROM table1
  LEFT JOIN table2
    ON table1.common_field = table2.common_field;

Örnek tablomuzda uygulayın:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  LEFT JOIN TableB
    ON TableA.id = TableB.id2;

Sonuç

firstName                   lastName                    age   Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL

SAĞ KATILIM

Not : TabloB'deki tüm seçili satırları ve TabloA'daki tüm ortak seçili satırları verecektir.

Sözdizimi

SELECT table1.column1, table2.column2...
  FROM table1
 RIGHT JOIN table2
    ON table1.common_field = table2.common_field;

Örnek tablomuzda uygulayın:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 RIGHT JOIN TableB
    ON TableA.id = TableB.id2;

Sonuç

firstName                   lastName                    age     Place
...............................................................................
arun                        prasanth                    24     kerala
ann                         antony                      24     usa
sruthy                      abc                         25     ekm
NULL                        NULL                        24     chennai

TAM KATILIM

Not :Her iki tablodan da seçilen tüm değerleri döndürür.

Sözdizimi

SELECT table1.column1, table2.column2...
  FROM table1
  FULL JOIN table2
    ON table1.common_field = table2.common_field;

Örnek tablomuzda uygulayın:

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  FULL JOIN TableB
    ON TableA.id = TableB.id2;

Sonuç

firstName                   lastName                    age    Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL
NULL                        NULL                        24    chennai

İlginç Gerçek

INNER birleştirmeler için sıra önemli değildir

(SOL, SAĞ veya TAM) DIŞ birleştirmeler için sıra önemlidir

Bu Link'i kontrol etmeniz daha iyi olacaktır, size birleştirme emri hakkında ilginç ayrıntılar verecektir

Yorumlar (10)