MySQL veri tabanında kullanılan altı farklı birleştirme yöntemi, tablolar arasındaki veri ilişkilerinin daha net bir şekilde analiz edilmesine yardımcı olur INNER JOIN, ortak verileri bulmak için sıklıkla kullanılırken, LEFT JOIN ve RIGHT JOIN, tüm verileri birleştirir FULL OUTER JOIN, tüm verileri birleştirirken, UNION ve CROSS JOIN da farklı amaçlar için kullanılır Tablolar arasındaki bu birleştirme işlemleri, verilerin düzenli ve kolay erişilebilir hale gelmesine yardımcı olur LEFT OUTER JOIN WITH NULL yöntemi ise sol taraf tablosundaki tüm verileri sağ taraf tablosundan bağımsız olarak getirir
MySQL veri tabanı birleştirme işlemleri, tablolardaki verileri düzgün şekilde kullanmak ve ihtiyacınıza göre birleştirmek için oldukça önemlidir. İki ya da daha fazla tablonun birleştirilmesi, verilerin daha net bir şekilde analiz edilmesine yardımcı olur.
MySQL'de kullanılan birleştirme işlemleri, INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, UNION ve CROSS JOIN olmak üzere altı farklı yöntemle gerçekleştirilir. INNER JOIN, tablolardaki ortak verileri bulmak için kullanılırken, LEFT JOIN ve RIGHT JOIN, bir taraftaki tüm verileri ve diğer taraftaki ortak verileri birleştirmek için tercih edilir. FULL OUTER JOIN yöntemi, tüm verileri birleştirir. Ayrıca, UNION işlemi iki ya da daha fazla tablodaki tüm satırları birleştirirken, CROSS JOIN yöntemi, tüm verilerin kartezyen çarpımını oluşturur.
INNER JOIN
MySQL veri tabanında bulunan iki ya da daha fazla tabloyu birleştirmek için INNER JOIN yöntemi kullanılır. INNER JOIN, ortak verileri bulmak için kullanılan en yaygın birleştirme yöntemidir. INNER JOIN yöntemi, şartın sağlandığı tüm kayıtların birleştirilmesini ve tabloların ortak alanlarının eşleştirilmesini sağlar.
INNER JOIN yöntemi, tablolardaki birleştirilecek alanların veri tipleri ve isimleri aynı olmalıdır. Ortak olan alana göre tablolar birleştirilir. Veritabanında arama yapılırken, farklı tablolarda benzer alanlar arasında bir eşleşme sağlanacak şekilde veri filtrelenir.
INNER JOIN yöntemi, tek bir tablodan verileri almanın ötesine geçerek iki ya da daha fazla tablodan verileri birleştirerek daha fazla bilgiye erişim sağlar. Ayrıca birleştirme yöntemi işlemlerinde, diğer birleştirme yöntemlerinde olduğu gibi kayıp veri oluşmaz.
INNER JOIN yöntemi, etkili bir veri tabanı yönetimi için kullanılan önemli bir araçtır. Tablolardaki kayıtların birleştirilmesinde kullanılan bu yöntem, verilerin daha düzenli ve kolay erişilebilir hale gelmesine yardımcı olur.
LEFT JOIN
MySQL veri tabanında tablolar arasındaki veri ilişkileri oldukça önemlidir. Sol taraf tablosundaki tüm verileri ve sağ taraf tablosundaki ortak verileri birleştirmek için kullanılan LEFT JOIN, en sık kullanılan birleştirme yöntemlerinden biridir.
LEFT JOIN işlemi, ortak verilerin yanı sıra sol taraf tablosunda yer alan tüm verilerin de görüntülenmesini sağlar. Sağ taraf tablosunda ortak veri yoksa, NULL değeri ile birleştirilir.
Sol Tablo | Ortak Veri | Sağ Tablo |
---|---|---|
1 | 4 | 4 |
2 | 5 | 5 |
3 | NULL | 6 |
Yukarıdaki örnekte sol tablonun tüm verileri LEFT JOIN ile sağ tablo ile birleştirilmiştir. Ortak veri olan 4 ve 5 satırları ortak alan olarak getirilmiştir. Ancak 3.satırdaki veri, sağ tabloda olmadığı için NULL değeri ile getirilmiştir.
LEFT JOIN ile birleştirme işlemi yapmak, veritabanındaki verilerin analizinde oldukça önemli bir yer tutar. MySQL veri tabanında farklı birleştirme yöntemleri bulunmaktadır. Bu yöntemlerin özelliklerini iyi anlamak ve veritabanlarında nasıl kullanıldığını bilmek, veri analizi sürecini hızlandıracaktır.
LEFT OUTER JOIN
=Sol taraf tablosundaki tüm verileri ve sağ taraf tablosundaki ortak verileri birleştirmek için kullanılabilir. Eğer sağ taraf tablosunda ortak veri yoksa yerine NULL değeri döndürür. Burada önemli olan nokta, sol taraf tablosunda bulunan tüm verileri çıktıda görmektir. Yani, sağ taraf tablosunda eşleşmeyen veriler de sol taraf tablosunda görüntülenir. Bu, sol taraf tablosunda olanlarla birlikte gereksinimlerin devam etmesini sağlar.
Örneğin, bir tedarikçi tablosu ile bir sipariş tablosunu birleştirelim. Sipariş tablosunda bir tedarikçi olmadığında, tedarikçi tablosunda NULL değeri yer alacaktır. Bu sayede, her siparişin tedarikçisi bulunsa da bulunmasa da siparişlerin listesi görüntülenebilir.
Tedarikçi Id | Tedarikçi Adı |
---|---|
1 | ABC Tesisat |
2 | XYZ Elektrik |
3 | DEF Boya |
Sipariş Id | Tedarikçi Id |
---|---|
1 | 1 |
2 | 2 |
3 | NULL |
Yukarıdaki örnekte, LEFT OUTER JOIN kullanarak tedarikçi tablosu ile sipariş tablosunu birleştirdiğimizde, tüm siparişlerin listesi ve her bir siparişin tedarikçisinin adı da yer alır. Ancak, 3. sipariş tedarikçi ile eşleşmediği için NULL değeri ile gösterilir.
LEFT OUTER JOIN WITH NULL
MySQL veritabanı yöntemleri arasında LEFT OUTER JOIN WITH NULL işlemi de mevcuttur. Bu yöntemde, sol taraf tablosundaki tüm veriler ve sağ taraf tablosundaki ortak olmayan veriler birleştirilerek NULL değerleri getirilir. Özellikle sağ taraf tablosunda ortak veri olmayan durumlarda kullanılabilir. Sol taraf tablosundaki tüm verilerin daha fazla bilgiye ihtiyaç duyulduğu durumlarda kullanılması avantaj sağlar.
LEFT OUTER JOIN WITH NULL, LEFT JOIN işlemi ile benzerlik gösterse de, farklılıkları da vardır. LEFT JOIN, sağ taraf tablosunda ortak olmayan verileri göstermek yerine NULL yerine diğer verileri getirir. Ancak LEFT OUTER JOIN WITH NULL yöntemi bu verileri de NULL olarak döndürür.
Bir örnek ile açıklamak gerekirse, bir şirketteki çalışanlar ve çalışanların projeleri ile ilgili iki ayrı tablo olduğunu varsayalım. LEFT OUTER JOIN WITH NULL işlemi, tüm çalışanları ve bu projelerde yer almayan çalışanların NULL değerlerini döndürerek birleştirir. Böylece şirket yöneticileri tüm çalışanları ve projede yer almayan çalışanları görebilir ve daha fazla bilgi sahibi olabilirler.
LEFT OUTER JOIN WITH NOT NULL
LEFT OUTER JOIN WITH NOT NULL, LEFT OUTER JOIN ile benzerdir ancak NULL değeri döndürmez. Sol taraftaki tablodaki tüm veriler ile sağ taraftaki tablodaki ortak olmayan veriler birleştirilir. Ortak alanlardaki verilerle birlikte NULL değil, yalnızca sağ taraf tablosundaki ortak olmayan veriler getirilir. Sol taraf tablosundaki tüm veriler korunur, ancak sağ taraf tablosundaki ortak olmayan veriler solda görünür.
Örneğin, mağaza ve ürün tablosundan oluşan bir veri tabanı düşünelim. Mağaza adları yanı sıra mağaza ürünlerinin listesi de solda yer alırken, ürün adları ve tanımları sağ tarafta yer alır. LEFT OUTER JOIN WITH NOT NULL, mağaza adlarını ve mağaza ürünlerini sağ taraftakilerle birleştirir ancak sağ tarafta eşleşmeyen veriler için NULL yerine boş değer getirir.
Mağaza Adı | Mağaza Ürünü | Ürün Adı | Tanımı |
---|---|---|---|
MağazaA | Ürün1 | Ürün Adı 1 | Tanımı 1 |
MağazaA | Ürün2 | Ürün Adı 2 | Tanımı 2 |
MağazaA | Ürün3 | ||
MağazaB | Ürün1 | Ürün Adı 1 | Tanımı 1 |
MağazaC |
Yukarıdaki örnekte, MağazaA ve MağazaB'de Ürün1, Ürün Adı 1 ve Tanımı 1 ile eşleşirken, MağazaA'da Ürün3, veri tabanında mevcut olsa bile sağ taraftaki tabloda yer almadığından NULL yerine değer almaz. MağazaC'de herhangi bir eşleşme olmadığından ürün adı ve tanımı da NULL almaz.
LEFT JOIN VS LEFT OUTER JOIN
MySQL veri tabanında iki ya da daha fazla tabloyu birleştirmek için en çok kullanılan birleştirme yöntemleri "INNER JOIN", "LEFT JOIN", "RIGHT JOIN", "FULL OUTER JOIN", "UNION" ve "CROSS JOIN" dır. Bu yöntemler arasında en fazla karıştırılan ve benzerliği olanlar "LEFT JOIN" ve "LEFT OUTER JOIN" yöntemleridir.
İki yöntem arasındaki fark "LEFT OUTER JOIN" yönteminin, sağ tarafta ortak veri yoksa NULL değeri döndürmesi, "LEFT JOIN" yönteminin ise her zaman en az bir ortak veri olduğunu varsaymasıdır. Biraz daha açıklamak gerekirse, "LEFT JOIN" yöntemi, sol taraftaki tablodan tüm verileri ve sağ taraftaki tablodan ortak verileri birleştirirken, "LEFT OUTER JOIN" yöntemi de aynı işlemi yaparken, sağ tarafta ortak veri yoksa bile sol taraftaki tüm verileri getirir ve boş olan yerlerde NULL değeri kullanır.
Bu farklılıkların yanı sıra, "LEFT JOIN" ve "LEFT OUTER JOIN" yöntemleri de benzer şekilde çalışır. Sol taraftan tüm verileri ve sağ taraftan sadece ortak verileri getirirler. "LEFT OUTER JOIN" yönteminde belirtilen düzenlemeye göre, olmayan verileri de getirip yerlerine NULL değerleri kullanır.
Tablodaki her satır için iki yöntemi de birleştirmek ve sonuçları karşılaştırmak, aralarındaki farkı daha iyi anlamak için bir örnek inceleyelim:
Öğrenci ID | Adı | Sınıf ID |
---|---|---|
1 | Ahmet | 101 |
2 | Merve | 102 |
3 | Ali | 101 |
Sınıf ID | Sınıf Adı |
---|---|
101 | Matematik |
103 | Fizik |
Eğer ilk tabloyu "LEFT JOIN" yöntemi ile sınıf tablosuna bağlarsak, sadece 101 sınıf ID'li verilerle eşleşen öğrencileri getirir:
- Ahmet (101)
- Ali (101)
Fakat aynı işlemi "LEFT OUTER JOIN" yöntemi ile yaparsak, sınıf tablosunda hiç öğrencisi olmayan 102 ve 103 sınıf ID'lerini de getirir:
- Ahmet (101)
- Ali (101)
- Merve (NULL)
Yukarıdaki örnekte görüldüğü gibi, "LEFT OUTER JOIN" yönteminin, ortak olmayan verileri de getirip yerlerine NULL değerlerini kullanması, "LEFT JOIN" işleminden ayrışmasını sağlar.
RIGHT JOIN
MySQL veritabanında, sağ taraf tablosundaki tüm verileri ve sol taraf tablosundaki ortak verileri birleştirmek için RIGHT JOIN birleştirme yöntemi kullanılmaktadır.
Bu yöntem, LEFT JOIN yöntemine benzer şekilde kullanılır ancak ters yönde birleştirme yapar. Sol taraf tablosundan sağ taraf tablosuna doğru birleştirme yapar. Sol ve sağ tablolar arasındaki birleştirme ilişkisi, RIGHT JOIN kullanımında sol taraftaki tabloya göre belirlenir.
RIGHT OUTER JOIN olarak da adlandırılan RIGHT JOIN'in kullanımı, LEFT JOIN ile benzerdir. Ancak RIGHT JOIN, sağ taraftaki tablodan verilerin öncelikli olmasını sağlar. Sol tablodaki ortak veriler, bu yöntemle sağ taraftan eşleştirilir. RIGHT JOIN yöntemi, tablolardaki bazı verilerin eksik olması durumunda kullanılabilir. Bu durumda RIGHT JOIN, sol tablodaki verilerin bir kısmını getirir ve sağ tabloya uygun olan verileri birleştirir, eksik olan verilere ise NULL değerleri atar.
Bir örnek vermek gerekirse, bir ürün veritabanında ürünlerin sipariş tablosuyla birleştirme yapmak isteyelim. Bu durumda RIGHT JOIN yöntemi, tüm siparişleri ve ürünlerle ilgili bilgileri getirmemizi sağlar. Ürün adı, adedi, fiyatı gibi bilgilere sağ taraftaki tablodan erişim sağlamak mümkündür.
Ürün Adı | Adet | Fiyat | Müşteri | Sipariş Tarihi |
---|---|---|---|---|
Kalem | 2 | 5.00 TL | Ali | 2021-06-01 |
Defter | 3 | 7.00 TL | Mehmet | 2021-06-06 |
Yukarıdaki örnekte, sipariş tablosu sağ tablo, ürün tablosu sol tablo olarak ele alınmıştır. RIGHT JOIN kullanarak sipariş verileri alınmış ve ürün bilgilerine sağ taraf tablosundan erişim sağlanmıştır.
FULL OUTER JOIN
FULL OUTER JOIN, iki tablonun tüm verilerini birleştirmek için kullanılan bir yöntemdir. Bu yöntemde, tablolardaki ortak ve ortak olmayan veriler de dahil olmak üzere tablodaki tüm veriler birleştirilir. FULL OUTER JOIN, LEFT JOIN ve RIGHT JOIN yöntemlerinin birleşiminden oluşur. Bu yöntem tüm verilere ulaşmak için en geniş birleştirme yöntemidir.
Bir örnek vermek gerekirse, "müşteriler" tablosu ve "siparişler" tablosu arasındaki birleştirme işlemini ele alalım. "müşteriler" tablosunda, müşteri adı ve müşteri numarası alanları bulunurken, "siparişler" tablosu, sipariş numarası, sipariş tarihi ve müşteri numarası alanlarını içerir. FULL OUTER JOIN kullanılarak, hangi müşterilerin sipariş vermediği ya da siparişleri kabul edilmediği de dahil olmak üzere tüm müşteri ve sipariş verileri birleştirilebilir.
Müşteri Adı | Müşteri Numarası | Sipariş Numarası | Sipariş Tarihi |
---|---|---|---|
Ali | 1 | 1001 | 01.01.2021 |
Ayşe | 2 | 1002 | 02.01.2021 |
Eren | 3 | 1005 | 05.01.2021 |
İpek | 4 | NULL | NULL |
NULL | NULL | 1003 | 03.01.2021 |
NULL | NULL | 1004 | 04.01.2021 |
- FULL OUTER JOIN, tüm tablo verilerine erişim sağlar.
- Bu yöntemi kullanırken tablolarda ortak alan olup olmadığını kontrol etmek ve aynı veri tiplerine sahip olmalarını sağlamak gerekir.
- FULL OUTER JOIN, aynı zamanda sağ ve sol birleştirme veya tam bir birleştirme olarak da adlandırılır.
Bir başka önemli nokta ise, FULL OUTER JOIN sorgusu genellikle diğer birleştirme yöntemlerinden daha yavaşdır ve büyük veri tabloları için daha da yavaş olabilir. Bu nedenle, veri tabanı performansını optimize etmek isteyenler, birleştirme işlemini yalnızca gerektiğinde kullanmak için özen göstermelidirler.
UNION
tablolar arasındaki ilişkiyi olmadan iki ya da daha fazla eşit sütuna ve veri tipine sahip tablolar arasında işlem yapmak için kullanılır. Bu komut sayesinde tabloların satırları birleştirilir ve tekrarlanan satırlar dahi çekilir. UNION tablosunda iki veya daha fazla tablonun sütunları aynı olmalıdır. Bu birleştirme işlemi sırasındaki tüm tabloların sütunları yazılabileceği gibi tüm tabloların sadece belirli sütunları da yazılabilir.
Birleştirme işleminde birden fazla sütun kullanılırken her bir sütuna ayrı bir UNION yazmak gerekir. Bu işlem sayesinde, sütunlar arasındaki tipleri kontrol edilerek hata oluşması engellenir. UNION işlemi sonrasında herhangi bir tür hata veya farklılık almazsınız. Auto increment kullanılan bir durumda, UNION ile birden çok tablodan insert edilirse, id'lerde çakışma yaşanabilir. Bu yüzden AUTO_INCREMENT özelliğinin kapalı olması gerekmektedir.
UNION ALL
operatörü, MySQL veri tabanında iki veya daha fazla tabloyu birleştirmek için kullanılan birleştirme yöntemlerinden biridir. UNION operatörüne benzer şekilde, tablolardaki sütunlar arasında eşleşme sağlar, ancak tüm satırları birleştirir ve veri tekrarı meydana gelebilir. Üstelik UNION ALL operatörü, daha hızlı çalışır ve daha az hafıza tüketir.
Bir örnek verecek olursak, bir e-ticaret sitesindeki müşteri ve sipariş tablolarını birleştirmek isteyelim. İki tablodaki satırların tamamının birleşmesi gerektiğinden, tekrarlamalara izin vererek UNION ALL operatörünü kullanabiliriz. Bu şekilde, hem müşteri hem de sipariş tablosundaki verileri tek bir sonuç olarak bize sunacaktır.
Müşteri Tablosu | Sipariş Tablosu |
---|---|
Ali | 100 TL |
Ayşe | 50 TL |
Veli | 25 TL |
Ali | 75 TL |
Can | 30 TL |
Yukarıdaki örnek verileri kullanarak müşteri ve sipariş tablolarını birleştirelim. Aşağıdaki sorgu kullanılarak UNION ALL operatöründen yararlanabiliriz:
SELECT * FROM müşteriUNION ALLSELECT * FROM sipariş;
Sonuç olarak, aşağıdaki gibi bir çıktı elde ederiz:
Müşteri Tablosu | Sipariş Tablosu |
---|---|
Ali | 100 TL |
Ayşe | 50 TL |
Veli | 25 TL |
Ali | 75 TL |
Can | 30 TL |
Tablolar arasında ilişkilendirme yapılmadan, birleştirme işlemi gerçekleştirildiği için sütunlar herhangi bir ortaklığa göre birleştirilmedi. İşlemin sonucunda, her iki tablodaki tüm satırların birleştirildiği bir sonuç elde ettik. UNION ALL operatörünün veri tabanı yönetiminde oldukça sık kullanılan bir yöntem olduğunu söyleyebiliriz.
CROSS JOIN
CROSS JOIN, veritabanındaki iki ya da daha fazla tablonun tüm verilerini birleştirmek için kullanılan birleştirme yöntemidir. Bu yöntemde, tüm tabloların satırları çarpımlanarak birleştirilir. Kısacası, CROSS JOIN işlemi, kartezyen çarpım olarak da adlandırılan tüm kombinasyonları oluşturur.
Bu yöntemi kullanarak, birden fazla tablonun verilerini birleştirerek yeni bir tablo oluşturabilirsiniz. Örneğin, bir web mağazası sahibi olarak, müşterilerin ürünleri satın almak için kullandığı ödeme yöntemleri ve ürünler tablolarındaki tüm verileri CROSS JOIN yöntemi kullanarak birleştirerek ödeme yöntemleri ve ürünler tablosunu oluşturabilirsiniz.
Tablo birleştirme işlemlerinde, hangi yöntemin kullanılacağı verilerin doğru bir şekilde birleştirilmesinde çok önemlidir. CROSS JOIN operatörü birçok durumda kullanışlıdır, ancak çok sayıda veri içeren tablolarda performans sorunları yaşanabilir. Bu nedenle, verilerin doğru bir şekilde birleştirildiğinden emin olmak için her zaman doğru birleştirme yöntemlerini tercih etmek önemlidir.