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 Dilinde INNER JOIN Kullanımı: Detaylı Rehber

SQL Dilinde INNER JOIN Kullanımı: Detaylı Rehber

İlişkisel veritabanı yönetim sistemlerinde (RDBMS) veriler genellikle normalize edilmiş birden fazla tabloda saklanır. Bu tablolar arasındaki ilişkileri kullanarak anlamlı bir veri kümesi elde etmek için birleştirme (JOIN) işlemleri kritik öneme sahiptir. Bu makale, SQL'deki en yaygın ve temel birleştirme türlerinden biri olan INNER JOIN operatörünün kullanımını, sözdizimini ve pratik örneklerini teknik bir bakış açısıyla detaylandırmaktadır.


Sözdizimi


INNER JOIN, iki veya daha fazla tablodan ortak bir kolondaki eşleşen değerlere dayanarak satırları birleştirir. Yalnızca her iki tabloda da bir eşleşme bulunduğunda satırları sonuç kümesine dahil eder.



SELECT
    kolon1,
    kolon2,
    ...
FROM
    tablo1
INNER JOIN
    tablo2 ON tablo1.ortak_kolon = tablo2.ortak_kolon;

Detaylı Açıklama


  • SELECT kolon1, kolon2, ...: Sonuç kümesinde görüntülemek istediğiniz kolonları belirtir. Bu kolonlar birleştirilen tablolardan herhangi birine ait olabilir. Kolon adları çakışıyorsa, tablo_adı.kolon_adı formatında belirtilmelidir.

  • FROM tablo1: Birleştirme işlemine başlayacağınız ilk tabloyu belirtir. Bu genellikle "sol" tablo olarak adlandırılır.

  • INNER JOIN tablo2: tablo1 ile birleştirmek istediğiniz ikinci tabloyu (sağ tablo) belirtir.

  • ON tablo1.ortak_kolon = tablo2.ortak_kolon: Bu kısım, birleştirme koşulunu tanımlar. Her iki tablodaki hangi kolonların eşleşmesi gerektiğini belirtir. INNER JOIN yalnızca bu koşulun doğru olduğu satırları döndürür. Kolonlar genellikle tablolar arasındaki birincil ve yabancı anahtar ilişkilerini temsil eder.


Pratik Kullanım Örnekleri


Aşağıdaki örneklerde, bir eğitim veritabanı senaryosu üzerinden INNER JOIN kullanımını inceleyeceğiz. Veritabanımızda Ogrenciler ve Kayitlar adında iki tablo olduğunu varsayalım.


Ogrenciler Tablosu:



CREATE TABLE Ogrenciler (
    OgrenciID INT PRIMARY KEY,
    Ad VARCHAR(50),
    Soyad VARCHAR(50)
);

INSERT INTO Ogrenciler (OgrenciID, Ad, Soyad) VALUES
(1, 'Ayşe', 'Yılmaz'),
(2, 'Mehmet', 'Demir'),
(3, 'Zeynep', 'Kaya'),
(4, 'Ali', 'Can');

Kayitlar Tablosu:



CREATE TABLE Kayitlar (
    KayitID INT PRIMARY KEY,
    OgrenciID INT,
    KursAdi VARCHAR(100),
    FOREIGN KEY (OgrenciID) REFERENCES Ogrenciler(OgrenciID)
);

INSERT INTO Kayitlar (KayitID, OgrenciID, KursAdi) VALUES
(101, 1, 'Veritabanı Yönetimi'),
(102, 2, 'Programlamaya Giriş'),
(103, 1, 'Web Geliştirme'),
(104, 3, 'Veri Analizi');

Örnek 1: İki Tabloyu Birleştirme


Hangi öğrencinin hangi kursa kayıtlı olduğunu görmek için Ogrenciler ve Kayitlar tablolarını OgrenciID kolonu üzerinden birleştirelim.



SELECT
    O.Ad,
    O.Soyad,
    K.KursAdi
FROM
    Ogrenciler AS O
INNER JOIN
    Kayitlar AS K ON O.OgrenciID = K.OgrenciID;

Açıklama: Bu sorgu, Ogrenciler tablosundaki her OgrenciID ile Kayitlar tablosundaki eşleşen OgrenciID değerlerini bulur. Sonuç olarak, kayıtlı her öğrencinin adı, soyadı ve aldığı kursun adını listeler. AS O ve AS K takma adlar (aliases) kullanarak sorguyu daha okunabilir hale getirdik.


Örnek 2: Birden Fazla Tabloyu Birleştirme


Şimdi üçüncü bir tablo, KursDetaylari ekleyelim ve bir öğrencinin aldığı kursun detaylarını (örneğin, ders saati) görmek isteyelim.


KursDetaylari Tablosu:



CREATE TABLE KursDetaylari (
    KursAdi VARCHAR(100) PRIMARY KEY,
    DersSaati INT,
    KrediSayisi INT
);

INSERT INTO KursDetaylari (KursAdi, DersSaati, KrediSayisi) VALUES
('Veritabanı Yönetimi', 45, 3),
('Programlamaya Giriş', 60, 4),
('Web Geliştirme', 50, 3),
('Veri Analizi', 75, 5);

Öğrencilerin hangi kurslara kayıtlı olduğunu ve bu kursların ders saatlerini listeleyen bir sorgu oluşturalım:



SELECT
    O.Ad,
    O.Soyad,
    K.KursAdi,
    KD.DersSaati
FROM
    Ogrenciler AS O
INNER JOIN
    Kayitlar AS K ON O.OgrenciID = K.OgrenciID
INNER JOIN
    KursDetaylari AS KD ON K.KursAdi = KD.KursAdi;

Açıklama: Bu sorgu, Ogrenciler, Kayitlar ve KursDetaylari tablolarını zincirleme bir şekilde birleştirir. İlk olarak öğrencilerle kayıtları, ardından kayıtlarla kurs detaylarını eşleştirerek her öğrencinin aldığı kursun adını ve ders saatini getirir.


Örnek 3: Belirli Koşullara Göre Birleştirme ve Filtreleme


Sadece 50 ders saatinden fazla olan kurslara kayıtlı öğrencileri görmek isteyelim:



SELECT
    O.Ad,
    O.Soyad,
    K.KursAdi,
    KD.DersSaati
FROM
    Ogrenciler AS O
INNER JOIN
    Kayitlar AS K ON O.OgrenciID = K.OgrenciID
INNER JOIN
    KursDetaylari AS KD ON K.KursAdi = KD.KursAdi
WHERE
    KD.DersSaati > 50;

Açıklama: Önceki sorguya bir WHERE koşulu eklenerek, sadece DersSaati 50'den büyük olan kurslara kayıtlı öğrenciler filtrelenmiştir. INNER JOIN işlemi tamamlandıktan sonra filtreleme uygulanır.


Önemli Notlar


  • ON ve WHERE Koşulları: ON koşulu, tabloların nasıl birleştirileceğini tanımlarken, WHERE koşulu birleştirilmiş sonuç kümesini daha da filtrelemek için kullanılır. ON koşulundaki eşleşmeyen satırlar hiçbir zaman sonuç kümesine dahil edilmezken, WHERE koşulu birleştirme sonrası sonuçları etkiler.

  • Kolon Adı Çakışmaları ve Takma Adlar: Farklı tablolarda aynı ada sahip kolonlar varsa (örneğin, her iki tabloda da bir ID kolonu), sorguda bu kolonları belirtirken tablo adı ön eki (tablo_adı.kolon_adı) veya takma adlar (alias.kolon_adı) kullanmak zorunludur. Bu, "ambiguous column name" (belirsiz kolon adı) hatasını önler ve sorgunun okunabilirliğini artırır.

  • Performans İpuçları: Büyük tablolarda INNER JOIN performansı için birleştirme koşulunda kullanılan kolonlarda indekslerin bulunması kritik öneme sahiptir. İndeksler, veritabanı motorunun eşleşen satırları çok daha hızlı bulmasına yardımcı olur.

  • NULL Değerler: INNER JOIN, ON koşulunda NULL değerlerle eşleşme yapmaz. Eğer bir tabloda eşleşme kolonu NULL ise, bu satır INNER JOIN sonucunda yer almaz. NULL değerleri de dahil etmek isterseniz, LEFT JOIN veya RIGHT JOIN gibi farklı JOIN türlerini değerlendirmeniz gerekebilir.

  • Veri Bütünlüğü: INNER JOIN kullanırken, birleştirme koşulunda kullanılan kolonlardaki veri bütünlüğünün doğru olduğundan emin olun. Tutarsız veriler veya yanlış eşleşme koşulları hatalı veya eksik sonuçlara yol açabilir.

Yayınlanma Tarihi: 2025-11-01 00:00:35
CSS Dilinde Inline-block Kullanımı
Önceki Haber

CSS Dilinde Inline-block Kullanımı

CSS Makaleleri
Sonraki Haber

Python Dilinde Math Modülü Kullanımı

Python Makaleleri
Python Dilinde Math Modülü Kullanı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 `SELECT DISTINCT` Kullanımı
Bu ilginizi çekebilir

SQL Dilinde `SELECT DISTINCT` Kullanımı

Veritabanı yönetim sistemlerinde, sorgulama işlemleri sırasında sonuç kümesindeki...