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.
İ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 |+-----------+-------------------+Altyapı:
Ş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|+----------+-------------------------+-----------+Altyapı:
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 |+-----------+-------------------+Altyapı:
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|+----------+-------------------------+-----------+Altyapı:
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
INNERJOIN artist ON artist.artist_id = album.artist_id
WHERE album.artist_id =1;Altyapı:
+----------+-------------------------+-----------+-------------+| album_id | title | artist_id | artist_name ||----------+---------------------------------------+-----------||1| For Those About To Rock |1|AC/DC||4| Let There Be Rock |1|AC/DC|+----------+-------------------------+-----------+-------------|Altyapı:
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.
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
INNERJOIN artist on artist.artist_id = album.artist_id;Altyapı:
+----------+---------------------------------------+-----------+| 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 |+----------+---------------------------------------+-----------+Altyapı:
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
INNERJOIN table_B ON table_B.foreign_key = table_A.primary_key
INNERJOIN table_C ON table_C.foreign_key = table_B.primary_key;Altyapı:
Tabloları birleştirme hakkında daha fazla bilgi edinmek için, kursumuz Introduction to SQL Server içindeki bu videoya bakın.
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.
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!
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.
İhtiyacımız olan verileri çıkarmak için tabloları birleştirebilmemiz gerekir. Tabloları birleştirmek için
primaryveforeignanahtarları 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,
artisttablosunun ilk birkaç satırını görebiliriz. İki sütunu vardır:artist_idvename.artist_idsütunu bu tablo için birincil anahtar görevi görür; bir tamsayı sütunudur ve her değer farklıdır.Şimdi de
albumtablosuna bakalım. Birincil anahtarı görebiliyor musunuz? Evet,album_idsütunu. Birincil anahtarın "tablo-adı alt çizgi id" şeklinde adlandırılması yaygındır. Ancak fark edeceğiniz üzere bir deartist_idsütunu var. Bu da tamsayılardan oluşur ve artist tablosundakiartist_idsütunuyla aynı ada sahiptir. Bu ne anlama geliyor?Yabancı Anahtarlar
Önceki çıktıya bakarak, artist tablosundaki
artist_idsütununun album tablosu için birForeign_key(yabancı anahtar) görevi gördüğü açıktır.FOREIGN KEYkısıtı, tablolar arasındaki bağlantıları bozacak işlemleri engellemek için kullanılır.artisttablosualbumtablosuBu, album tablosundaki
artist_iddeğeri, artist tablosundakiartist_idile eşleştiğinde, bu satırların birJOINile birbirine bağlanabileceği anlamına gelir.Album ve Artist Tablolarını Birleştirme
Artist tablosunun 1 ve 4. satırlarında
artist_iddeğeri 1'dir. Artist tablosundakiartist_id1, 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 olanartist_idalanı kullanılarak birleştirilir.Bu, bir
innerjoin olarak bilinir.Album ve artist tablolarını, artist tablosundaki
artist_idile album tablosundakiartist_iddeğ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
SELECTedileceğ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 örnektetable_Bolan birleştirmek istediğimiz ek sütunları seçiyoruz. Daha sonraINNER JOINveONanahtar kelimelerini kullanarak her iki tablodan gerekli anahtar sütunları sağlayıp birleştirmeyi belirtiriz.WHEREKoşulu KullanmamakBu örnekte bir
WHEREkoşulu belirtmiyoruz; bu nedenle, her iki tabloda da ortak olanartist_idsütununa göre, artist ve album tabloları arasındaki TÜM eşleşmelerin TÜM kombinasyonlarını döndürüyoruz.Birden Fazla Inner Join
INNER JOINSkullanarak ikiden fazla tabloyu da birleştirebilirsiniz. Her tablo kombinasyonu için ek birINNER JOINsağlamanız yeterlidir. Aşağıdaki kodumuzda A ve B tablolarını, ayrıca B ve C tablolarını birleştiriyoruz.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.