mySQL, veri tabanı yönetim sistemi kullanarak birden fazla tablo ile çalışmak isteyen kullanıcılar için join ile tabloları birleştirerek tek bir tablo haline getirme imkanı sunar. Join sayesinde veriler daha etkili bir şekilde saklanabilir ve manipüle edilebilir.
Join Nedir?
Join, SQL veritabanlarında birden fazla tablonun bilgilerinin birleştirilmesi işlemidir. Bu sayede veri tutma ve yönetme daha etkili bir hale getirilir. Örneğin, bir e-ticaret sitesinde müşteri bilgileri bir tabloda, sipariş bilgileri başka bir tabloda tutulabilir. Bu iki tabloyu join işlemi ile birleştirerek müşteri bilgileriyle ilgili sipariş bilgilerine erişmek mümkün hale gelir. Join işlemi sayesinde veriler daha anlaşılır, düzenli ve manipüle edilebilir bir hale getirilir.
Iki Tablo Arasında Join İşlemi Nasıl Yapılır?
Join işlemi için iki tablonun birbirleriyle ilişkili olması gerekmektedir. İki tablo arasında bağlantıyı sağlayacak olan ortak bir sütun belirlenir ve join fonksiyonu kullanılarak bu sütuna göre birleştirme işlemi gerçekleştirilir. Örneğin, bir marketin ürünler tablosu ile müşteriler tablosu arasında join işlemi yapmak istediğimiz zaman, bu iki tablonun ortak bir sütunu olmalıdır. Ürünler tablosunda bulunan product_id sütunu ile müşteriler tablosunda bulunan customer_id sütunu arasında bir ilişki varsa, bu sütunlar üzerinden join işlemi yapılabilir. Bu sayede, iki tablonun verileri tek bir tablo halinde birleştirilebilir ve istenilen manipülasyonlar rahatlıkla yapılabilmektedir.
Inner Join Nedir?
Inner Join, iki tablonun ortak değerlere sahip olan verilerin birleştirilmesini sağlayan bir join işlemidir. Bu işlem ile birlikte bir tabloda yer alan veriler, diğer tabloda yer alan veriler ile birleştirilerek tek bir tabloda gösterilir. Inner Join sırasında kullanılan anahtarlar, her iki tablo arasındaki ilişkiyi belirler. İki tablo arasında Outer Join işlemi yapılabilirken, Inner Join işleminde her zaman bir ilişki olmalıdır. Inner join, verilerin daha etkili bir şekilde depolanmasına ve işlenmesine yardımcı olur ve veri kaybını önler.
Inner Join Örneği
Inner join örneği, iki tabloyu birleştirirken bu tabloların ortak olan sütunlarına ait verileri tek bir tabloda birleştirir. Bu işlem sonucunda, sadece iki tablonun kesişen verileri görüntülenir.
Örneğin, “Customers” ve “Orders” tabloları arasında inner join işlemi yapılırken, bu iki tablonun ortak sütunu “CustomerID” olabilir. Join işlemi sonrasında, sadece bu iki tablonun ortak olan “CustomerID” sütunlarına ait veriler tek bir tabloda görüntülenir.
Inner join örneği koduna baktığımızda, “SELECT” kelimesi ile başlayan bir sorgu kullanılıyor. “Customers” ve “Orders” tablolarından, “CustomerName” ve “OrderID” sütunları seçiliyor. Daha sonra, “INNER JOIN” fonksiyonu kullanılarak bu iki tablo birleştiriliyor ve “Customers.CustomerID = Orders.CustomerID” koşulu belirtiliyor. Böylece iki tablo arasındaki ortak olan “CustomerID” sütununa göre birleştirme işlemi gerçekleştiriliyor.
FROM Customers
FROM Customers, SQL sorgularında kullanılan bir terimdir ve sözdizimiyle bir tablodaki verileri seçmenizi sağlar. Bu ifade, “Müşteriler” tablosundan veri seçmek istediğimiz anlamına gelir.
Örneğin, bir web sitesinde kullanılan bir kullanıcı hesabı oluşturmak istiyorsanız, “Müşteriler” tablosundan kullanıcı adı, e-posta, şifre veya diğer ilgili bilgileri seçerek bir sorgu oluşturabilirsiniz.
Bunun için, SQL sorgusu içinde “SELECT” ifadesi kullanılır ve ardından “FROM” ifadesi ile Müşteriler tablosu belirtilir. Sorgu şu şekilde olabilir:
SELECT username, email, passwordFROM Customers;
Bu sorgu, “Müşteriler” tablosundaki kullanıcı adı, e-posta ve şifre bilgilerini seçer ve sonuçlar bir sonuç kümesi olarak döndürülür.
FROM ifadesi, tek bir tablodan veri seçmek için kullanılabilir. Ancak, birden fazla tablodaki verileri seçmek için JOIN kavramı kullanılmalıdır. JOIN ile birden fazla tabloyu birleştirerek tek bir tablo haline getirme işlemi gerçekleştirilebilir.
INNER JOIN Orders
Inner join, SQL ile iki tabloyu birleştirerek kesişen verileri içeren tek bir tablo oluşturmayı sağlayan bir işlemdir. Bu işlem sayesinde ilişkili veriler daha etkili bir şekilde sorgulanabilir ve kullanılabilir.
Inner join işlemi yapmak için öncelikle birleştirilecek iki tablonun birbirleriyle ilişkili olması gerekir. Bu ilişki genellikle bir sütunun diğer tabloda da yer almasıyla sağlanır. Inner join işlemi genellikle birbirleriyle birçok veri ortak olan tablolar arasında en verimli şekilde yapılır.
Inner join işlemi sırasında kullanılan ON operatörü, her iki tabloda kesişen sütunları belirtmek için kullanılır. ON operatörü, WHERE operatöründen farklı olarak birleştirilecek olan sütunlar için kullanılır ve sorgunun daha hızlı çalışmasını sağlar.
Örneğin, Customers ve Orders tabloları inner join işlemine tabi tutulduğunda, Customers tablosundaki CustomerID sütunu ile Orders tablosundaki CustomerID sütunu kesişen veriler için birleştirilir. Bu sayede, müşteri ve sipariş bilgileri tek bir tabloda birleştirilerek daha etkili bir şekilde kullanılabilir.
Inner join işlemi genellikle projelerde sıklıkla kullanılan bir işlem olduğundan, her SQL kullanıcısının bu konuda bilgi sahibi olması önemlidir.
ON Customers.CustomerID
Bu ifade, Inner ve Outer Join işlemlerini gerçekleştirmek için oldukça önemlidir. İki tablo arasındaki ilişkiyi kurar ve hangi sütunların birleştirileceğini belirler. Burada, Customers tablosundaki CustomerID sütunu ile Orders tablosundaki CustomerID sütunu birleştiriliyor. Bu sayede, müşteri adları ile sipariş numaraları arasında bir bağlantı kurulabilir. Ayrıca, join işlemleri için birden fazla ON ifadesi kullanılabilir ve tabloların birleştirilebilmesi için her biri doğru şekilde eşleştirilmelidir.
Outer Join Nedir?
Outer join, bir tabloda bulunmayan verilerin de dahil edildiği birleştirme işlemidir. Inner join’da sadece iki tablonun ortak olan sütunlarına ait veriler birleştirilirken, outer join’da bu sütunların tamamı dahil edilir. Bu sayede bir tabloda bulunmayan bilgilere de erişim sağlanmış olur.
Outer join’in iki çeşidi vardır: left outer join ve right outer join. Left outer join’da, sol taraftaki tablonun tüm verileri dahil edilirken, sağ taraftaki tablonun ortak olmayan verileri null değerlerle gösterilir. Right outer join ise tam tersidir, sağ taraftaki tablonun tüm verileri dahil edilirken, sol taraftaki tablonun ortak olmayan verileri null değerlerle gösterilir.
|Customers||Orders|
|CustomerID||OrderID|
|CustomerName||CustomerID|
Aşağıdaki örnekte, Customers tablosundaki tüm veriler dahil edilirken, Orders tablosundaki sadece ortak olan veriler dahil edilir:
SELECT Customers.CustomerName, Orders.OrderIDFROM CustomersLEFT JOIN OrdersON Customers.CustomerID = Orders.CustomerID;
|Customers||Orders|
|CustomerID||OrderID|
|CustomerName||CustomerID|
Bu örnekte ise, Orders tablosundaki tüm veriler dahil edilirken, Customers tablosundaki sadece ortak olan veriler dahil edilir:
SELECT Customers.CustomerName, Orders.OrderIDFROM CustomersRIGHT JOIN OrdersON Customers.CustomerID = Orders.CustomerID;
Left Outer Join Örneği
Left outer join, iki tablo arasında verilerin tamamını birleştirmeyi sağlar. Eğer bir tabloda diğer tabloda olmayan veriler varsa, outer join sayesinde bu veriler de dahil edilir. Bu işlem sayesinde üzerinde çalışılan veri kümesinin tamamına erişim sağlanır.
Bu işlemi gerçekleştirmek için, iki tablonun hangi ortak sütunlarının birleştirileceği belirlenir. Daha sonra LEFT JOIN fonksiyonunun kullanımı ile bu işlem gerçekleştirilir. Yukarıda verilen örnek kodda Customers tablosundan CustomerName sütunu ile Orders tablosundan OrderID sütunu LEFT JOIN fonksiyonu ile birleştirilmiştir.
Bu örnek kod, müşteri isimlerinin yanında sipariş numaralarının da görüntülenmesini sağlar. Eğer Customers tablosunda bir müşteriye ait sipariş yoksa, sipariş numarası NULL olarak gözükür. Bu sayede, üzerinde çalışılan veri kümesi daha net bir şekilde analiz edilebilir.
FROM Customers
FROM Customers, mySQL’de kullanılan bir sorgu cümlesidir. Bu sorgu cümlesi, dataları bir tablodan okumak için kullanılır. Customers tablosundan dataların çekildiği bu sorgu cümlesi, genellikle başka sorgu cümleleri ile birleştirilir ve complex sorgular oluşturulur. Ayrıca, FROM Customers sorgusu ile tablodaki her bir satırın tek tek çağrıldığı da unutulmamalıdır.
Burada dikkat edilmesi gereken bir nokta da, mySQL’de table isimleri büyük/küçük harf duyarlıdır. Yani eğer büyük harfle başlayan bir tablonun ismini küçük harfle yazarsanız, mySQL bu tabloyu tanımayacak ve hata verecektir. Bu yüzden yazdığımız sorguda table isimleri ve diğer değişkenlerin isimlendirmelerinde hassasiyet göstermeliyiz.
Bununla birlikte, FROM Customers kullanmadan önce, veri tabanımızda Customers tablosunun yer aldığından emin olmamız gerekmektedir. Eğer böyle bir tablo yoksa, mySQL hata verecektir.
Bu nedenlerden dolayı, FROM Customers sorgusunun doğru bir şekilde kullanıldığından emin olmalıyız. Aksi takdirde, yanlış ve hatalı sonuçlar ile karşılaşabiliriz.
LEFT JOIN Orders
LEFT JOIN, iki tablo arasındaki ortak olan verileri ve sol tablodaki tüm verileri birleştiren bir join türüdür. Bu işlem sonucunda, sol taraftaki tablodan eşleşen veriler alınır ve sağ taraftaki tablodan eşleşmeyen veriler NULL olarak atanır. Bu yöntem, sol taraftaki tablonun tüm verilerinin korunmasını sağlar ve sağ taraftaki tablo ile eşleşmeyen veriler için NULL değerleri kullanarak eksik bilgileri görüntülemeye olanak sağlar.
Örneğin, bir “Customers” tablosu ve bir “Orders” tablosu olduğunu varsayalım. “Customers” tablosundaki her müşteri, “Orders” tablosundaki siparişlerle ilişkilendirilir. Ancak bazı müşterilerin siparişi yoktur. İşte bu durumda LEFT JOIN kullanarak, tüm müşterilerin tam listesini ve yalnızca kimi müşterilerin sipariş bilgilerini görüntüleyebiliriz. Aşağıdaki örnek, “Customers” tablosu ile “Orders” tablosunun “CustomerID” sütunları arasında bir LEFT JOIN örneğini göstermektedir:
|CustomerName||OrderID|
|Alfreds Futterkiste||1746|
|Antonio Moreno Taquería||NULL|
|Arts et Lettres||1717|
|…||…|
Yukarıdaki örnekte, “Customers” tablosu ile “Orders” tablosunun “CustomerID” sütunlarını birleştirerek bir liste oluşturduk. “Antonio Moreno Taquería” müşterisinin siparişi olmadığı için “NULL” değeri görüntülenirken, diğerleri için ilgili sipariş numaraları listelenmiştir. Bu şekilde, müşteri listesi hem siparişleri olan hem de olmayanlar ile tamamlanmış olur.ON Customers.CustomerID
Bu kod parçası, join işleminde iki tablonun birleştirilmesi için kullanılan sütunların belirlendiği kısımdır. Burada Customers ve Orders tabloları arasındaki CustomerID sütunları kullanılarak join işlemi gerçekleştirilir. Bu işlem sonucunda her iki tablonun da CustomerID sütunu ortak olan verileri tek bir tabloda birleştirilir. Bu sayede veriler daha etkili bir şekilde saklanabilir ve manipüle edilebilir. Tablolar arasında bu şekilde birleştirme işlemi için inner join kullanılır.
Right Outer Join Örneği
Right Outer Join işlemi, tüm Orders tablosundaki verilerin gösterilmesini sağlarken, Customers tablosundaki verilerle eşleşmeyen yerleri null olarak doldurur. Yani Customers tablosunda olmayan bir CustomerID değeri Orders tablosunda varsa, Right Outer Join işlemi sayesinde bu veri de görüntülenebilir.
Örneğin, bir mağaza sahibi, müşteri bilgilerinin yanı sıra sipariş bilgilerini de saklamak istiyor. Orders ve Customers tabloları birleştirilerek, hem müşteri adları hem de sipariş numaraları görüntülenebilir. Ancak, sipariş veren bazı müşterilerin adları Customers tablosunda bulunmayabilir. Bu durumda Right Outer Join işlemi, Orders tablosundaki bu müşterilere ait sipariş numaralarını ve null değerlerinin yanı sıra tüm diğer müşteri adlarını içeren bir veri kümesi oluşturacaktır.
Right Outer Join işlemi, Left Outer Join işleminden farklı olarak, Customers tablosundaki tüm verileri ve Orders tablosundaki sadece eşleşen verileri gösterir.
FROM Customers
FROM Customers, SQL sorgularında belirli bir veritabanındaki müşteri verilerinin seçilmesinde kullanılan bir terimdir. Bu terim, SELECT sorgusu içinde kullanılır ve hangi tablonun seçileceğini belirtir.
Örneğin, Customers tablosundaki tüm müşteri verilerini almak istediğinizde, sorgunun temel yapısı aşağıdaki gibi olacaktır:
SELECT * FROM Customers;
Burada, “*” ifadesi tüm sütunları seçtiğimiz anlamına gelir. Bu sorgu, Customers tablosundaki tüm müşteri verilerini getirir.
FROM Customers terimi, ayrıca diğer sorgu terimleriyle de birleştirilebilir. Örneğin, Customers tablosu ile Orders tablosu birleştirilebilir ve bir müşterinin sipariş geçmişi alınabilir.
Bu birleştirme işlemi JOIN fonksiyonu ile gerçekleştirilir. INNER JOIN, LEFT JOIN ve RIGHT JOIN fonksiyonları, bir veya daha fazla tablo arasında birleştirme işlemi yapmak için kullanılabilir.
FROM Customers terimi, veri analizi ve raporlama işlerinde de sıklıkla kullanılır. Veritabanındaki müşterilerin ve siparişlerin tarihlerine göre filtrelenmesine ve gruplandırılmasına olanak tanır.
RIGHT JOIN Orders
Right outer join, left outer join ile tamamen ters mantıkta çalışır. Bu join türünde, sağ taraftaki tablo (Orders) seçilen sütuna göre komple listelenir ve soldaki tablodaki (Customers) eşleşen değeri olan sütun ile birleştirilir. Eğer sağ taraftaki tabloda (Orders) eşleşen bir veri yoksa da yine sağ taraftaki veri listede gösterilir. Bu işlem sonrasında, Customers tablosunda olmayan fakat Orders tablosunda bulunan müşteri siparişleri görüntülenebilir.
Örneğin, restaurants adlı bir müşteri veritabanımız var ve bu veritabanında müşterilerin siparişlerini de saklıyoruz. Üstelik herhangi bir müşterinin birkaç siparişi bulunuyor. Birleştirme işlemi yaparken, Customers tablosunda herhangi bir müşterinin sipariş yapmadığını görmekteyiz. Ancak, bu müşterilere özel teklifler sunmak istediğimizde hangi siparişlerin hangi müşterilere ait olduğunu bilmek istiyoruz. İşte bu noktada right join kullanarak, müşteriler tablosunda olmayan fakat Orders tablosunda bulunan siparişleri de görüntüleyebiliriz.
Örnek SQL sorgusu şöyle olabilir:
SELECT Customers.CustomerName, Orders.OrderIDFROM CustomersRIGHT JOIN OrdersON Customers.CustomerID = Orders.CustomerID;
ON Customers.CustomerID
Bu ifade, bir join işlemi yapılırken hangi sütunların birbirleriyle eşleştirileceğini belirlemek için kullanılır. Yukarıdaki örnekte, Customers ve Orders tabloları CustomerID sütunu ile ilişkilendirilmiştir. Bu sayede, iki tablodaki müşteri bilgileri ve bu müşterilerin siparişleri tek bir tabloda birleştirilmiştir. ON kullanımı ile sütunlar arasındaki eşleştirme gerçekleştirilmiş ve JOIN fonksiyonu ile iki tablo birleştirilmiştir. Bu şekilde, join işlemi sayesinde veriler daha düzenli hale getirilmiş ve işlemler daha etkin bir şekilde yapılabilir hale gelmiştir.