PostgreSQL Birleştirme Türleri: İç, Dış, Sol, Sağ

⚡ Akıllı Özet

PostgreSQL Birleştirme işlemleri, paylaşılan bir anahtar kullanarak iki veya daha fazla tablodan satırları alır ve birleştirir; teta, EQUI ve natural gibi iç birleştirmelerin yanı sıra sol, sağ ve tam sonuçları kapsayan dış birleştirmeleri de içerir.

  • 🔗 birleştirin: Birleştirme işlemi, ortak bir anahtar temelinde birden fazla tablodaki sütunları bir araya getirir.
  • 🎯 İç birleşim: İç birleştirmeler yalnızca birleştirme koşulunun sağlandığı satırları döndürür.
  • ⬅️ Sol yönden katılım: LEFT OUTER JOIN, sol tablodaki her satırı korur ve eşleşmeyen sağ satırlar için NULL değerleri ekler.
  • ➡️ Sağ Üyelik: RIGHT OUTER JOIN, sağ tablodaki her satırı korur ve eşleşmeyen sol satırlar için NULL değerleri ekler.
  • ???? Tam Katılım: FULL OUTER JOIN, eşleşme bulunmayan yerlerde NULL değerleri içeren her iki tablodaki tüm satırları döndürür.
  • 🤖 Yapay Zeka Yardımı: Yapay zekâ asistanları doğru birleştirme türünü seçer ve AÇIK koşulunu yazar.

PostgreSQL Birleştirme Türleri

Birleşmeler nelerdir PostgreSQL?

PostgreSQL Katıldı Birden fazla tablodan veri almak için JOIN (Join) işlemleri kullanılır. JOIN işlemleriyle, SELECT ve JOIN ifadelerini tek bir ifadede birleştirmek mümkündür. İfadeye bir JOIN koşulu eklenir ve koşulları karşılayan tüm satırlar döndürülür. Farklı tablolardaki değerler, ortak sütunlara göre birleştirilir. Ortak sütun genellikle ilk tablodaki birincil anahtar ve ikinci tablodaki yabancı anahtardır.

PostgreSQL Birleştirme Türleri

İki tür birleştirme vardır PostgreSQL:

  • İç Birleşimler
  • Dış Birleşimler

PostgreSQL İç birleşim

3 tür İç Birleştirme vardır PostgreSQL:

  • Teta katılımı
  • Doğal birleştirme
  • EQUI'ye katılma

Tetaya Katılma

Teta birleşimi, kişinin teta tarafından temsil edilen koşula göre iki tabloyu birleştirmesine olanak tanır. Theta birleşimleri tüm karşılaştırma operatörleriyle çalışabilir. Çoğu durumda teta birleşimine iç birleştirme adı verilir.

Theta join, JOIN'in en temel türüdür. JOIN koşulunun sağlandığı tabloların tüm satırlarını döndürür.

Sözdizimi:

SELECT columns
FROM table-1
INNER JOIN table-2
ON table-1.column = table-2.column;

Demo veritabanının aşağıdaki tablolarını göz önünde bulundurun:

Kitap:

PostgreSQL Tetaya Katılma

Fiyat:

PostgreSQL Tetaya Katılma

Her kitabın adını ve karşılık gelen Fiyatını görmek istiyoruz. Aşağıdaki komutu çalıştırabiliriz:

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Aşağıdakini döndürecektir:

PostgreSQL Tetaya Katılma

Yalnızca 3 satır birleştirme koşulunu karşıladı.

EQUI'ye Katılın

EQUI birleşimi bize birincil anahtar/yabancı anahtar ilişkisine dayalı olarak iki tabloyu birleştirmenin bir yolunu sağlar. Örneğin:

SELECT *
FROM Book
JOIN Price ON Book.id = Price.id;

Aşağıdakini döndürecektir:

PostgreSQL EQUI'ye Katılın

Her iki tablodan da ortak sütunlara yani id sütununa göre kayıtlar döndürülmüştür.

Doğal Birleştirme

Bu birleştirme türü bize EQUI birleştirmesi yazmanın başka bir yolunu sağlar. Aşağıda gösterildiği gibi NATURAL anahtar kelimesini ekleyerek önceki örneğimizi geliştirebiliriz:

SELECT *
FROM Book
NATURAL JOIN Price;

Aşağıdakini döndürecektir:

PostgreSQL Doğal Birleştirme

Yalnızca bir kimlik sütunu döndürüldü. NATURAL JOIN, kimlik sütununun iki tabloda ortak olduğunu fark edebildi. Sadece bir tanesi iade edildi.

PostgreSQL Dış Birleştirme

3 tür Dış Birleştirme vardır PostgreSQL:

  • Sol dış katılma
  • Sağ Dış Birleştirme
  • Tam Dış Birleştirme

PostgreSQL Sol dış katılma

LEFT OUTER JOIN, sol taraftaki tablodaki tüm satırları ve yalnızca sağ taraftaki tabloda birleştirme koşulunun karşılandığı satırları döndürür.

Sözdizimi:

SELECT columns
FROM table-1
LEFT OUTER JOIN table-2
ON table-1.column = table-2.column;

Her kitabın adını ve karşılık gelen Fiyatını görmemiz gerekiyor. Aşağıdaki komutu çalıştırabiliriz:

SELECT Book.name, Price.price
FROM Book
LEFT JOIN Price
ON Book.id = Price.id;

Bu, aşağıdakileri döndürür:

PostgreSQL Sol dış katılma

Kitap tablosundaki 4 satırın tümü döndürüldü. Fiyat tablosundaki yalnızca 3 satır birleştirme koşulunu karşıladı. Bu nedenle iade edildiler. Son kitabın karşılık gelen fiyat değeri yok.

PostgreSQL Sağ Dış Birleştirme

RIGHT OUTER JOIN, birleştirme koşulunun karşılandığı sağ taraftaki tablodaki tüm satırları ve sol taraftaki tablodaki satırları döndürür.

Sözdizimi:

SELECT columns
FROM table-1
RIGHT OUTER JOIN table-2
ON table-1.column = table-2.column;

Örneğin:

SELECT Book.name, Price.price
FROM Book
RIGHT JOIN Price
ON Book.id = Price.id;

Bu, aşağıdakileri döndürür:

PostgreSQL Sağ Dış Birleştirme

Fiyat tablosundaki tüm satırlar döndürüldü. Kitap tablosunda ise yalnızca birleştirme koşulunu karşılayan satırlar döndürüldü. Eşleşme bulunamadığı için 3. satırda isim alanı için değer yok.

Tam Dış Katılım PostgreSQL

Bu JOIN türü, birleştirme koşulunun karşılanmadığı durumlarda sol taraftaki tablodaki tüm satırları ve sağ taraftaki tablodaki tüm satırları boş değerlerle döndürür.

Sözdizimi:

SELECT columns
FROM table-1
FULL OUTER JOIN table-2
ON table-1.column = table-2.column;

Örneğin:

SELECT Book.name, Price.price
FROM Book
FULL OUTER JOIN Price
ON Book.id = Price.id;

Bu, aşağıdakileri döndürür:

PostgreSQL Tam Dış Birleştirme

Tüm tablolardaki tüm satırlar, eşleşme bulunamayan boş değerlerle birlikte döndürüldü.

pgAdmin'i kullanma

Yukarıdaki işlemler pgAdmin'de şu şekilde gerçekleştirilebilir. Aşağıdaki bölümlerde her bir birleştirme türü adım adım açıklanmaktadır.

pgAdmin İç Birleştirme

Aşağıdaki adımlar, pgAdmin'de her bir iç birleştirme varyantının nasıl çalıştırılacağını göstermektedir.

Theta Nasıl Kullanılır? PostgreSQL pgAdmin'i kullanma

Aşağıda Theta Join'i kullanmak için gereken adımlar yer almaktadır. PostgreSQL pgAdmin'i kullanarak:

Adım 1) pgAdmin hesabınıza giriş yapın

Kimlik bilgilerinizi kullanarak pgAdmin'i açın ve Giriş yapın

Adım 2) Demo veritabanı oluşturun

  • Soldaki gezinme çubuğundan Veritabanları'na tıklayın.
  • Demo'yu tıklayın.

pgAdmin İç Birleştirme

Adım 3) Sorguyu yazın

Sorgu düzenleyicisine aşağıdaki sorguyu yazın:

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Adım 4) Sorguyu yürütün

Yürüt düğmesine tıklayın

pgAdmin İç Birleştirme

Aşağıdaki sonucu döndürmesi gerekir:

pgAdmin İç Birleştirme

EQUI'ye Katılın

) 1 Adım pgAdmin hesabınıza giriş yapın.

) 2 Adım

  • Soldaki gezinme çubuğundan Veritabanları'na tıklayın.
  • Demo'yu tıklayın.

pgAdmin EQUI Katıl

) 3 Adım Sorgu düzenleyicisine sorguyu yazın:

SELECT *
FROM Book
JOIN Price ON Book.id = Price.id;

) 4 Adım Yürüt düğmesine tıklayın.

pgAdmin EQUI Katıl

Aşağıdaki sonucu döndürmesi gerekir:

pgAdmin EQUI Katıl

Doğal Birleştirme

) 1 Adım pgAdmin hesabınıza giriş yapın.

) 2 Adım

  • Soldaki gezinme çubuğundan Veritabanları'na tıklayın.
  • Demo'yu tıklayın.

pgAdmin Doğal Katılma

) 3 Adım Sorgu düzenleyicisine sorguyu yazın:

SELECT *
FROM Book
NATURAL JOIN Price;

) 4 Adım Yürüt düğmesine tıklayın.

pgAdmin Doğal Katılma

Aşağıdaki sonucu döndürmesi gerekir:

pgAdmin Doğal Katılma

pgAdmin Basit İç Birleştirme

) 1 Adım pgAdmin hesabınıza giriş yapın.

) 2 Adım

  • Soldaki gezinme çubuğundan Veritabanları'na tıklayın.
  • Demo'yu tıklayın.

pgAdmin Basit İç Birleştirme

) 3 Adım Sorgu düzenleyicisine sorguyu yazın:

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

) 4 Adım Yürüt düğmesine tıklayın.

pgAdmin Basit İç Birleştirme

Aşağıdaki sonucu döndürmesi gerekir:

pgAdmin Basit İç Birleştirme

pgAdmin Dış Katılma

Ardından, aşağıdaki adımları kullanarak pgAdmin'de üç dış birleştirme varyantını çalıştırın.

Sol dış katılma

) 1 Adım pgAdmin hesabınıza giriş yapın.

) 2 Adım

  • Soldaki gezinme çubuğundan Veritabanları'na tıklayın.
  • Demo'yu tıklayın.

pgAdmin Sol Dış Birleştirme

) 3 Adım Sorgu düzenleyicisine sorguyu yazın:

SELECT Book.name, Price.price
FROM Book
LEFT JOIN Price
ON Book.id = Price.id;

) 4 Adım Yürüt düğmesine tıklayın.

pgAdmin Sol Dış Birleştirme

Aşağıdaki sonucu döndürmesi gerekir:

pgAdmin Sol Dış Birleştirme

Sağ Dış Birleştirme

) 1 Adım pgAdmin hesabınıza giriş yapın.

) 2 Adım

  • Soldaki gezinme çubuğundan Veritabanları'na tıklayın.
  • Demo'yu tıklayın.

pgAdmin Sağ Dış Birleştirme

) 3 Adım Sorgu düzenleyicisine sorguyu yazın:

SELECT Book.name, Price.price
FROM Book
RIGHT JOIN Price
ON Book.id = Price.id;

) 4 Adım Yürüt düğmesine tıklayın.

pgAdmin Sağ Dış Birleştirme

Aşağıdaki sonucu döndürmesi gerekir:

pgAdmin Sağ Dış Birleştirme

Tam Dış Birleştirme

) 1 Adım pgAdmin hesabınıza giriş yapın.

) 2 Adım

  • Soldaki gezinme çubuğundan Veritabanları'na tıklayın.
  • Demo'yu tıklayın.

pgAdmin Tam Dış Birleştirme

) 3 Adım Sorgu düzenleyicisine sorguyu yazın:

SELECT Book.name, Price.price
FROM Book
FULL OUTER JOIN Price
ON Book.id = Price.id;

) 4 Adım Yürüt düğmesine tıklayın.

pgAdmin Tam Dış Birleştirme

Aşağıdaki sonucu döndürmesi gerekir:

pgAdmin Tam Dış Birleştirme

Bu Eğitimde kullanılan Veritabanını İndirin

SSS

Bir INNER JOIN yalnızca her iki tabloda da eşleşen satırları döndürür. Bir OUTER JOIN ise eşleşmeyen satırları da korur, eksik sütunları NULL ile doldurur ve hangi tablonun korunacağına bağlı olarak sol, sağ veya tam olabilir.

JOIN işlemi, eşleşen bir anahtar kullanarak farklı tablolardaki sütunları yan yana birleştirir ve her satırı genişletir. UNION işlemi ise iki sonuç kümesinin satırlarını dikey olarak üst üste yığar ve aynı sayıda sütun gerektirir.

Kendi kendine birleştirme (self join), iki tablo takma adını kullanarak bir tabloyu kendi kendine birleştirir. Bu, bir tablodaki satırları karşılaştırmak için kullanışlıdır; örneğin, aynı tabloda saklanan çalışanları yöneticilerle eşleştirmek gibi.

Çapraz birleştirme (CROSS JOIN), birinci tablonun her satırını ikinci tablonun her satırıyla eşleştirerek Kartezyen çarpımı döndürür. Herhangi bir ON koşulu kullanmadığı için çok büyük sonuç kümelerini hızlı bir şekilde üretebilir.

Evet. Bir sorguda birden fazla JOIN koşulunu zincirleyebilir, her ek tabloya başka bir JOIN ve ON koşulu ekleyebilirsiniz. PostgreSQL Bunları değerlendirerek tek bir birleşik sonuç kümesi oluşturur.

GitHub Copilot gibi yapay zeka asistanları, doğru birleştirme türünü önerir, yabancı anahtarlardan ON koşulunu yazar ve yanlışlıkla Kartezyen çarpımına neden olacak eksik bir koşulu işaretleyerek yaygın birleştirme hatalarını azaltır.

Evet. Yapay zeka asistanları sorgu planını okuyabilir, birleştirme sütunlarında indeksler önerebilir ve birleştirme sırasını veya koşullarını yeniden yazabilir. Veritabanı yine de doğruluğu denetler, bu nedenle üretimde çalıştırmadan önce her öneriyi gözden geçirin.

Tek bir birleştirme işlemi her zaman en hızlısı değildir; performans indekslere, satır sayısına ve filtrelere bağlıdır. İndeksli anahtarlar üzerinde yapılan INNER JOIN işlemleri genellikle verimlidir, oysa büyük indekslenmemiş tablolar üzerinde yapılan FULL OUTER JOIN işlemleri genellikle en maliyetli olanlardır.

Bu yazıyı şu şekilde özetleyin: