SQL’de veri filtreleme, özellikle büyük veri kümelerinde çalışırken sorguların doğruluğunu ve verimliliğini artırmanın önemli bir yoludur. WHERE koşulu, verilerinizi belirli kriterlere göre filtrelemenizi sağlayarak, daha spesifik analizler yapmanıza olanak tanır. Bu yazıda, WHERE koşulunun temellerini, operatörlerle nasıl zenginleştirilebileceğini ve gelişmiş kullanım tekniklerini inceleyeceğiz.
WHERE Koşulu
WHERE ifadesi, SQL sorgularında en yaygın kullanılan filtreleme aracıdır. Bu koşul, sorgu sonuçlarında sadece belirli bir kritere uyan verileri döndürmek için kullanılır.
Temel WHERE Koşulu:
WHERE koşulu, belirli bir sütunun bir değere eşit olup olmadığını kontrol ederek veri filtrelemesi yapar. En basit haliyle WHERE, eşitlik kontrolü için kullanılır:
SELECT * FROM tablo_adı WHERE sütun1 = ‘değer’;
Bu sorgu, sütun1‘in ‘değer’ olduğu tüm satırları döndürür. Bu temel kullanımla birlikte WHERE koşulu, yalnızca belirli verilerle çalışmanıza olanak sağlar.
Karşılaştırma Operatörleri: WHERE koşulu sadece eşitlik değil, aynı zamanda karşılaştırma operatörleri ile de kullanılabilir:
- <: Küçük
- >: Büyük
- <=: Küçük veya eşit
- >=: Büyük veya eşit
- != veya <>: Eşit değil
Örneğin, bir sütundaki verileri belirli bir değerden büyük olanları seçmek isterseniz:
SELECT * FROM tablo_adı WHERE sütun1 > 10;
Bu sorgu, sütun1 değeri 10’dan büyük olan tüm satırları döndürür.
AND ve OR Operatörleri:
SQL sorgularında birden fazla koşulu birleştirmek için AND ve OR operatörleri kullanılır.
- AND: Her iki koşulun da sağlandığı satırları döndürür.
- OR: En az bir koşulun sağlandığı satırları döndürür.
Örneğin, hem sütun1‘in ‘değer1’ olduğu, hem de sütun2‘nin ‘değer2’ olduğu satırları çekmek için:
SELECT * FROM tablo_adı WHERE sütun1 = ‘değer1’ AND sütun2 = ‘değer2’;
Bu sorgu, her iki koşulu da karşılayan satırları döndürecektir.
Eğer her iki koşuldan biri sağlanıyorsa, yani koşullar arasında bir “veya” durumu varsa:
SELECT * FROM tablo_adı WHERE sütun1 = ‘değer1’ OR sütun2 = ‘değer2’;
Bu sorgu, ya sütun1 ‘değer1’ olacak ya da sütun2 ‘değer2’ olacak şekilde sonuç döndürür.
IN ve NOT IN:
Belirli bir değerin bir dizi değer arasında olup olmadığını kontrol etmek için IN kullanılır. IN, aynı anda birden fazla değeri kontrol etmenin kısa ve etkili bir yoludur. Örneğin:
SELECT * FROM tablo_adı WHERE sütun1 IN (‘değer1’, ‘değer2’, ‘değer3’);
Bu sorgu, sütun1‘in ‘değer1’, ‘değer2’ veya ‘değer3’ olduğu satırları döndürür.
Aksi durumları kontrol etmek için NOT IN kullanılır:
SELECT * FROM tablo_adı WHERE sütun1 NOT IN (‘değer1’, ‘değer2’);
Bu sorgu, sütun1‘in ‘değer1’ ve ‘değer2’ dışında bir değer olduğu satırları döndürecektir.
BETWEEN ve LIKE:
Belirli bir aralıktaki değerleri veya belirli bir desene uyan değerleri filtrelemek için BETWEEN ve LIKE ifadeleri kullanılır.
- BETWEEN: Bir aralık içindeki değerleri bulmak için kullanılır. Örneğin, sütun1‘deki değerlerin 10 ile 20 arasında olanlarını bulmak için:
SELECT * FROM tablo_adı WHERE sütun1 BETWEEN 10 AND 20;
Bu sorgu, sütun1 değeri 10 ile 20 arasında olan tüm satırları döndürür.
- LIKE: Belirli bir desene uyan verileri aramak için kullanılır. Örneğin, isimlerin “A” harfi ile başladığı satırları bulmak için:
SELECT * FROM tablo_adı WHERE isim LIKE ‘A%’;
Bu sorgu, isim sütununda “A” harfi ile başlayan tüm satırları döndürür. % sembolü herhangi bir karakter dizisini temsil eder. LIKE ile desenli arama işlemleri yapılabilir; bu da özellikle metin tabanlı filtrelemelerde oldukça kullanışlıdır.
WHERE Koşulunun İleri Kullanımı:
Alt Sorgular (Subqueries):
Bir WHERE koşulu içinde alt sorgular kullanarak, daha karmaşık filtreleme işlemleri gerçekleştirebilirsiniz. Alt sorgular, bir sorgunun sonucunu başka bir sorguda kullanmanıza olanak tanır. Örneğin:
SELECT * FROM tablo_adı WHERE sütun1 = (SELECT MAX(sütun1) FROM tablo_adı);
Bu sorgu, sütun1 değerinin en yüksek olduğu satırı döndürecektir.
CASE İfadeleri:
SQL’de CASE ifadesi, koşullara bağlı olarak farklı sonuçlar döndürmek için kullanılır. Bir WHERE koşulunda CASE ifadesi ile çeşitli koşullara göre farklı değerler döndürebilirsiniz. Örneğin:
SELECT CASE
WHEN sütun1 > 100 THEN ‘Yüksek’
ELSE ‘Düşük’
END AS Değer_Durumu
FROM tablo_adı;
Bu sorgu, sütun1 değeri 100’den büyükse ‘Yüksek’, değilse ‘Düşük’ olarak sonuç döndürecektir.
SQL’deki WHERE koşulu, verileri filtrelemek ve yalnızca belirli kriterlere uyan kayıtlarla çalışmak için vazgeçilmez bir araçtır. Basit karşılaştırmalardan gelişmiş alt sorgulara ve desen eşleşmelerine kadar geniş bir yelpazede kullanımı olan WHERE koşulu, SQL sorgularının esnekliğini ve gücünü artırır. SQL eğitimi ile bu teknikleri öğrenmek ve uygulamak, veri tabanı yönetimi ve analizi süreçlerinizi daha etkili ve verimli hale getirecektir.