1
SQL Join nedir? SQL Join işlemleri nasıl yapılır?
SQL ile sorguda birden fazla tablo kullanarak veri çekme işlemini nasıl yapabiliriz?
SQL ile tablo birleştirme Join ile nasıl yapılır?
SQL Join türleri nelerdir?
Inner Join, Left ve Right Outer Join, Full Outer Join, Natural Join?
0
Veri tabanları (Database) sadece 1 tablodan oluşmaz. Bunun sebebi genellikle veri tekrarını önlemektir. Bu şekilde oluşturulmuş veri tabanlarında, tablolardaki değerleri birbirleriyle ilişkili bir şekilde kullanabilmek için “Tablo Birleştirme” işlemi yapılır.
Bu birleştirme işlemi 2 farklı tablo için de söz konusu olabilmektedir. ikiden fazla sayıda tablo için de söz konusu olabilir. Dikkat edilmesi gereken nokta, tabloların Primary Key ve Foreign Key‘ler ile birbirlerine bağlanmış olması gerektiğidir.
İhtiyacımız olduğunda tablo birleştirme işlemlerini gerçekleştirdiğimizde birbiri ile ilişkili verilerimizi farklı tablolardaki birbirini tamamlayan verilerin tek bir tablo gibi sorgu sonucunda birleştirilerek verilerimizin listelenmesine olanak sağlayan ifadelere JOIN denilmektedir.
JOIN ifadesi ile bir tabloyu kendisiyle birleştirebileceğimiz gibi birden fazla tabloyu da bu ifade ile birleştirmek mümkündür. Bu birleştirme işlemlerini gerçekleştirdiğimizde istediğimiz işlemlere yönelik farklı metotlar kullanabiliriz. Bu farklı metotlar JOIN ifadesi ile kendi içinde farklı komutlar vasıtasıyla gerçekleştirilmektedir. Dolayısıyla, veri tabanı programlamalarında JOIN ifadeleri olmazsa olmazlar arasındadır.
Birden Fazla Tabloda Tutulan İlişkisel Verileri Almak
Yukarıda bahsettiğimiz gibi Film bilgilerinin tutuldugu bir veritabanimiz olsun. Bu veritabaninda Filmler ve Film Türlerini tutmak için 2 farkli tablo kullanalim. 1. tablo film bilgilerini 2. tablo film türlerini ait bilgilerini tutsun. Örnegimizde kullanacagimiz basit veritabanini kullanmak için asagidaki SQL scriptini kendi SQL server ımızda çalıştıralım.
INNER JOIN
Inner Join en çok kullanılan Join türüdür ve her iki tablodaki ortak kayıtları döndürür. Bir başka ifade ile iki tablonun kesişimini döndürür. Mesela film ve film türleri tablolarını birleştirmek istersek;
SELECT * FROM Filmler f INNER JOIN FilmTurleri ft ON f.film_tur_id = ft.tur_id
Sonuç kümesinde her iki tablonun kesişimini döndürmüş oluyor.
OUTER JOIN
Inner Join ile birleştirilecek tabloların kesişim kümeleri alınıyordu . Outer Join ile ilişkili olmayan satırlarda listelenir.
SELECT * FROM Filmler f OUTER JOIN FilmTurleri ft ON f.film_tur_id = ft.tur_id
LEFT ve RIGHT OUTER JOIN
Eğer bir tablodaki tüm kayıtlar ile diğer tablodaki birleştirme koşulunu sağlayan kayıtları döndürmek istersek Right veya Left Outer Join kullanırız.
LEFT JOIN : İlk (Filmler) tablo için boş olan verileri de göstermenizi sağlar. Yani Filmler tablosunda Tur_ID değeri boş olarak gösterilecektir.
SELECT * FROM Filmler f LEFT JOIN FilmTurleri ft ON f.film_tur_id = ft.tur_id
Yukarıdaki sorgu, türü olmayan filmler dahil tüm filmleri getirecektir.
RIGHT JOIN : İkinci (Film Türleri) tablo için boş olan verileri de göstermenizi sağlar. Aşağıdaki gibi kullanabilirsiniz ;
SELECT * FROM Filmler f RIGHT JOIN FilmTurleri ft ON f.film_tur_id = ft.tur_id
FULL JOIN : İki tablo için de boş olan değerlerle beraber gösterir.
SELECT * FROM Filmler f FULL OUTER JOIN FilmTurleri ft ON f.film_tur_id = ft.tur_id
NATURAL JOIN : Natural join, iki tablo arasında aynı isimde olan sütunları birbiriyle otomatik olarak bağlayan bir Join türüdür.
SELECT * FROM Filmler f NATURAL JOIN FilmTurleri ft
CROSS JOIN (Çapraz Birleştirici) : Kartezyen çarpım (cartesian product) olarak ta bilinen bu seçenekte ortak bir alan belirtilmesine gerek kalmadan iki tablo arasında tüm eşleştirmeleri listeler. Bunu da soldaki tablodaki her bir satıra karşılık sağdaki tablonun tüm satırlarını döndürerek gerçekleştirir.
SELECT * FROM Filmler f CROSS JOIN FilmTurleri ft
Syntax : Sözdizimi
SQL Join Syntax ile ilgili olarak şunları hatırlatmakta fayda vardır;
– Inner Join yerine sadece Join
– Left Outer Join yerine sadece Left Join
– Right Outer Join yerine sadece Right Join yazmamız yeterlidir.
0
tüm bilgiler ve paylaşılan konular için minnettarım çok sağ olun
Cevap yazabilmek için üye girişi yapmalısınız.
Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol