SQL Server İle Gelişmiş Sorgulama Teknikleri ve İpuçları

Herkese merhabalar,

SQL’in temelini öğrendikten sonra verilerinizi daha etkili bir haliyle sorgulamak ve verileri işleyebilmek için gelişmiş teknik ve birtakım ipuçlarına ihtiyaç duyabilirsiniz. Bu yazı, SQL sorgu dilinde orta düzeyde tekniklere odaklanarak verileri verimli bir şekilde yönetmenize yardımcı olacaktır.

SQL sorgulama dilinde, tabloları birleştirmek için Join, Union gibi birçok operatör bulunmaktadır. Bu operatörler, iki ya da daha fazla farklı tablolar arasında verileri birleştirmek veya farklı sorgu sonuçlarını birleştirmek için kullanılır. Şimdi, bu operatörlerin kullanımına ve detaylarına daha yakından bakalım.

SQL JOIN Kullanımı

JOIN, iki veya daha fazla tabloyu birleştirmek amacıyla kullanılır. JOIN kullanımı ile tablolar sanal olarak birleştirilir ve anlamlı veriler bir arada görülmüş olur. Sanal olarak birleştirme bir anlamda veri tekrarının önüne geçer. Çünkü iki tablo arasında ilişki kurmak istediğimizde tekrar bir tablo oluşturup verileri tekrarlamaktansa JOIN ifadesi kullanarak tabloların birleşmiş hallerini sanal olarak görmüş oluruz.

SELECT tablo_adi.sutun_adi, ...
  FROM tablo_A
  {LEFT JOIN / RIGHT JOIN / INNER JOIN} tablo_B
 ON tablo_A.sutun_adi = tablo_B.sutun_adi;
INNER JOIN (İç Birleştirici)

INNER JOIN, en sık kullanılan JOIN türüdür ve iki tablodaki ortak sütunları kullanarak birleştirme işlemi yapar. Yani tabloların kesişimini oluşturmuş olur. Örneğin müşteri tablosu ile sipariş tablosunu ele alalım.

Müşteri Tablosu

İki tablodaki ortak sütun, MusteriID olduğu için INNER JOIN kullanarak iki tabloyu MusteriID sütununa göre birleştirebiliriz.

SELECT Musteri.Sehir, Siparis.Tutar
FROM Musteri
INNER JOIN Siparis ON 
Musteri.MusteriID = Siparis.MusteriID;

Bu sorgu ile müşterilere ait şehir bilgisi ile siparişlere ait tutar bilgisini birleştirerek karşılaştırabiliriz.

Sorgu Sonucu

Veya iki tablonun tüm sütunlarını görmek istersek;

SELECT *
FROM Musteri
INNER JOIN Siparis ON 
Musteri.MusteriID = Siparis.MusteriID;

kodunu kullanabiliriz. Bu durumda tablo şu şekilde görünecektir:

Birleşik Tablo Görünümü
OUTER JOIN (Dış Birleştirici)

OUTER JOIN operatörü, farklı tablolar arasında veri birleştirmek amacıyla kullanılır. Bu operatörün INNER JOIN’den farkı eşleşmeyen verileri de dahil etmesidir. OUTER JOIN, LEFT OUTER JOIN ve RIGHT OUTER JOIN olmak üzere iki türe ayrılır. LEFT OUTER JOIN, sol tablodaki tüm verileri ve sağ tablodaki eşleşen verileri dahil eder. RIGHT OUTER JOIN ise sağ tablodaki tüm verileri ve sol tablodaki eşleşen verileri dahil eder. Eğer satırlardan biri boşsa, tablonun geri döndürdüğü değerlerde “NULL” ifadesine rastlanır.

Örneğin, müşteri tablosu ve sipariş tablosunu düşünelim. Eğer bir müşteri, henüz sipariş vermediyse, böyle bir durumda OUTER JOIN kullanarak bu müşteriyi de sonuçlarımıza dahil edebiliriz.

SELECT Musteri.MusteriID, Siparis.Durum
FROM Musteri
LEFT JOIN Siparis ON Musteri.MusteriID = Siparis.MusteriID;

Sorgu sonucu dönen tablo şu şekildedir:

Sorgu Sonucu
CROSS JOIN (Çapraz Birleştirici)

Çapraz birleşim olarak da bilinen CROSS JOIN, ilk tablodaki her satırı ikinci tablodaki her satırla birleştirir. Kartezyen çarpımını alır da diyebiliriz.

SELECT * FROM Musteri, Siparis;

Bu komut çalıştırıldığında iki tabloda bulunan veriler birbiriyle birleşecektir. Herhangi bir koşul belirtilmediği için Müşteri tablosunda yer alan her satır, Sipariş tablosundaki her satırla eşleşir. Bu sorgu sonucunda 196 satırlık sanal tablo oluşur.

UNION Kullanımı

UNION operatörü, farklı sorgulardan elde edilen sonuçları birleştirmek için kullanılır. Birden fazla tabloda sorgu gerçekleştirmek için kullanılan bir yöntemdir. UNION kullanmak için birleştirilecek veri tablolarında belirlenen alanlar aynı sayıda kolon (sütun) içermeli ve aynı veri tipinde olmalıdır.

SELECT alan_adi FROM tablo1
UNION
SELECT alan_adi FROM tablo2

UNION operatörü, DISTINCT gibi davranır. Bu nedenle tekrar eden kayıtları döndürmez yani tekrarlanan kayıtlar bir kez alınır. Tekrar eden kayıtları da almak istiyorsanız o zaman kullanmanız gereken komut UNION ALL‘dır.

SELECT alan_adi FROM tablo1
UNION ALL
SELECT alan_adi FROM tablo2

Sonuç olarak, JOIN, UNION ve OUTER JOIN operatörleri, SQL sorgulama dilinde verileri birleştirme işlemini gerçekleştirmek için kullanılan önemli araçlardandır. İşletmenizdeki verileri daha etkili bir şekilde sorgulayıp analiz etmek amacıyla bu operatörleri doğru bir şekilde kullanmanız veri tabanının verimli kullanımına da yardımcı olabilir. Ayrıca bu operatörlere ve komutlara hakim olmak, verilerinizi birleştirirken daha iyi kararlar alabilmenizi sağlayabilir.

Buradan bu yazıda kullanmış olduğum veri tabanını indirerek sorguları deneyebilirsiniz.

Bir sonraki yazılarda SQL’de sorgu performansına dair birtakım durumlardan bahsedeceğim.

Yorum bırakın