Merhaba! Ben Aykhan, 1999 doğumlu bir Azerbaycanlıyım ve 2017 yılından bu yana programlamayla ilgileniyorum. Teknolojinin büyülü dünyası beni her zaman etkilemiştir ve bu merakımı kendi blogumda paylaşarak daha geniş bir kitleyle buluşturmayı amaçlıyorum.

"MySQL LEFT JOIN ve INNER JOIN Nedir? Ne İşe Yarar? Aralarındaki Farklar Nelerdir?"
MySQL'de birden fazla tabloyu ilişkilendirerek veri çekmek için JOIN işlemi kullanılır. LEFT JOIN ve INNER JOIN, en sık kullanılan iki JOIN türüdür. Bu makalede, her iki JOIN türünün ne olduğu, nasıl çalıştığı ve aralarındaki farkları detaylı bir şekilde inceleyeceğiz.
JOIN Nedir?
JOIN, MySQL'de iki veya daha fazla tabloyu birleştirerek ilişkili verileri çekmek için kullanılır. Örneğin, kullanıcılar tablosu ile siparişler tablosunu birleştirerek, her kullanıcının yaptığı siparişleri görmek isteyebiliriz. İşte bu noktada JOIN kullanılır.
INNER JOIN Nedir?
INNER JOIN, iki tablo arasında eşleşen kayıtları döndürür. Yani, bir tabloda olmayan bir veri diğer tabloda da bulunmuyorsa, sonuç kümesine dahil edilmez.
INNER JOIN Kullanımı
Aşağıdaki örnekte, users
(kullanıcılar) ve orders
(siparişler) tablolarını INNER JOIN ile birleştiriyoruz:
SELECT users.id, users.name, orders.order_id, orders.total_price
FROM users
INNER JOIN orders ON users.id = orders.user_id;
INNER JOIN Çalışma Mantığı
-
users tablosunda olup orders tablosunda eşleşen veriler alınır.
-
Eğer bir kullanıcının siparişi yoksa, o kullanıcı sonuçlara dahil edilmez.
INNER JOIN Örnek Tablo Verileri
users tablosu:
id | name |
---|---|
1 | Ali |
2 | Ayşe |
3 | Mehmet |
orders tablosu:
order_id | user_id | total_price |
101 | 1 | 150 |
102 | 2 | 200 |
INNER JOIN Sonuç Kümesi:
id | name | order_id | total_price |
1 | Ali | 101 | 150 |
2 | Ayşe | 102 | 200 |
Mehmet'in siparişi olmadığı için sonuç kümesine dahil edilmez.
LEFT JOIN Nedir?
LEFT JOIN, sol (birinci) tablodaki tüm kayıtları döndürür ve sağ (ikinci) tabloda eşleşen kayıtları getirir. Eğer sağ tablodan eşleşen bir kayıt yoksa, NULL döndürülür.
LEFT JOIN Kullanımı
SELECT users.id, users.name, orders.order_id, orders.total_price
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
LEFT JOIN Çalışma Mantığı
-
users tablosundaki tüm kullanıcılar getirilecektir.
-
Eğer kullanıcının siparişi varsa, sipariş bilgileri de getirilecektir.
-
Eğer kullanıcının siparişi yoksa, NULL değer döndürülür.
LEFT JOIN Örnek Tablo Verileri
Aynı users ve orders tablolarını kullanarak LEFT JOIN işlemini uygulayalım.
LEFT JOIN Sonuç Kümesi:
id | name | order_id | total_price |
1 | Ali | 101 | 150 |
2 | Ayşe | 102 | 200 |
3 | Mehmet | NULL | NULL |
Gördüğümüz gibi, Mehmet'in siparişi olmadığı halde kullanıcı listesinde yer almaktadır, ancak sipariş bilgileri NULL olarak dönmüştür.
INNER JOIN ve LEFT JOIN Arasındaki Farklar
Özellik | INNER JOIN | LEFT JOIN |
Kayıt Getirme | Sadece eşleşen kayıtları döndürür | Sol tablodaki tüm kayıtları döndürür, eşleşme yoksa NULL döner |
Boş Sonuç Dönme | Eşleşme yoksa sonuç kümesi boş dönebilir | Eşleşme olmasa bile sol tablo her zaman listelenir |
Performans | Daha hızlı olabilir, çünkü sadece eşleşen kayıtları döndürür | Daha fazla veri çektiği için performansı etkileyebilir |
Kullanım Senaryosu | İki tablodan yalnızca ilişkili verileri almak istediğinizde | Bir tablodaki tüm kayıtları almak ve diğer tabloda eşleşen verileri görmek istediğinizde |
INNER JOIN ve LEFT JOIN Hangi Durumlarda Kullanılır?
✅ INNER JOIN Kullanım Senaryoları:
-
İki tablo arasında bire bir ilişki var ve yalnızca ilişkili verileri almak istiyorsak.
-
Örneğin: Bir öğrencinin sadece geçmişte girdiği sınavları listelemek istiyorsak.
✅ LEFT JOIN Kullanım Senaryoları:
-
Sol tablodaki tüm verileri koruyarak, sağ tablodan eşleşenleri almak istiyorsak.
-
Örneğin: Bir öğrenci listesi oluşturuyoruz ve bazı öğrenciler henüz sınava girmemiş olabilir. Öğrencileri listeleyip sınav sonuçlarını eklemek için LEFT JOIN kullanabiliriz.
-
INNER JOIN, sadece eşleşen kayıtları getirirken, LEFT JOIN sol tablodaki tüm verileri getirir ve eşleşmeyenlere NULL değer atar.
-
INNER JOIN daha hızlı çalışabilir çünkü yalnızca ilgili kayıtları çeker, ancak LEFT JOIN daha fazla veriyi işleyeceği için performans açısından dikkat edilmelidir.
-
Kullanım senaryosuna göre hangi JOIN türünü kullanacağınıza karar vermelisiniz.
Bu bilgiler ışığında, ihtiyacınıza en uygun JOIN türünü seçerek MySQL sorgularınızı daha verimli hale getirebilirsiniz. 🚀