Veritabanları, modern uygulamaların ve sistemlerin temel taşlarıdır. Büyük miktarda veriyi düzenli bir şekilde saklamak ve yönetmek için kullanılırlar. Bu veriye erişmek, onu analiz etmek ve anlamlı bilgilere dönüştürmek için ise SQL (Structured Query Language - Yapılandırılmış Sorgu Dili) adı verilen özel bir dil kullanılır. SQL'in en temel ve en sık kullanılan komutlarından biri de SELECT sorgusudur. Bu makalede, SELECT sorgularının veri filtreleme ve sıralama özelliklerine odaklanarak, bu güçlü aracın nasıl etkili bir şekilde kullanılabileceğini derinlemesine inceleyeceğiz.
SELECT sorgusu, bir veritabanı tablosundan belirli sütunlardaki verileri çekmek için kullanılır. En basit haliyle, bir tablodaki tüm sütunları ve satırları seçebilir. Ancak, gücü filtreleme ve sıralama yeteneklerinde yatar. Bu sayede, yalnızca ihtiyacımız olan veriye odaklanabilir ve bu veriyi istediğimiz şekilde düzenleyebiliriz.
Temel SELECT sözdizimi şöyledir:
SELECT sütun1, sütun2, ...FROM tablo_adı;Burada, sütun1, sütun2, ... seçmek istediğimiz sütunların adlarını temsil eder ve tablo_adı ise verilerin bulunduğu tablonun adıdır. Eğer tüm sütunları seçmek istiyorsak, sütun adları yerine * (yıldız) karakterini kullanabiliriz:
SELECT *FROM tablo_adı;WHERE koşulu, SELECT sorgusunun en önemli parçalarından biridir. Bu koşul, hangi satırların sonuç kümesine dahil edileceğini belirler. Belirli bir koşulu sağlayan satırları filtrelemek için kullanılır. Örneğin, belirli bir fiyattan daha yüksek ürünleri veya belirli bir tarihten sonraki siparişleri seçmek için WHERE koşulunu kullanabiliriz.
WHERE koşulu ile birlikte kullanılabilecek çeşitli operatörler vardır:
= (Eşittir): Belirli bir değere eşit olan satırları seçer.<> veya != (Eşit Değildir): Belirli bir değere eşit olmayan satırları seçer.> (Büyüktür): Belirli bir değerden büyük olan satırları seçer.< (Küçüktür): Belirli bir değerden küçük olan satırları seçer.>= (Büyük Eşittir): Belirli bir değerden büyük veya eşit olan satırları seçer.<= (Küçük Eşittir): Belirli bir değerden küçük veya eşit olan satırları seçer.LIKE: Belirli bir kalıba uyan metin değerlerini seçer.BETWEEN: Belirli bir aralıktaki değerleri seçer.IN: Belirli bir listedeki değerlerden herhangi birine sahip olan satırları seçer.IS NULL: Değeri boş (NULL) olan satırları seçer.Örnekler:
Fiyatı 100 TL'den yüksek olan ürünleri seçme:
SELECT *FROM urunlerWHERE fiyat > 100;Adı 'A' ile başlayan müşterileri seçme:
SELECT *FROM musterilerWHERE ad LIKE 'A%';2023-01-01 ile 2023-01-31 tarihleri arasındaki siparişleri seçme:
SELECT *FROM siparislerWHERE siparis_tarihi BETWEEN '2023-01-01' AND '2023-01-31';ID'si 1, 3 veya 5 olan ürünleri seçme:
SELECT *FROM urunlerWHERE id IN (1, 3, 5);WHERE koşulu içerisinde birden fazla koşulu birleştirmek için mantıksal operatörler kullanılır. En yaygın kullanılan mantıksal operatörler şunlardır:
AND: Tüm koşulların doğru olması gerekir.OR: Koşullardan en az birinin doğru olması gerekir.NOT: Koşulun tersini alır.Örnekler:
Fiyatı 100 TL'den yüksek VE stokta 5'ten fazla olan ürünleri seçme:
SELECT *FROM urunlerWHERE fiyat > 100 AND stok_miktari > 5;Adı 'A' ile başlayan VEYA soyadı 'B' ile başlayan müşterileri seçme:
SELECT *FROM musterilerWHERE ad LIKE 'A%' OR soyad LIKE 'B%';Fiyatı 100 TL'den yüksek OLMAYAN ürünleri seçme:
SELECT *FROM urunlerWHERE NOT fiyat > 100;ORDER BY ifadesi, SELECT sorgusunun sonuçlarını belirli bir sütuna göre sıralamak için kullanılır. Sonuçları artan (ASC) veya azalan (DESC) sırada sıralayabiliriz. Varsayılan olarak, ORDER BY ifadesi sonuçları artan sırada sıralar.
ORDER BY sözdizimi şöyledir:
SELECT sütun1, sütun2, ...FROM tablo_adıORDER BY sütun_adı [ASC | DESC];Burada, sütun_adı sıralama yapmak istediğimiz sütunun adını temsil eder ve ASC (artan) veya DESC (azalan) sıralama türünü belirtir.
Örnekler:
Ürünleri fiyata göre artan sırada sıralama:
SELECT *FROM urunlerORDER BY fiyat ASC;Müşterileri soyadına göre azalan sırada sıralama:
SELECT *FROM musterilerORDER BY soyad DESC;Önce kategoriye göre artan, sonra da fiyata göre azalan sırada ürünleri sıralama:
SELECT *FROM urunlerORDER BY kategori_id ASC, fiyat DESC;WHERE koşulu ve ORDER BY ifadesi, SELECT sorgusunda birlikte kullanılabilir. Bu sayede, önce verileri filtreleyebilir ve ardından filtrelenmiş verileri sıralayabiliriz.
Örnek:
Fiyatı 100 TL'den yüksek olan ürünleri fiyata göre azalan sırada sıralama:
SELECT *FROM urunlerWHERE fiyat > 100ORDER BY fiyat DESC;WHERE koşulunda doğru veri türlerini kullanmaya özen gösterin. Örneğin, sayısal bir sütunu metin olarak karşılaştırmak beklenmeyen sonuçlara yol açabilir.WHERE koşullarından kaçının ve mümkünse sorguları basitleştirin.LIMIT ifadesini kullanın. Bu, sorgu performansını artırır ve gereksiz kaynak kullanımını önler.SELECT sorguları, veritabanlarından veri çekmek, filtrelemek ve sıralamak için güçlü bir araçtır. WHERE koşulu ile verileri filtreleyebilir, ORDER BY ifadesi ile verileri sıralayabilir ve bu iki özelliği birleştirerek karmaşık sorgular oluşturabiliriz. Bu makalede sunulan bilgiler ve örnekler, SELECT sorgularını etkili bir şekilde kullanmanıza ve veritabanlarınızdan en iyi şekilde yararlanmanıza yardımcı olacaktır. Veritabanı yönetim sisteminizin dokümantasyonunu inceleyerek, SELECT sorgularının daha gelişmiş özelliklerini ve optimizasyon tekniklerini öğrenebilirsiniz. Unutmayın, pratik yaparak ve farklı senaryolarda sorgular oluşturarak, SQL becerilerinizi geliştirebilir ve veritabanı yönetiminde uzmanlaşabilirsiniz.