Softmush.com, teknoloji, yazılım ve dijital dünyaya dair derinlemesine içeriklerle bilgiye ulaşmanın güvenilir adresi. - Softmush.com
“ Söz konusu olan vatansa, gerisi teferruat. ”
Mustafa K. Atatürk
SQL Joins: İlişkisel Veritabanlarında Birleştirme İşlemleri

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 NULL değ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 NULL değ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 NULL değ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 AS anahtar kelimesiyle takma adlar (örneğin Calisanlar 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, RIGHT ve FULL JOIN kullanırken, eşleşme olmayan taraftaki sütunlar için NULL değ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 JOIN ifadesi art arda kullanılabilir.

  • JOIN Koşulu: ON anahtar 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.

Yayınlanma Tarihi: 2025-10-28 12:00:32
JavaScript Dilinde Asenkron Programlama: Kapsamlı Bir Kılavuz
Önceki Haber

JavaScript Dilinde Asenkron Programlama: Kapsamlı Bir Kılavuz

JavaScript Makaleleri
Sonraki Haber

Ultra İşlenmiş Gıdaların Gizli Faydaları: Her Şey Kötü Mü?

Bilim Makaleleri
Ultra İşlenmiş Gıdaların Gizli Faydaları: Her Şey Kötü Mü?

Yorum yap

Yorum yapabilmek için  giriş  yapmalısınız.

Yorumlar

Bu yazı hakkında henüz yorum yapılmamıştır.
× SQL Dilinde Temel Sözdizimi Kullanımı Kılavuzu
Bu ilginizi çekebilir

SQL Dilinde Temel Sözdizimi Kullanımı Kılavuzu

SQL (Structured Query Language), veritabanlarını yönetmek ve sorgulamak için kullanılan...