🔍 SQL WHERE Kullanımı: Veri Filtreleme Rehberi
🚀 Bu Rehberde Ne Öğreneceksiniz?
Bu rehber, SQL’de WHERE yan tümcesiyle (clause) sorgu sonuçlarını filtrelemenin temellerini öğretir.
SELECT, UPDATE ve DELETE sorgularında hangi satırların etkileneceğini arama koşulları (search conditions) ile nasıl belirleyeceğinizi göreceksiniz.
Ayrıca AND, OR ve NOT gibi mantıksal operatörleri kullanarak daha karmaşık filtreler oluşturmayı adım adım öğreneceksiniz.
🧠 Teknik Özet
Konu: SQL’de WHERE yan tümcesi ile satır bazlı veri filtreleme
Amaç: Sorguların yalnızca belirli kriterlere uyan satırları işlemesini sağlamak
Adımlar:
- Örnek veritabanı oluşturma
- Basit WHERE koşullarıyla filtreleme
- Karşılaştırma operatörlerini kullanma
- Özel ifadeler (IS NULL, BETWEEN, IN, LIKE)
- Mantıksal operatörlerle (AND, OR, NOT) koşul birleştirme
- Parantezle öncelik belirleme
⚙️ 1. Örnek Veritabanı Kurulumu
MySQL'e Bağlanın
mysql -u rabisu_golfer -p
➡️ MySQL komut satırına giriş yapar.
Veritabanını ve Tabloyu Oluşturun
CREATE DATABASE golf_vt;
USE golf_vt;
➡️ Yeni bir test veritabanı oluşturur ve aktif hale getirir.
CREATE TABLE golfculer (
isim VARCHAR(20),
oynanan_round INT,
en_iyi INT,
en_kotu INT,
ortalama DECIMAL(4,1),
galibiyet INT
);
➡️ Golfçü performanslarını tutan tabloyu oluşturur.
Örnek Verileri Ekleyin
INSERT INTO golfculer VALUES
('Can', 22, 68, 103, 84.6, 3),
('Pat', 25, 65, 74, 68.7, 9),
('Gözde', 11, 78, 118, 97.6, 0),
('Deniz', 23, 70, 92, 78.8, 1),
('Alp', NULL, 63, 76, 68.5, 7),
('Ayşe', NULL, 69, 84, 76.7, 4),
('Rüya', 18, 67, 92, 81.3, 1);
➡️ Yedi golfçü kaydını tabloya ekler.
🎯 2. Temel WHERE Koşulları
Sözdizimi
SELECT sütunlar
FROM tablo
WHERE arama_koşulu;
➡️ Koşulun doğru olduğu satırları döndürür.
Eşitlik (=)
SELECT isim, galibiyet
FROM golfculer
WHERE galibiyet = 1;
➡️ Galibiyet sayısı tam 1 olan golfçüleri döndürür.
Eşit Değil (<>)
SELECT isim, galibiyet
FROM golfculer
WHERE galibiyet <> 1;
➡️ Galibiyet sayısı 1 olmayan tüm kayıtları gösterir.
Karşılaştırmalar
Kodu kopyala
SELECT isim, galibiyet
FROM golfculer
WHERE galibiyet > 1;
➡️ Galibiyet sayısı 1’den büyük olan satırları getirir.
🧩 3. Özel Koşul Operatörleri
Boş Değer Kontrolü (IS NULL)
SELECT isim, oynanan_round
FROM golfculer
WHERE oynanan_round IS NULL;
➡️ oynanan_round değeri bilinmeyen (NULL) golfçüleri bulur.
Aralık Belirleme (BETWEEN)
SELECT isim, en_iyi
FROM golfculer
WHERE en_iyi BETWEEN 67 AND 73;
➡️ En iyi skoru 67–73 aralığında olan golfçüleri listeler.
Küme Üyeliği (IN)
SELECT isim, en_iyi
FROM golfculer
WHERE en_iyi IN (65, 67, 69);
➡️ en_iyi değeri bu listedeki değerlerden biri olan satırları getirir.
Desen Eşleştirme (LIKE)
SELECT isim
FROM golfculer
WHERE isim LIKE 'A%';
➡️ İsmi “A” harfiyle başlayan golfçüleri bulur.
🔗 4. Çoklu Koşul Birleştirme
VE (AND)
SELECT isim, en_iyi, en_kotu
FROM golfculer
WHERE en_iyi < 70 AND en_kotu < 96;
➡️ Her iki koşulu da sağlayan satırları döndürür.
VEYA (OR)
SELECT isim, en_iyi, en_kotu
FROM golfculer
WHERE en_iyi < 70 OR en_kotu < 96;
➡️ Koşullardan en az birini sağlayan satırları döndürür.
Önceliklendirme (Parantez)
SELECT isim, ortalama, en_kotu, oynanan_round
FROM golfculer
WHERE (ortalama < 85 OR en_kotu < 95) AND oynanan_round BETWEEN 19 AND 23;
➡️ Parantez, hangi koşulun önce çalışacağını belirler.
🚫 5. Sonuçları Hariç Tutma (NOT)
IS NOT NULL
SELECT isim, oynanan_round
FROM golfculer
WHERE oynanan_round IS NOT NULL;
➡️ oynanan_round değeri dolu olan satırları getirir.
NOT LIKE
SELECT isim
FROM golfculer
WHERE isim NOT LIKE 'R%';
➡️ İsmi “R” ile başlamayan kayıtları döndürür.
Gruplu Dışlama
SELECT isim, ortalama, en_iyi, galibiyet
FROM golfculer
WHERE NOT (ortalama < 80 AND en_iyi < 70) OR galibiyet = 9;
➡️ Belirli koşulu sağlayan satırları hariç tutar, ancak galibiyet = 9 olanları dahil eder.
💬 Sıkça Sorulan Sorular (SSS)
- WHERE sadece SELECT ile mi kullanılır?
Hayır. UPDATE ve DELETE sorgularında da hangi satırların etkileneceğini belirler.
- WHERE ve HAVING farkı nedir?
WHERE tek tek satırları filtreler; HAVING ise GROUP BY sonrası oluşturulan grupları filtreler.
- LIKE büyük/küçük harfe duyarlı mı?
MySQL’de genelde değildir, PostgreSQL’de ise duyarlıdır.
- NULL değerlerini neden = ile karşılaştıramam?
NULL bilinmeyen değeri temsil eder. Bu yüzden = yerine IS NULL kullanılır.
- Performans açısından en hızlı koşul nedir?
İndeksli sütunlarda doğrudan eşitlik (=) sorguları genellikle en hızlı olanlardır.
🧭 Sonuç
Bu rehberde SQL’de WHERE yan tümcesiyle veri filtreleme tekniklerini öğrendiniz. Artık karşılaştırma, aralık ve mantıksal operatörleri kullanarak sorgularınızı hassaslaştırabilirsiniz.
Daha hızlı sorgular ve güçlü veritabanı performansı için projelerinizi Rabisu Bulut platformunda deneyebilir, yüksek hızlı SQL altyapınızı hemen kurabilirsiniz 🚀