MySQL veritabanında JOIN işlemleri kullanarak farklı tabloların verilerini birleştirmek oldukça önemlidir INNER JOIN, iki tablodaki verilerin eşleştiği satırları getirirken, LEFT JOIN sol taraftaki tablodaki tüm satırları getirirken sağdaki tablodaki eşleşenleri getirir RIGHT JOIN ise sağ taraftaki tablodaki tüm satırları getirirken, sol taraftaki tablodaki eşleşenleri getirir FULL OUTER JOIN, iki tablodaki tüm satırları getirirken CROSS JOIN ise tabloları birleştirme yapmadan her satırın her satırla eşleşmesini sağlar Hangi JOIN yönteminin kullanılacağı, veritabanı yöneticileri için önemlidir Bu nedenle, en uygun yöntemi seçmek için her bir yöntemi dikkatle inceleyerek karar vermek önerilir

MySQL veritabanı, birçok farklı işlemi yapabilme imkanı sunar. Bu makalede, JOIN işlemlerinin en etkili yöntemlerine odaklanacağız. JOIN, birden çok tabloyu birleştirme işlemidir ve verileri aynı anda görüntülemek için kullanılır.
INNER JOIN, iki tablodaki verilerin eşleştiği satırları getirir. LEFT JOIN, sol taraftaki tablodaki tüm satırları getirirken, sağdaki tablodaki eşleşenleri getirir. Bu işlem sonucunda sol tablo ile eşleşmeyen satırlar NULL değeri alır. RIGHT JOIN ise sağ taraftaki tablodaki tüm satırları getirirken, sol taraftaki tablodaki eşleşenleri getirir.
FULL OUTER JOIN, iki tablodaki tüm satırları getirir. Eşleşmeyen satırlar NULL değeri alır. CROSS JOIN ise tablolar arasında birleştirme yapmadan her satırın her satırla eşleşmesini sağlar.
Tabloların birleştirilmesi ve JOIN işlemlerinin etkili kullanımı, veri analizi ve yüksek düzeyde veritabanı etkinliği için oldukça önemlidir. Bu JOIN yöntemlerinden hangisinin kullanılacağı hakkında karar vermek, veri tabanı yöneticileri için önemli bir karar olabilir. Bu nedenle, ihtiyacınıza en uygun yöntemi seçmek konusunda, her bir yöntemi dikkatle inceleyerek karar vermeniz önerilir.
INNER JOIN
MySQL veritabanlarında JOIN işlemleri, verilerin birleştirilmesi için kullanılan önemli işlemlerdir. INNER JOIN, iki tablodaki verilerin eşleştiği satırları getirir. Bu işlemin en önemli özelliği, her iki tabloya ait olan verileri birleştirmesi ve eşleşen satırları getirmesi şeklindedir.
Başka bir deyişle, INNER JOIN ile iki tablonun belirli sütunlarında ortak bulunan değerleri alıyor ve bu satırları birleştirerek yeni bir tablo oluşturuyoruz. Bu şekilde, birden fazla tablodan gelen verileri kolayca birleştirerek işlemlerimizi hızlı ve etkili bir şekilde yapabiliriz.
INNER JOIN kullanımı sırasında dikkat edilmesi gereken önemli bir husus, eşleşmeyen satırların alınmamasıdır. Bu nedenle, yalnızca iki tabloya ait olan ve eşleşen satırları getirerek birleştireceğimiz verileri kullanmamız önerilir.
Özetle, INNER JOIN işlemi iki tablonun belirli sütunlarında birbirine eşleşen verileri alarak yeni bir tablo oluşturur. Bu işlem, verileri hızlı ve etkili bir şekilde birleştirmemizi sağlar ve çoklu tablo işlemlerinde sıklıkla kullanılır.
LEFT JOIN
MySQL veritabanında LEFT JOIN, sol taraftaki tablodaki tüm satırları getirir ve sağdaki tablodaki eşleşenleri getirir. Sol taraftaki tabloda eşleşmeyen verilerin null değerini alır. Bu JOIN çeşidi, verilen iki tablo arasında bir bağlantı olduğunda kullanışlıdır. Sol taraftaki tablo, JOIN işlemi sırasına göre ilk tablodur.
LEFT JOIN, INNER JOIN ile karşılaştırıldığında, eşleşmeyen verileri de getirir. Bu özellik, gereksiz verilerin var olduğu işlemlerde kullanışlıdır. LEFT JOIN'da olduğu gibi, doğru sonuçları elde etmek için verilerin sırası önemlidir.
Aşağıdaki tablo, sol taraftaki tablo olan "Orders" ve sağ taraftaki tablo olan "Customers" arasındaki LEFT JOIN işlemini göstermektedir.
OrderID | CustomerID | OrderDate | CustomerName |
---|---|---|---|
1 | 1 | 2019-01-01 | John |
2 | 2 | 2019-01-02 | Mike |
3 | 3 | 2019-01-03 | Sarah |
4 | NULL | 2019-01-04 | NULL |
5 | NULL | 2019-01-05 | NULL |
Yukarıdaki tablo, Orders tablosunda 5 satır olduğunu ve 3 satırın Customers tablosunda eşleştiğini gösteriyor. 4. ve 5. satırda, sol taraftaki tablo olan Orders'ta eşleşmeyen veriler null olarak gösteriliyor.
LEFT OUTER JOIN
LEFT OUTER JOIN veya LEFT JOIN, INNER JOIN'un bir alternatifidir. Bu JOIN türü, sol taraftaki tablodaki tüm satırları getirir ve sağ taraftaki tablodaki eşleşen satırları getirir. Ancak, sağ tablodaki eşleşmeyen satırlar, NULL değerine sahip olacak şekilde dahil edilecektir.
Bir örnek vermek gerekirse, bir şirketin çalışanları ve projeleri tablosu düşünelim. İşçiler tablosunda, çalışan numarası, işçi adı ve bölüm adı sütunları bulunur. Projeler tablosunda, proje numarası, proje adı ve proje lideri sütunları bulunur. İki tabloyu birleştirirseniz, her işçinin bağlı olduğu projelerle birleştiği bir sonuç kümesi elde edersiniz.
İşçiler | EmpID | İsim | Bölüm Adı |
---|---|---|---|
1 | Ahmet | Muhasebe | |
2 | Mehmet | İK | |
3 | Ali | Pazarlama |
Projeler | ProjID | Proje Adı | Proje Lideri |
---|---|---|---|
1 | Proje 1 | Ahmet | |
2 | Proje 2 | Ayşe | |
3 | Proje 3 | Ali |
LEFT OUTER JOIN kullanarak, yukarıdaki örnekteki gibi iki tabloyu birleştirirseniz, her işçinin bağlı olduğu projelerle birleşmeyi elde edersiniz. Ancak, Ali, İşçiler tablosunda çalışmasına rağmen herhangi bir projeyle ilişkilendirilmedi. LEFT OUTER JOIN kullanarak, Ali'nin NULL değerli bir hücresi olan bir sonuç kümesi elde edersiniz.
İşçiler ve Projeler Tablosu | EmpID | İsim | Bölüm Adı | ProjID | Proje Adı | Proje Lideri |
---|---|---|---|---|---|---|
1 | Ahmet | Muhasebe | Proje 1 | Proje 1 | Ahmet | |
2 | Mehmet | İK | NULL | NULL | NULL | |
3 | Ali | Pazarlama | NULL | NULL | NULL |
LEFT OUTER JOIN, bazı durumlarda, diğer JOIN türlerine kıyasla daha düşük bir performansa sahip olabilir. Ancak, sağ tablodaki eşleşmeyen satırların dahil edilmesi gerektiğinde veya bir tablonun tüm satırlarını görüntülemek istediğinizde, bu JOIN türü çok yararlı olabilir.
LEFT JOIN vs LEFT OUTER JOIN
MySQL veritabanı işlemlerinde JOIN yöntemleri arasındaki en çok karıştırılan konulardan biri, LEFT JOIN ve LEFT OUTER JOIN arasındaki farktır. LEFT JOIN sadece eşleşen satırları getirirken, LEFT OUTER JOIN sol tablodaki tüm satırları getirir ve eşleşmeyen sağ tablo satırları NULL değeri ile doldurulur.
Bu, veritabanları arasında ilişkili verilerin ortaya çıkarılması için oldukça önemlidir. LEFT JOIN kullanıldığında, sağ taraftaki satırlara ait verileri kaybetme riski vardır. Ancak LEFT OUTER JOIN kullanıldığında, hem sol hem de sağ tablodaki tüm satırlar, eşleşen yada eşleşmeyen satırlar, sonuçta alınır.
Bazı durumlarda, LEFT OUTER JOIN kullanımı önerilir. Örneğin, bir müşterinin sipariş verip vermeyeceği, ancak tüm müşteri listesine dahil edilmek isteniyorsa. Bu durumda, müşteri doğrudan LEFT OUTER JOIN ile siparişlerle birleştirilebilir.
LEFT JOIN | LEFT OUTER JOIN |
---|---|
Eşleşen Veriler | Eşleşen Veriler |
Sol Tablo'da Eşleşmeyen Veriler | Sol Tablo'da Eşleşmeyen Veriler |
- | Sağ Tablo'da Eşleşmeyen Veriler (NULL) |
Şeklindeki tablo, LEFT JOIN ve LEFT OUTER JOIN arasındaki farkı daha iyi anlamak için kullanılabilir. Tek bir tablo kullanılırken bu fark daha net görülmese de, birleştirilmiş tabloların sonuçları farklıdır.
LEFT JOIN İle Sol Tabloyla Eşleşmeyen Verileri Getirme
LEFT JOIN işlemi sırasında sol tabloyla eşleşmeyen verileri getirmek için LEFT JOIN kullanılır. Sol tablodaki verilerin tamamı getirilir, sağdaki tablodaki eşleşen veriler de getirilir. Ancak sağ taraftaki tablodaki eşleşmeyen veriler NULL olarak görüntülenir.
Bu durumda, WHERE sorgusu kullanılarak sol taraftaki tablodaki eşleşmeyen veriler getirilebilir. Örneğin, "LEFT JOIN table_name ON table1.id=table2.id WHERE table2.id IS NULL" sorgusu kullanılarak sol tabloyla eşleşmeyen veriler getirilebilir.
table1 | table2 |
---|---|
1 | 1 |
2 | 2 |
3 | NULL |
4 | 4 |
- Yukarıdaki örnekte, sol taraftaki tabloya ait dört adet veri yer almaktadır. Sağ taraftaki tabloya ait sadece üç adet veri vardır ve üçüncü veri NULL değerine sahiptir.
- Bu durumda, "LEFT JOIN table_name ON table1.id=table2.id WHERE table2.id IS NULL" sorgusu kullanılarak sol tabloyla eşleşmeyen veri, 3 değeri olacaktır.
Bu örnekte olduğu gibi, sol taraftaki tabloyla eşleşmeyen verilerin getirilmesi için WHERE sorgusu kullanmak oldukça pratiktir. Bu işlem, veri tabanı işlemleri sırasında oldukça yaygın olarak kullanılmaktadır.
RIGHT JOIN
MySQL'de JOIN işlemleri, bir ya da daha fazla tablodaki verileri birleştirerek birden fazla satırın bir arada görüntülenmesine izin verir. RIGHT JOIN, sağ tablodaki tüm satırları ve sol tablodaki eşleşen verileri getirir. Böylece, sağ tablodaki tüm satırları alabilirsiniz, ancak sol taraftaki tablo ile ilgili verileri yalnızca eşleşen verilerle birleştirirsiniz.
Örneğin, bir ülkedeki tüm müşterilerin listesini içeren bir tablomuz var ve müşterilerin siparişlerini tutan başka bir tablomuz var. RIGHT JOIN kullanarak, ülke adı ve müşteri adı eşleştirebilirsiniz. Sağ tarafı (siparişler tablosu) tüm müşterileri içerse de, LEFT JOIN'da olduğu gibi sol taraftaki tablodaki eşleşen verilere dayanan sonuçlar alırsınız.
Aşağıda, RIGHT JOIN için örnek bir tablo bulunmaktadır.
Müşteri Adı | Ülke | Sipariş No |
---|---|---|
Ahmet | Türkiye | 001 |
Mehmet | Almanya | 002 |
Ayşe | Fransa | 003 |
Nur | Türkiye | 004 |
Bu tabloyu RIGHT JOIN kullanarak siparişler tablosu ile birleştirdiğimizde, aşağıdaki gibi yeni bir sonuç elde ederiz:
Sipariş No | Müşteri Adı | Ülke |
---|---|---|
001 | Ahmet | Türkiye |
002 | Mehmet | Almanya |
003 | Ayşe | Fransa |
NULL | Pınar | Türkiye |
Sonuçta, RIGHT JOIN iki tablodaki eşleşen ama sol tablodaki verileri yalnızca eşleşen verilerle birleştirirken sağ taraftaki tablodaki tüm satırları getirir. Bu JOIN türü, veritabanı yapılandırmanıza bağlı olarak farklı durumlarda kullanışlı olabilir.
FULL OUTER JOIN
FULL OUTER JOIN, adından da anlaşılacağı gibi iki tablonun tüm satırlarını getirir. Bu işlem, INNER JOIN, LEFT JOIN ve RIGHT JOIN işlemlerinde eşleşmeyen satırları NULL değeri alması ile benzerlik göstermektedir.
Örneğin, orders ve customers tablolarını birleştirdiğimizi varsayalım. Orders tablosunda sipariş numaraları, müşteri ID'leri ve sipariş tarihleri bulunurken, Customers tablosunda müşteri ID'leri, adı, soyadı ve adres bilgileri yer almaktadır. FULL OUTER JOIN kullanarak bu iki tabloyu birleştirirsek, her iki tablodaki tüm satırları getiririz. Ancak, eşleşmeyen satırlar NULL değeri alacaktır.
orders | customers | ||||
---|---|---|---|---|---|
101 | 1 | 2021-06-01 | John | Doe | 123 Main St. |
102 | 2 | 2021-06-02 | Jane | Smith | 456 Elm St. |
NULL | 3 | NULL | Bob | Jones | 789 Maple Ave. |
Yukarıdaki tabloda, 101 ve 102 sipariş numaralı satırlar her iki tabloda da bulunduğu için tam eşleşme sağlandı. Ancak 3 numaralı müşteri ID'sine sahip bir müşteri, orders tablosunda sipariş vermediği için orders tablosunda NULL olarak görüntülenir ve customers tablosuna bağlı olarak müşterinin adı, soyadı ve adres bilgileri verilir.
FULL OUTER JOIN işleminin kullanımı duruma göre farklılık gösterebilir. Çok büyük veritabanlarında, bu işlemle birleştirilen iki tablo arasındaki ilişkiyi iyi anlamak önemlidir. Yetersiz bir ilişki, birleştirme işleminin yanlış sonuçlar vermesine neden olabilir. Ancak doğru bir şekilde kullanıldığında, FULL OUTER JOIN, iki tablo arasındaki tüm verilerin görüntülenmesine izin verir ve bu şekilde verileri daha kolay anlamaya yardımcı olur.
CROSS JOIN
CROSS JOIN işlemi, birleştirme yapmadan iki tablo arasında tüm kombinasyonları getirir. Yani, bir tablonun her satırının diğer tablodaki her satırla eşleştirilmesini sağlar. Bu işlem sayesinde, iki tablo arasındaki tüm olası kombinasyonları görebiliriz.
Bir örnek üzerinden CROSS JOIN işlemini açıklayalım. Diyelim ki bir tabloda müşterilerin isimleri ve adresleri var, diğer tabloda da siparişlerin ürünleri ve miktarları yer alıyor. CROSS JOIN işlemini kullanarak her müşterinin her ürünle olan kombinasyonunu elde edebiliriz. Bu sayede, hangi müşterinin hangi üründen ne kadar sipariş verdiğini kolaylıkla görüntüleyebiliriz.
CROSS JOIN işlemi, bir tablodaki satır sayısı ile diğer tablodaki satır sayısının çarpımı kadar kayıt döndürür. Dolayısıyla, büyük veri setleri üzerinde CROSS JOIN işlemini yapmadan önce dikkatli bir şekilde düşünmek gerekir. Her zaman gerekli olmayabilir ve gereksiz yere kaynak tüketebilir.