İleri Seçim Teknikleri

Veritabanı sözdizimi, kullanıcıların veritabanı üzerinde etkili sorgular çalıştırmasına olanak tanır. Bu makalede, ıleri seçim tekniklerinden LIKE operatörü, IN ve NOT IN, BETWEEN ve CASE kullanımları detaylı olarak ele alınmıştır.
LIKE Operatörü ile Desen Arama
LIKE
operatörü, belirli bir düzeni (pattern) karşılamak için kullanılır. Bu, genellikle metin tabanlı veri aramalarında kullanışlıdır.
Temel Kullanım
LIKE
operatörü iki joker karakter ile kullanılır:
- %: Sıfır veya daha fazla karakteri temsil eder.
- _: Tek bir karakteri temsil eder.
Örnek Sorgular:
-- ‘A’ harfiyle başlayan tüm isimleri getirir.
SELECT * FROM musteriler WHERE ad LIKE 'A%';
-- ‘son’ ile biten tüm şehirleri getirir.
SELECT * FROM sehirler WHERE isim LIKE '%son';
-- İkinci karakteri ‘e’ olan tüm kayıtlar.
SELECT * FROM urunler WHERE kod LIKE '_e%';
Avantajlar
- Dinamik aramaları kolaylaştırır.
- Büyük/küçük harf duyarlılığı, veritabanına bağlı olarak ayarlanabilir.
Performans İpucu
LIKE '%...%'
gibi sorgular dizinleri kullanamadığı için yavaş çalışabilir. Gerekliyse düzenli ifade (regex) veya full-text arama kullanılabilir.
IN ve NOT IN Kullanımı
IN
ve NOT IN
, bir alanın belirli bir liste içindeki değerlere eşit olup olmadığını kontrol eder.
IN Kullanımı
-- Belirli şehirlerdeki müşterileri getirir.
SELECT * FROM musteriler WHERE sehir IN ('Ankara', 'Istanbul', 'Izmir');
NOT IN Kullanımı
-- Belirli şehirlerde bulunmayan müşterileri getirir.
SELECT * FROM musteriler WHERE sehir NOT IN ('Ankara', 'Istanbul', 'Izmir');
Performans ve Kullanım
- İç içe sorgularla kombine edilebilir:
SELECT * FROM urunler WHERE kategori_id IN (SELECT id FROM kategoriler WHERE aktif = 1);
NULL
değerleriyle dikkatli olunmalıdır.NOT IN
, NULL değerler içeriyorsa beklenmedik sonuçlar verebilir.
BETWEEN ile Aralık Sorguları
BETWEEN
, bir alanın belirli bir aralıkta olup olmadığını kontrol eder. Sayısal, tarih ve metin değerleriyle kullanılabilir.
Sayısal Aralıklar
-- Fiyatı 100 ile 500 arasında olan ürünler.
SELECT * FROM urunler WHERE fiyat BETWEEN 100 AND 500;
Tarih Aralıkları
-- 2024 yılı içinde yapılan satışlar.
SELECT * FROM satislar WHERE tarih BETWEEN '2024-01-01' AND '2024-12-31';
Metin Aralıkları
-- ‘A’ ile ‘M’ arasında başlayan isimler.
SELECT * FROM musteriler WHERE ad BETWEEN 'A' AND 'M';
Performansı Artırma
BETWEEN
operatörü genellikle dizinlerden faydalanabilir, bu nedenle büyük veri setlerinde performans dostudur.
CASE ile Koşullu Değerler
CASE
, bir alanın değerine göre farklı sonuçlar döndürebilen koşullu bir yapıdır.
Temel Kullanım
SELECT
ad,
fiyat,
CASE
WHEN fiyat < 100 THEN 'Ucuz'
WHEN fiyat BETWEEN 100 AND 500 THEN 'Orta'
ELSE 'Pahali'
END AS fiyat_kategorisi
FROM urunler;
Gruplama ile Kullanım
-- Satış toplamlarını kategorilere göre gruplama.
SELECT
kategori_id,
SUM(tutar) AS toplam_tutar,
CASE
WHEN SUM(tutar) > 10000 THEN 'Yüksek'
ELSE 'Düşük'
END AS gelir_kategorisi
FROM satislar
GROUP BY kategori_id;
İçiçe CASE Kullanımı
Bir CASE yapısı içinde başka bir CASE yapısı kullanılabilir:
SELECT
ad,
CASE
WHEN fiyat < 50 THEN
CASE
WHEN stok > 10 THEN 'Ucuz ve Bol'
ELSE 'Ucuz ama Az'
END
ELSE 'Pahali'
END AS urun_degerlendirme
FROM urunler;
Bu makalede, LIKE
, IN/NOT IN
, BETWEEN
ve CASE
kullanımları detaylandırılmıştır. Bu operatörler ve yapılar, sorguların daha okunabilir, etkili ve esnek olmasına olanak tanır. Etkili bir veritabanı yönetimi için bu tekniklerin doğru kullanılması çok önemlidir.