Ana içeriğe atla

SQL'de Join'ler Eğitimi

Bu eğitim, bir SQL Server'da birincil ve yabancı anahtarları kullanarak tabloların nasıl birleştirileceğini açıklar.
Güncel 3 Eki 2026  · 5 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

SQL Server, ilişkisel bir veritabanı yönetim sistemidir. İlişkisel veritabanının temel ilkelerinden biri, verilerin birden fazla tabloya dağıtılarak saklanmasıdır.

İlişkisel veritabanı yönetim sistemi

İhtiyacımız olan verileri çıkarmak için tabloları birleştirebilmemiz gerekir. Tabloları birleştirmek için primary ve foreign anahtarları kullanırız.

Birincil Anahtar

Birincil anahtar, bir tablodaki her bir satırı benzersiz şekilde tanımlamak için kullanılan bir sütundur. Bu benzersizlik, kimlik sütunu olarak artan bir tamsayı kullanılarak sağlanabilir. Ya da bazen mevcut sütunlar doğal olarak benzersiz değerler içerir ve bunlar da kullanılabilir.

Aşağıdaki örnekte, artist tablosunun ilk birkaç satırını görebiliriz. İki sütunu vardır: artist_id ve name. artist_id sütunu bu tablo için birincil anahtar görevi görür; bir tamsayı sütunudur ve her değer farklıdır.

+-----------+-------------------+
| artist_id | name              |
|-----------+-------------------|
| 1         | AC/DC             |
| 2         | Accept            |
| 3         | Aerosmith         |
| 4         | Alanis Morissette |
| 5         | Alice In Chains   |
+-----------+-------------------+

Şimdi de album tablosuna bakalım. Birincil anahtarı görebiliyor musunuz? Evet, album_id sütunu. Birincil anahtarın "tablo-adı alt çizgi id" şeklinde adlandırılması yaygındır. Ancak fark edeceğiniz üzere bir de artist_id sütunu var. Bu da tamsayılardan oluşur ve artist tablosundaki artist_id sütunuyla aynı ada sahiptir. Bu ne anlama geliyor?

+----------+-------------------------+-----------+
| album_id | title                   | artist_id |  
|----------+-------------------------+-----------|
| 1        | For Those About To Rock | 1         |
| 2        | Balls to the Wall       | 2         |
| 3        | Restless and Wild       | 2         |
| 4        | Let There Be Rock       | 1         |
| 5        | Big Ones                | 3         |
+----------+-------------------------+-----------+

Yabancı Anahtarlar

Önceki çıktıya bakarak, artist tablosundaki artist_id sütununun album tablosu için bir Foreign_key (yabancı anahtar) görevi gördüğü açıktır. FOREIGN KEY kısıtı, tablolar arasındaki bağlantıları bozacak işlemleri engellemek için kullanılır.

  • artist tablosu
+-----------+-------------------+
| artist_id | name              |
|-----------+-------------------|
| 1         | AC/DC             |
| 2         | Accept            |
| 3         | Aerosmith         |
| 4         | Alanis Morissette |
| 5         | Alice In Chains   |
+-----------+-------------------+
  • album tablosu
+----------+-------------------------+-----------+
| album_id | title                   | artist_id |  
|----------+-------------------------+-----------|
| 1        | For Those About To Rock | 1         |
| 2        | Balls to the Wall       | 2         |
| 3        | Restless and Wild       | 2         |
| 4        | Let There Be Rock       | 1         |
| 5        | Big Ones                | 3         |
+----------+-------------------------+-----------+

Bu, album tablosundaki artist_id değeri, artist tablosundaki artist_id ile eşleştiğinde, bu satırların bir JOIN ile birbirine bağlanabileceği anlamına gelir.

Album ve Artist Tablolarını Birleştirme

Artist tablosunun 1 ve 4. satırlarında artist_id değeri 1'dir. Artist tablosundaki artist_id 1, AC/DC'ye aittir. Dolayısıyla iki tabloyu birleştirdiğimizde, album tablosundan albüm ayrıntılarını ve artist tablosundan karşılık gelen sanatçı ayrıntılarını döndürürüz — her iki tabloda da ortak olan artist_id alanı kullanılarak birleştirilir.

Bu, bir inner join olarak bilinir.

SELECT
  album_id,
  title,
  album.artist_id,
  name AS artist_name
FROM album
INNER JOIN artist ON artist.artist_id = album.artist_id
WHERE album.artist_id = 1;
+----------+-------------------------+-----------+-------------+
| album_id | title                   | artist_id | artist_name |
|----------+---------------------------------------+-----------|
| 1        | For Those About To Rock | 1         | AC/DC       |
| 4        | Let There Be Rock       | 1         | AC/DC       |
+----------+-------------------------+-----------+-------------|

Album ve artist tablolarını, artist tablosundaki artist_id ile album tablosundaki artist_id değerlerini eşleştirerek birleştirdik.

Farklı tablolardan aynı adlı sütunları seçerken, sütun adını tam olarak belirtmeniz gerekir. Aksi takdirde SQL Server, sütunun hangi tablodan SELECT edileceğini bilemez.

Bir sütunu tam olarak belirtmek için, ilgili tablo adını bir nokta ile takip ederek başına eklemeniz gerekir.

Inner Join Söz Dizimi

İşte söz dizimini hatırlatmak için genel bir örnek. Bu durumda ana tablodan, yani table_A'dan ilgili sütunları seçiyor, ardından bu örnekte table_B olan birleştirmek istediğimiz ek sütunları seçiyoruz. Daha sonra INNER JOIN ve ON anahtar kelimelerini kullanarak her iki tablodan gerekli anahtar sütunları sağlayıp birleştirmeyi belirtiriz.

SELECT
    table_A.columnX,
    table_A.columnY,
    table_B.columnZ,
FROM table_A
INNER JOIN table_B ON table_B.foreign_key = table_A.primary_key;

WHERE Koşulu Kullanmamak

Bu örnekte bir WHERE koşulu belirtmiyoruz; bu nedenle, her iki tabloda da ortak olan artist_id sütununa göre, artist ve album tabloları arasındaki TÜM eşleşmelerin TÜM kombinasyonlarını döndürüyoruz.

SELECT
  album_id,
  title,
  album.artist_id,
  name AS artist_name
FROM album
INNER JOIN artist on artist.artist_id = album.artist_id;
+----------+---------------------------------------+-----------+
| album_id | title                   | artist_id | artist_name |
|----------+---------------------------------------+-----------|
| 1        | For Those About To Rock | 1         | AC/DC       |
| 4        | Let There Be Rock       | 1         | AC/DC       |
| 2        | Balls To The Wall       | 2         | Accept      |
| 3        | Restless and Wild       | 2         | Accept      |
+----------+---------------------------------------+-----------+

Birden Fazla Inner Join

INNER JOINS kullanarak ikiden fazla tabloyu da birleştirebilirsiniz. Her tablo kombinasyonu için ek bir INNER JOIN sağlamanız yeterlidir. Aşağıdaki kodumuzda A ve B tablolarını, ayrıca B ve C tablolarını birleştiriyoruz.

SELECT
  table_A.columnX,
  table_A.columnY,
  table_B.columnZ table_C columnW
FROM table_A
INNER JOIN table_B ON table_B.foreign_key = table_A.primary_key
INNER JOIN table_C ON table_C.foreign_key = table_B.primary_key;

Tabloları birleştirme hakkında daha fazla bilgi edinmek için, kursumuz Introduction to SQL Server içindeki bu videoya bakın.

Bu içerik, John MacKintosh'un hazırladığı DataCamp’in Introduction to SQL Server kursundan alınmıştır.

Konular
SQL
Veri Bilimi

SQL Kursları

Kurs

SQL ile Veri İşleme

4 sa
337.2K
Veri Bilimi sorularını yanıtlamak ve PostgreSQL’de analiz için sağlam veri kümeleri hazırlamak üzere gerekli karmaşık SQL sorgularında ustalaşın.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör