MySQL'de JOIN yöntemleri kullanarak birden fazla tablodaki verileri birleştirebilirsiniz INNER JOIN, yalnızca eşleşen satırları döndürürken LEFT JOIN, ilk tablonun tüm satırlarını ve ikinci tablodaki eşleşen satırları döndürür LEFT OUTER JOIN, ikinci tabloda eşleşen satırlar yoksa bile ilk tablonun tüm satırlarını döndürür JOIN yöntemlerinin yanı sıra LEFT JOIN ve WHERE koşullarını birleştirerek birçok tabloya erişilebilir Bu yöntemler, veritabanı yöneticilerine verileri daha hızlı ve doğru bir şekilde bulma imkanı sunar

Bir veritabanında birden fazla tablo kullanıyorsanız, bu tablolardaki verileri birleştirmek önemlidir. MySQL'de JOIN yöntemleri, farklı tablolardaki verileri birleştirmenin en yaygın ve etkili yollarını sunar. Bu makalede, farklı JOIN yöntemlerini ve nasıl kullanacaklarınızı öğreneceksiniz.
MySQL'de JOIN yöntemleri kullanarak verileri birleştirmek için öncelikle yalnızca eşleşen satırları döndüren INNER JOIN yöntemini öğrenebilirsiniz. LEFT JOIN, ikinci tablodaki tüm satırları ve eşleşen satırları döndürür. RIGHT JOIN ise ilk tablodaki tüm satırları ve eşleşen satırları ikinci tablodan döndürür. FULL OUTER JOIN, tablolardaki tüm satırları ve eşleşen satırları döndürür. Son olarak, CROSS JOIN, tüm tablodaki satırları diğer tüm satırlarla birleştirir.
Bu yöntemlerin yanı sıra, LEFT JOIN ve WHERE koşullarını birleştirerek birçok tabloya kolayca erişebilirsiniz. LEFT OUTER JOIN, ikinci tabloda eşleşen satırlar yoksa bile ilk tablonun tüm satırlarını döndürür. RIGHT OUTER JOIN, aynı şekilde, ilk tabloda eşleşen satırlar yoksa bile ikinci tablonun tüm satırlarını döndürür.
Tabloları birleştirirken JOIN yöntemlerini kullanmak, veritabanı yöneticilerine büyük kolaylık sağlar. Bu yöntemler ile tablolar arasındaki ilişkileri daha net bir şekilde görebilir, verileri daha hızlı ve doğru bir şekilde bulabilirsiniz.
INNER JOIN
MySQL veritabanlarında JOIN işlemi, farklı tablolardaki verileri birleştirmek için sıklıkla kullanılır. INNER JOIN yöntemi de bu işlem için en sık kullanılan yöntemlerden biridir.
INNER JOIN, yalnızca tablolarda eşleşen satırları döndürür. Bu yöntem, birden fazla tablo arasında birleştirme yaparken yararlıdır. Aşağıdaki örnek kullanım INNER JOIN yönteminin anlaşılmasına yardımcı olacaktır:
students | courses |
---|---|
Ali | Math |
Ahmet | Science |
Özge | Math |
Örnek olarak, yukarıdaki "students" ve "courses" tablolarının INNER JOIN ile birleştirilmesini ele alalım:
SELECT students.name, courses.course_name
FROM students
INNER JOIN courses
ON students.course_id = courses.id;
Bu sorgu, "students" tablosundaki "Math" kursuna kayıtlı olan Özge ve Ali'yi döndürür. INNER JOIN, iki tablonun da eşleşen değerlerini birleştirerek döndürdüğü için "Science" kursu olan Ahmet görünmemektedir.
LEFT JOIN
MySQL'de JOIN yöntemleri arasında en sık kullanılan yöntemlerden biri olan LEFT JOIN, iki tablo arasındaki ilişkileri dahil etmeden birleştirme yapar. İlk tablodaki tüm satırları ve ikinci tablodan eşleşen satırları döndürür. Eşleşme olmaması durumunda ikinci tablonun değeri NULL olarak kalır. Bu yöntemi kullanarak verilerdeki doğru sonuçları elde etmek mümkündür.
Bir örnekle açıklamak gerekirse, bir ürün tablosu ve bir sipariş tablosu arasında bir LEFT JOIN işlemi yapmak istediğimize varsayalım. Ürün tablosunda, ürün ID, adı ve fiyatı yer alırken, sipariş tablosunda sipariş ID, ürün ID ve ürün adetleri yer alır. Biz, ürünlerden bazıları için henüz sipariş girilmemiş olsa bile tüm ürünleri görmek istiyoruz. Bu durumda, ürün tablosunda bir LEFT JOIN işlemi yaparak tüm ürünleri ve varsa siparişleri birleştirebiliriz.
Ürün ID | Ürün Adı | Fiyat | Adet |
---|---|---|---|
1 | Telefon | 2000 TL | 12 |
2 | Laptop | 5000 TL | NULL |
3 | Tablet | 3000 TL | 9 |
Yukarıdaki örnekte, ikinci satırda laptop için sipariş olmadığı için adet değeri NULL olarak görülmektedir. LEFT JOIN kullanarak, eksik verileri dahi dahil ederek birleştirmek mümkündür.
LEFT OUTER JOIN
LEFT OUTER JOIN, LEFT JOIN yöntemiyle oldukça benzerdir ancak ikinci tabloda eşleşen satırlar yoksa bile ilk tablodaki tüm satırlar döndürülür. Eğer her iki tabloda da eşleşen bir sütun yoksa, LEFT OUTER JOIN kullanıldığında null (boş) değerler döndürülür.
Bu yöntem, ikinci tabloda olmayan satırları da dahil etmek istediğiniz zaman kullanışlı olabilir. Örneğin, bir müşteri tablosu ve bir sipariş tablosu düşünelim. Müşteri tablosunda bulunan her müşteriye ait siparişleri görmek istediğimizde LEFT OUTER JOIN kullanabiliriz. Bu sayede, müşteri tablosunda olan ancak sipariş tablosunda olmayan müşterileri de listelemiş olacağız.
Müşteri Adı | Sipariş Numarası | Sipariş Tarihi |
---|---|---|
Ali | 1024 | 12.05.2021 |
Ayşe | 1025 | 15.05.2021 |
Mehmet | null | null |
Yasin | 1027 | 18.05.2021 |
Yukarıdaki örnek tabloda görüldüğü gibi, Mehmet müşteri tablosunda yer almasına rağmen sipariş tablosunda satırı olmadığı için LEFT OUTER JOIN kullanıldığında null değerler döndürülmüştür. Bu sayede, hem müşterileri hem de müşterilere ait siparişleri tabloda görebiliriz.
LEFT JOIN ve WHERE Koşulları Kullanımı
MySQL veritabanında LEFT JOIN ve WHERE koşulları birçok tablo ile birleştirme yapmanızı sağlar. Bu yöntem, iki veya daha fazla tablodaki belirli sütunları birleştirmek için kullanılır. Örneğin, bir kitap satış web sitesinde, bir tablo müşteri bilgilerini depolarken diğer tablo satın alma bilgilerini depolayabilir.
Birleştirme yapmak için, birinci tabloyu LEFT JOIN kullanarak ikinci tabloya ekleyeceğiz. Ve sonra WHERE koşullarını kullanarak sorguyu filtreleyeceğiz. Örneğin, müşteri tablosundaki özenli müşterileri seçmek için, LEFT JOIN sorgusu şöyle olacaktır:
SELECT | müşteriler.adı | satınalmalar.tarih |
---|---|---|
FROM | müşteriler | LEFT JOIN satınalmalar |
ON | müşteriler.id = satınalmalar.müşteri_id | |
WHERE | satınalmalar.tarih >= '2021-01-01' |
Bu sorgu, müşteri adı ve satın alma tarihi içeren tüm satın almalar tablosundaki satırları ve müşteri tablosundaki eşleşen müşterileri döndürür. WHERE koşulu ise 2021 yılından itibaren yapılan satın almaları filtreler.
Bu örnek, LEFT JOIN ve WHERE koşullarının nasıl birleştirileceğine ve filtrelenmesine ilişkindir. Diğer JOIN yöntemleri ile birleştirilmiş birçok tablonun bu tekniklerle nasıl birleştirileceği üzerine denemeler yapabilirsiniz.
RIGHT JOIN
MySQL veritabanında JOIN yöntemlerinden biri olan RIGHT JOIN, ikinci tablodaki tüm satırları ve eşleşen satırları ilk tablodan döndürür. Bu yöntemle, ikinci tablodaki verilerle eşleşen ve ilk tabloda yer alan verilerin birleştirilmesi mümkündür.
RIGHT JOIN kullanarak, örneğin bir ders programı oluşturmak istediğinizde, öğrencilerin bulunduğu bir tabloyu birleştirmek, ancak tüm öğrencileri değil sadece dersi olanları listelemek mümkündür. RIGHT JOIN, öğrenciler tablosundaki tüm öğrencileri ve dersi olan öğrencileri döndürür. Eğer dersi olan öğrenci yoksa bile, ikinci tablonun tüm satırlarını döndürür.
Bir RIGHT JOIN sorgusu, İLK TABLO adlı tablodaki tüm kayıtları ve İKİNCİ TABLO adlı tabloda eşleşen kayıtları döndürür. Eğer eşleşen bir kayıt yoksa bile, İKİNCİ TABLO adlı tablodaki tüm kayıtları döndürür. RIGHT JOIN, LEFT JOIN ile tam olarak zıt bir davranış sergiler. RIGHT JOIN, eşleşmeyen kayıtları ve İKİNCİ TABLO adlı tablodaki tüm verileri döndürürken, LEFT JOIN, eşleşmeyen kayıtları ve İLK TABLO adlı tablodaki tüm verileri döndürür.
RIGHT OUTER JOIN
RIGHT OUTER JOIN'i kullanmanın amacı, ikinci tabloda eşleşen satırlar yoksa bile ilk tablodaki tüm satırları ve ikinci tablodaki tüm satırları döndürmektir. RIGHT OUTER JOIN'in sağladığı avantaj, veritabanında olmayan verileri de birleştirebilmesidir.
RIGHT OUTER JOIN, RIGHT JOIN ile aynıdır, ancak RIGHT OUTER JOIN kullanıldığında ilk tabloda eşleşen satırlar yoksa bile ikinci tablonun tüm satırlarını döndürür. Bu nedenle, RIGHT OUTER JOIN kullanmak, veritabanında olmayan verileri bile birleştirebilmeniz için yararlıdır.
Bir örnek vermek gerekirse, bir film kütüphanesi veritabanında iki tablo var: filmler ve kategoriler. Bazı filmler henüz kategorize edilmemiş olabilir. RIGHT OUTER JOIN kullanarak iki tabloyu birleştirebilirsiniz. Bu şekilde kategorize edilmemiş filmler de dahil olmak üzere tüm filmleri görebilirsiniz.
Aşağıdaki örnek tablo, RIGHT OUTER JOIN'in nasıl çalıştığını göstermektedir:
Film Adı | Kategori |
---|---|
Matrix | Bilim Kurgu |
Dark Knight | Aksiyon |
Scarface | Gangster |
Godfather | Gangster |
Donnie Brasco | NULL |
John Wick | Aksiyon |
Yukarıdaki örnekte, Donnie Brasco filmi henüz kategorize edilmemiş, RIGHT OUTER JOIN kullanarak tüm filmleri göstermek istediğinizde bu film de dahil edilir.
FULL OUTER JOIN
FULL OUTER JOIN(SQL tampon bellekteki verileri işleme alma dili) de tablolardaki tüm satırları ve eşleşen satırları döndürür. FULL OUTER JOIN, LEFT OUTER JOIN ve RIGHT OUTER JOIN yöntemlerinin birleşimidir. FULL OUTER JOIN kullanılırken, sütunlar arasında eşleşme olmadığında, bir tarafta NULL değeri döndürülmektedir. Bu sayede FULL OUTER JOIN, kesişen veriler dışında, birleştirilecek verilerin tamamını da gösterilmiş olur.
Örneğin, bir müşteri listesi ve siparişler tablosuna sahip olduğunuzu varsayalım. İki tablo arasında birleştirme işlemi yapmak istediğinizde FULL OUTER JOIN yöntemini kullanabilirsiniz. Böylece müşterilerin tüm bilgileri ve herhangi bir siparişleri varsa siparişlerinin ayrıntıları da dahil edilmiş olur.
Aşağıdaki örnek, müşteri tablosunu (customers) ve siparişler tablosunu (orders) birleştiren bir FULL OUTER JOIN örneğidir.
CustomerID | CustomerName | OrderID | OrderDate |
---|---|---|---|
1 | Ali | 1 | 01/01/2021 |
2 | Ayşe | 2 | 02/01/2021 |
NULL | NULL | 3 | 03/01/2021 |
Burada Ali ve Ayşe müşterileri siparişleri olduğundan hem müşterilerin hem de siparişlerin ayrıntıları listeleniyor. Ancak sipariş yapmayan müşteriler de varsa, bu durumda NULL değerleri tabloda gözükür.
CROSS JOIN
CROSS JOIN, MySQL'de tablolardaki verileri birleştirmenin bir diğer yöntemidir. Bu yöntem, bir tablodaki her satırı diğer tüm satırlarla birleştirir.
Bir örnek vermek gerekirse, bir tabloda bulunan müşterileri ve diğer tabloda bulunan ürünleri birleştirmek istediğinizde, CROSS JOIN yöntemini kullanabilirsiniz. Bu yöntem, her müşteriyi her ürünle birleştirerek, tüm kombinasyonları döndürür.
Bu yöntemi kullanırken, çok dikkatli olmanız gerekir çünkü veri bütünlüğünü korumak, doğru filtreleme yapmak ve verimli bir sorgulama yürütmek oldukça zordur. CROSS JOIN, büyük veri tabloları için önerilmeyebilir çünkü performans sorunlarına neden olabilir.
Aşağıda, basit bir örnek tablo kullanarak CROSS JOIN yönteminin nasıl kullanılacağı gösterilmiştir:
Müşteri | Ürün |
---|---|
Mehmet | Kalem |
Ahmet | Kalem |
Mehmet | Defter |
Ahmet | Defter |
Yukarıdaki tabloyu CROSS JOIN yöntemiyle birleştirdiğimizde tüm müşterileri ve tüm ürünleri içeren bir tablo elde ederiz:
Müşteri | Ürün |
---|---|
Mehmet | Kalem |
Ahmet | Kalem |
Mehmet | Defter |
Ahmet | Defter |
Mehmet | Silgi |
Ahmet | Silgi |
CROSS JOIN yönteminin veritabanı tasarımı ve kontrolü gerektirdiğinden, çoğu zaman diğer birleştirme yöntemleri tercih edilir. Ancak, doğru şekilde kullanıldığında CROSS JOIN, verileri birleştirirken önemli bir rol oynar.