SQL Alt Sorgular: Veri Analizinde Güçlü Bir Araç - DERSLER - BİLGİ MERKEZİ | Bilginin Merkezi

SQL Alt Sorgular: Veri Analizinde Güçlü Bir Araç - DERSLER - BİLGİ MERKEZİ | Bilginin Merkezi

SQL Alt Sorgular: Veri Analizinde Güçlü Bir Araç


08 Ekim 2025

SQL Alt Sorgular: Veri Analizinde Güçlü Bir Araç

SQL (Structured Query Language), veritabanı yönetim sistemleriyle iletişim kurmak için kullanılan standart bir dildir. Verileri sorgulamak, eklemek, güncellemek ve silmek gibi birçok işlemi SQL komutları aracılığıyla gerçekleştirebiliriz. SQL'in sunduğu güçlü araçlardan biri de "alt sorgular"dır (subqueries).

Alt Sorgu Nedir?

Alt sorgu, başka bir SQL sorgusunun içine yerleştirilmiş bir SQL sorgusudur. Başka bir deyişle, bir sorgu içinde çalışan sorgudur. Alt sorgular, daha karmaşık veri analizleri yapmak ve daha spesifik sonuçlar elde etmek için kullanılır. Genellikle WHERE, HAVING veya SELECT ifadelerinde kullanılırlar.

Alt Sorguların Kullanım Alanları

Alt sorgular, veri manipülasyonu ve analizinde çok çeşitli kullanım alanlarına sahiptir. İşte bazı yaygın kullanım örnekleri:

  • WHERE İfadesinde Kullanım: Bir tablodan belirli bir koşulu sağlayan verileri çekmek için kullanılır. Koşul, başka bir tablodan elde edilen veriye bağlı olabilir.
  • HAVING İfadesinde Kullanım: Gruplandırılmış veriler üzerinde filtreleme yapmak için kullanılır. Gruplandırma sonucunda elde edilen değerler, bir alt sorgu tarafından belirlenen kriterlere göre filtrelenebilir.
  • SELECT İfadesinde Kullanım: Bir sorgunun sonuç kümesine yeni bir sütun eklemek için kullanılır. Yeni sütunun değeri, bir alt sorgu tarafından hesaplanır.
  • INSERT, UPDATE ve DELETE İfadelerinde Kullanım: Veri ekleme, güncelleme veya silme işlemlerini, başka bir tablodan elde edilen verilere göre yapmak için kullanılır.

Alt Sorgu Türleri

Alt sorgular, farklı kriterlere göre sınıflandırılabilir. En yaygın sınıflandırma yöntemleri şunlardır:

  • Tek Değer Döndüren Alt Sorgular (Scalar Subqueries): Bu tür alt sorgular, tek bir değer döndürür. Genellikle karşılaştırma operatörleriyle birlikte WHERE ifadesinde kullanılırlar.
  • Çoklu Değer Döndüren Alt Sorgular (Multiple-Row Subqueries): Bu tür alt sorgular, birden fazla değer döndürür. IN, ANY, ALL gibi operatörlerle birlikte WHERE ifadesinde kullanılırlar.
  • İlişkili Alt Sorgular (Correlated Subqueries): Bu tür alt sorgular, dış sorgudan gelen verilere bağımlıdır. Her bir dış sorgu satırı için tekrar tekrar çalıştırılırlar.
  • İlişkisiz Alt Sorgular (Non-Correlated Subqueries): Bu tür alt sorgular, dış sorgudan bağımsızdır. Sadece bir kez çalıştırılır ve sonucu dış sorgu tarafından kullanılır.

Alt Sorgu Örnekleri

Aşağıda, farklı alt sorgu türlerinin kullanımını gösteren örnekler bulunmaktadır:

WHERE İfadesinde Tek Değer Döndüren Alt Sorgu

Örneğin, "Müşteriler" tablosunda, "Siparişler" tablosundaki en yüksek sipariş tutarına sahip müşterinin bilgilerini çekmek isteyelim:

SELECT *FROM MüşterilerWHERE MüşteriID = (SELECT MüşteriID FROM Siparişler ORDER BY SiparişTutarı DESC LIMIT 1);

Bu sorguda, alt sorgu (SELECT MüşteriID FROM Siparişler ORDER BY SiparişTutarı DESC LIMIT 1) en yüksek sipariş tutarına sahip müşterinin ID'sini döndürür. Dış sorgu ise bu ID'ye sahip müşterinin tüm bilgilerini "Müşteriler" tablosundan çeker.

WHERE İfadesinde Çoklu Değer Döndüren Alt Sorgu

Örneğin, "Ürünler" tablosunda, "Kategoriler" tablosundaki "Elektronik" veya "Giyim" kategorilerine ait ürünleri çekmek isteyelim:

SELECT *FROM ÜrünlerWHERE KategoriID IN (SELECT KategoriID FROM Kategoriler WHERE KategoriAdı IN ('Elektronik', 'Giyim'));

Bu sorguda, alt sorgu (SELECT KategoriID FROM Kategoriler WHERE KategoriAdı IN ('Elektronik', 'Giyim')) "Elektronik" ve "Giyim" kategorilerinin ID'lerini döndürür. Dış sorgu ise bu ID'lere sahip ürünleri "Ürünler" tablosundan çeker.

İlişkili Alt Sorgu

Örneğin, "Müşteriler" tablosunda, her müşterinin ortalama sipariş tutarından daha yüksek sipariş veren müşterileri çekmek isteyelim:

SELECT *FROM Siparişler SWHERE SiparişTutarı > (SELECT AVG(SiparişTutarı) FROM Siparişler WHERE MüşteriID = S.MüşteriID);

Bu sorguda, alt sorgu (SELECT AVG(SiparişTutarı) FROM Siparişler WHERE MüşteriID = S.MüşteriID) her bir müşteri için ortalama sipariş tutarını hesaplar. Dış sorgu ise, sipariş tutarı bu ortalamadan yüksek olan siparişleri "Siparişler" tablosundan çeker. Burada S takma adını kullanarak dış sorgudaki Siparişler tablosuna referans veriyoruz. Bu, ilişkili alt sorgunun temel özelliğidir.

Alt Sorguların Performansı

Alt sorgular, karmaşık veri analizleri yapmak için güçlü bir araç olsa da, performans sorunlarına neden olabilirler. Özellikle ilişkili alt sorgular, her bir dış sorgu satırı için tekrar tekrar çalıştırıldığından, büyük veri kümelerinde performansı olumsuz etkileyebilir. Bu nedenle, alt sorguları kullanırken performansı göz önünde bulundurmak ve mümkünse daha verimli alternatifler (örneğin, JOIN işlemleri) kullanmak önemlidir.

Alt Sorgular Yerine JOIN Kullanımı

Çoğu durumda, alt sorgular yerine JOIN işlemleri kullanılarak aynı sonuçlar elde edilebilir. JOIN işlemleri, genellikle alt sorgulardan daha performanslıdır. Örneğin, yukarıdaki "Ürünler" ve "Kategoriler" tablosu örneğini JOIN kullanarak şu şekilde yazabiliriz:

SELECT Ürünler.*FROM ÜrünlerINNER JOIN Kategoriler ON Ürünler.KategoriID = Kategoriler.KategoriIDWHERE Kategoriler.KategoriAdı IN ('Elektronik', 'Giyim');

Bu sorgu, aynı sonucu daha performanslı bir şekilde elde etmemizi sağlar.

Sonuç

SQL alt sorguları, veri analizinde güçlü bir araçtır. Karmaşık sorgular yazmak ve belirli kriterlere göre veri filtrelemek için kullanılabilirler. Ancak, performansı göz önünde bulundurmak ve mümkünse daha verimli alternatifler (örneğin, JOIN işlemleri) kullanmak önemlidir. Veritabanı sistemlerinin optimizasyon yetenekleri de göz ardı edilmemelidir. Uygun indeksleme ve veritabanı yapılandırması, alt sorguların performansını artırabilir.

Umarım bu makale, SQL alt sorguları hakkında kapsamlı bir anlayış sağlamıştır. Veritabanı yönetim sistemlerinde veri analizi yaparken bu bilgileri kullanabilirsiniz.


Facebook X