SQL Temelleri: WHERE, Mantıksal Operatörler ve ORDER BY ile Veri Manipülasyonu
İlişkisel veritabanı yönetim sistemlerinde (RDBMS) verileri ham haliyle saklamak kadar, bu verileri belirli kriterlere göre süzmek ve anlamlı bir hiyerarşiyle sıralamak da operasyonel süreçlerin temelini oluşturur. İlk yazımızda ele aldığımız CRUD (Create, Read, Update, Delete) döngüsünün “Read” (Okuma/Sorgulama) ayağını optimize etmek için filtreleme ve sıralama mekanizmalarını derinlemesine incelemek gerekir.
Bu yazıda, SQL’in veri analizinde en sık kullanılan bileşenleri olan WHERE koşulunu, AND, OR, NOT mantıksal operatörlerini ve ORDER BY sıralama ifadesini teknik örnekleriyle ele alacağız.
1. WHERE Tümcesi ile Veri Filtreleme (Data Filtering)
Veritabanı sunucusundan dönen sonuç kümesini (Result Set) sınırlandırmak ve sadece belirli bir kondisyona uyan kayıtları çekmek için WHERE ifadesi kullanılır. WHERE tümcesi, satır bazlı bir filtreleme işlemi gerçekleştirir.
Senaryomuz gereği e-ticaret altyapımızda yer alan bir Urunler tablosu üzerinde çalışalım. Örneğin, fiyatı tam olarak 1500 TL olan kayıtları izole etmek istediğimizde sorgumuz şu şekilde olacaktır:
SELECT * FROM Urunler
WHERE Fiyat = 1500;
Eşittir (=) operatörünün yanı sıra, SQL standartlarında verileri karşılaştırmak için aşağıdaki mantıksal ve matematiksel operatörler de sıklıkla kullanılır:
>(Büyük) /<(Küçük)>=(Büyük Eşit) /<=(Küçük Eşit)<>veya!=(Eşit Değil)
Uygulama Örnek Senaryosu: Stok seviyesi acil tedarik sınırı olan 10 adedin altına düşmüş ürünlerin adını ve güncel stok bilgisini listeleyelim:
SELECT UrunAdi, StokSayisi FROM Urunler
WHERE StokSayisi < 10;
2. Çoklu Koşul Yönetimi: AND ve OR Mantıksal Operatörleri
Gerçek zamanlı veritabanı mimarilerinde tek bir filtreleme kriteri genellikle yetersiz kalır. Birden fazla koşulun kombinasyonunu yönetmek için mantıksal operatörlerden yararlanırız.
A) AND Operatörü
Sorgunun sonuç kümesinde yer alabilmesi için belirtilen tüm koşulların aynı anda TRUE (Doğru) sonucunu vermesi gerekir.
Örnek: Kategori bilgisi ‘Elektronik’ olan VE Fiyat değeri 5000 TL’den büyük olan ürünlerin filtrelenmesi:
SELECT * FROM Urunler
WHERE Kategori = 'Elektronik' AND Fiyat > 5000;
B) OR Operatörü
Belirtilen koşullardan en az birinin TRUE dönmesi durumunda kaydı sonuç kümesine dahil eder.
Örnek: Kategori değeri ‘Kitap’ VEYA ‘Kırtasiye’ olan ürün kayıtlarının getirilmesi:
SELECT * FROM Urunler
WHERE Kategori = 'Kitap' OR Kategori = 'Kırtasiye';
3. Sonuç Kümesinin Düzenlenmesi: ORDER BY ile Sıralama
RDBMS mimarilerinde sorgu sonucunda dönen veriler varsayılan olarak diskteki fiziksel yazılma sırasına veya indeks yapısına göre gelir. Verileri alfabetik, sayısal ya da kronolojik olarak sıralamak için ORDER BY ifadesi devreye girer.
Sıralama yönünü tayin etmek için iki temel argüman kullanılır:
- ASC (Ascending): Küçükten büyüğe, eskiden yeniye veya A’dan Z’ye sıralama yapar (Varsayılan değerdir).
- DESC (Descending): Büyükten küçüğe, yeniden eskiye veya Z’den A’ya sıralama algoritmasını çalıştırır.
Uygulama Örnek Senaryosu: Urunler tablosundaki kayıtları fiyatı en yüksek olandan en düşük olana göre (azalan sırada) listeleyelim:
SELECT UrunAdi, Fiyat FROM Urunler
ORDER BY Fiyat DESC;
Filtreleme (WHERE) ve Sıralamanın (ORDER BY) Birlikte Kullanımı
SQL sözdiziminde (Syntax) ORDER BY her zaman sorgunun en sonunda yer almalıdır.
Örnek: Kategori bilgisi ‘Giyim’ olan ürünleri filtreleyip, sonuçları fiyata göre en ucuzdan en pahalıya (artan sırada) dizelim:
SELECT * FROM Urunler
WHERE Kategori = 'Giyim'
ORDER BY Fiyat ASC;
Özet ve Sentaks Hiyerarşisi
Veri manipülasyonunda ve raporlamada WHERE, AND/OR kombinasyonları ve ORDER BY sıralaması sorgu performansını ve doğruluğunu doğrudan etkiler. Standart bir SQL sorgusunun yazım sırası hiyerarşisi şu şekildedir:
SELECT kolon_isimleri
FROM tablo_adi
WHERE kosullar
ORDER BY siralanacak_kolon ASC|DESC;
Serimizin bir sonraki teknik makalesinde, metinsel tabanlı esnek aramalar yapmamızı sağlayan joker karakterleri (LIKE operatörü ve % – _ sembollerini), dinamik küme filtrelemesini (IN) ve belirli veri aralıklarını optimize eden BETWEEN yapısını inceleyeceğiz.