SQL Joins: İlişkisel Veritabanlarında Birleştirme İşlemleri
İlişkisel veritabanları, veri bütünlüğünü sağlamak ve yedekliliği azaltmak amacıyla ilgili verileri genellikle birden fazla tabloda saklar. Eksiksiz bir bilgi kümesi elde etmek, bu farklı tabloların verilerini birleştirmeyi sıkça gerektirir. SQL Joins, aralarındaki ilgili bir sütuna dayanarak iki veya daha fazla tablodan satırları bağlayarak bu işlemi gerçekleştirmek için temel bir mekanizma sunar. Karmaşık veritabanı şemalarında farklı SQL Join türlerini anlamak, verimli ve doğru veri çekimi için hayati öneme sahiptir.
Sözdizimi
SQL Join operatörlerinin genel sözdizimi aşağıdaki gibidir:
SELECT
    kolon1, kolon2, ...
FROM
    tablo1
[INNER | LEFT | RIGHT | FULL] JOIN tablo2
    ON tablo1.ortak_kolon = tablo2.ortak_kolon
WHERE
    kosul;Detaylı Açıklama
Yukarıdaki sözdiziminde yer alan her bir bileşen, belirli bir amaca hizmet eder:
SELECT kolon1, kolon2, ...: Sorgu sonucunda gösterilecek sütunları belirtir. Bu sütunlar birleştirilen tablolardan herhangi birinden seçilebilir.FROM tablo1: Sorgunun ana tablosunu belirtir. Birleştirme işlemi bu tablodan başlar.[INNER | LEFT | RIGHT | FULL] JOIN tablo2: Birleştirme türünü ve ikinci tabloyu belirtir. Dört ana Join türü vardır:INNER JOIN: İki tabloda da eşleşen değerlere sahip satırları döndürür. Eğer her iki tabloda da bir eşleşme yoksa, o satır sonuç kümesine dahil edilmez. En yaygın kullanılan Join türüdür.
LEFT JOIN (veya LEFT OUTER JOIN): Sol tablodaki tüm satırları döndürür ve sağ tablodan eşleşen satırları getirir. Sol tablodaki bir satır için sağ tabloda eşleşme bulunamazsa, sağ tablonun sütunları için
NULLdeğerleri döndürülür.RIGHT JOIN (veya RIGHT OUTER JOIN): Sağ tablodaki tüm satırları döndürür ve sol tablodan eşleşen satırları getirir. Sağ tablodaki bir satır için sol tabloda eşleşme bulunamazsa, sol tablonun sütunları için
NULLdeğerleri döndürülür.FULL JOIN (veya FULL OUTER JOIN): Her iki tablodaki tüm satırları döndürür. Bir tabloda eşleşme olmasa bile, diğer tablodan gelen eşleşmeyen satırlar da dahil edilir ve eşleşmeyen taraftaki sütunlar için
NULLdeğerleri döndürülür.
ON tablo1.ortak_kolon = tablo2.ortak_kolon: Join koşulunu belirtir. Bu koşul, iki tablo arasındaki hangi sütunların eşleştirilmesi gerektiğini tanımlar. Genellikle bu, birincil anahtar (Primary Key) ve yabancı anahtar (Foreign Key) ilişkisi olan sütunlardır.WHERE kosul: İsteğe bağlı olarak, birleştirme işlemi tamamlandıktan sonra sonuç kümesini daha da filtrelemek için kullanılır.
Pratik Kullanım Örnekleri
Aşağıdaki örnekler için iki tablo kullandığımızı varsayalım:
-- Calisanlar Tablosu
CREATE TABLE Calisanlar (
    CalisanID INT PRIMARY KEY,
    Ad VARCHAR(50),
    Soyad VARCHAR(50),
    DepartmanID INT
);
INSERT INTO Calisanlar (CalisanID, Ad, Soyad, DepartmanID) VALUES
(1, 'Ayşe', 'Yılmaz', 101),
(2, 'Mehmet', 'Demir', 102),
(3, 'Zeynep', 'Kaya', 101),
(4, 'Ali', 'Can', 103),
(5, 'Elif', 'Tekin', NULL);
-- Departmanlar Tablosu
CREATE TABLE Departmanlar (
    DepartmanID INT PRIMARY KEY,
    DepartmanAdi VARCHAR(50)
);
INSERT INTO Departmanlar (DepartmanID, DepartmanAdi) VALUES
(101, 'İnsan Kaynakları'),
(102, 'Muhasebe'),
(103, 'Pazarlama'),
(104, 'Ar-Ge');INNER JOIN Örneği
Bu örnek, sadece hem Calisanlar hem de Departmanlar tablolarında eşleşen DepartmanID değerlerine sahip çalışanları ve departman adlarını döndürür.
SELECT
    C.Ad,
    C.Soyad,
    D.DepartmanAdi
FROM
    Calisanlar AS C
INNER JOIN
    Departmanlar AS D ON C.DepartmanID = D.DepartmanID;Çıktı Açıklaması: DepartmanID değeri NULL olan 'Elif Tekin' ve Departmanlar tablosunda eşleşmesi olmayan 'Ar-Ge' departmanı sonuç kümesine dahil edilmez. Sadece eşleşen veriler listelenir.
LEFT JOIN Örneği
Bu örnek, Calisanlar tablosundaki tüm çalışanları ve varsa ilgili departman adlarını döndürür. Departmanı olmayan çalışanlar için departman adı NULL olarak görünür.
SELECT
    C.Ad,
    C.Soyad,
    D.DepartmanAdi
FROM
    Calisanlar AS C
LEFT JOIN
    Departmanlar AS D ON C.DepartmanID = D.DepartmanID;Çıktı Açıklaması: 'Elif Tekin' (DepartmanID'si NULL olan) listede yer alır ve DepartmanAdi sütunu için NULL değeri gösterilir. Departmanlar tablosunda olup Calisanlar tablosunda eşleşmesi olmayan 'Ar-Ge' departmanı sonuçta yer almaz.
RIGHT JOIN Örneği
Bu örnek, Departmanlar tablosundaki tüm departmanları ve varsa bu departmanlarda çalışan kişilerin adlarını döndürür. Çalışanı olmayan departmanlar için çalışan adları NULL olarak görünür.
SELECT
    C.Ad,
    C.Soyad,
    D.DepartmanAdi
FROM
    Calisanlar AS C
RIGHT JOIN
    Departmanlar AS D ON C.DepartmanID = D.DepartmanID;Çıktı Açıklaması: 'Ar-Ge' departmanı (DepartmanID'si 104) listede yer alır ve Ad ile Soyad sütunları için NULL değerleri gösterilir. Calisanlar tablosunda olup Departmanlar tablosunda eşleşmesi olmayan 'Elif Tekin' sonuçta yer almaz.
FULL JOIN Örneği
Bu örnek, her iki tablodaki tüm satırları döndürür. Eşleşme olmayan yerlerde NULL değerleri görünür.
SELECT
    C.Ad,
    C.Soyad,
    D.DepartmanAdi
FROM
    Calisanlar AS C
FULL JOIN
    Departmanlar AS D ON C.DepartmanID = D.DepartmanID;Çıktı Açıklaması: Hem departmanı olmayan 'Elif Tekin' (DepartmanAdi NULL) hem de çalışanı olmayan 'Ar-Ge' departmanı (Ad ve Soyad NULL) sonuç kümesinde yer alır. Diğer tüm eşleşen satırlar da gösterilir.
Önemli Notlar
Tablo Takma Adları (Aliases): Join işlemlerinde, tablo adları yerine
ASanahtar kelimesiyle takma adlar (örneğinCalisanlar AS C) kullanmak sorguları daha kısa ve okunabilir hale getirir. Bu, özellikle birden fazla tabloyla çalışırken veya bir tabloyu kendiyle birleştirirken (self-join) çok faydalıdır.Performans: Büyük tablolar üzerinde karmaşık Join işlemleri performans sorunlarına yol açabilir. Uygun indeksleme ve sorgu optimizasyonları, bu sorunların önüne geçmede kritik öneme sahiptir.
NULL Değerler:
LEFT,RIGHTveFULL JOINkullanırken, eşleşme olmayan taraftaki sütunlar içinNULLdeğerlerinin döndürüldüğünü unutmayın. Bu durum, veri analizi yaparken dikkat edilmesi gereken önemli bir noktadır.Birden Fazla JOIN: Bir sorguda ikiden fazla tabloyu birleştirmek için birden fazla
JOINifadesi art arda kullanılabilir.JOIN Koşulu:
ONanahtar kelimesiyle belirtilen koşul, tablolar arasındaki ilişkinin doğru bir şekilde tanımlanmasını sağlar. Yanlış veya eksik bir koşul, hatalı veya eksik sonuçlara yol açabilir.
        
                
            
            
Yorum yap
Yorumlar