Çoğu durumda, tüm kayıtları değil, yalnızca belirli kriterleri karşılayanları almak gerekir. Bu nedenle SQL'de örnekleme filtrelemesi için özel bir WHERE operatörü vardır.
Örneğin tablomuzdan yalnızca belirli bir ürünle ilgili kayıtları seçelim. Bunu yapmak için, değerleri Ürün sütununa göre filtreleyecek ek bir seçim parametresi belirliyoruz.
Run SQLSELECT *
FROM Sumproduct
WHERE Product = 'Bikes'
Gördüğünüz gibi seçim koşulu, metin değerlerini filtrelerken zorunlu olan tek tırnak içine alınmıştır. Sayısal değerleri filtrelerken tırnak işaretlerine gerek yoktur.
Run SQLSELECT *
FROM Sumproduct
WHERE Amount > 40000
ORDER BY Amount
Bu örnekte, satış geliri 40.000 ABD dolarının üzerinde olan kayıtları seçtik ve ayrıca tüm kayıtları Tutar alanına göre artan sırada sıraladık.
Aşağıdaki tabloda SQL tarafından desteklenen koşullu ifadeler listelenmektedir:
Знак операції | Значення |
---|---|
= | Дорівнює |
<> | Не дорівнює |
< | Менше |
<= | Менше або рівне |
> | Більше |
>= | Більше або рівне |
BETWEEN | Між двома значеннями |
IS NULL | Відсутній запис |
BETWEEN operatörü belirli bir aralıkta yer alan verileri seçmek için kullanılır. Bir sonraki sorguda Tutar alanında 1.000$ ile 2.000$ (dahil) arasında yer alan tüm değerler seçilecektir.
Run SQLSELECT *
FROM Sumproduct
WHERE Amount BETWEEN 1000 AND 2000
Sıralama sırası, istekteki alanların sırasına bağlı olacaktır. Yani bizim durumumuzda veriler önce Tutar sütununa, ardından City'ye göre sıralanacaktır.
SQL'de boş kayıtları seçmek için özel bir operatör vardır (NULL olarak adlandırılır). Boş giriş, tabloda herhangi bir karakterin girilmediği herhangi bir hücredir. Hücreye 0 veya boşluk girilmesi durumunda alanın dolu olduğu kabul edilir.
SELECT *
FROM Sumproduct
WHERE Amount IS NULL
Yukarıdaki örnekte NULL operatörünü göstermek için Amount alanındaki iki değeri kasıtlı olarak kaldırdık.
SQL dili tek bir koşula göre filtrelemekle sınırlı değildir, kendi amaçlarınız doğrultusunda verileri birçok kritere göre aynı anda seçmek için oldukça karmaşık yapıları kullanabilirsiniz. Bunun için SQL'de WHERE operatörünün yeteneklerini genişleten ek operatörler bulunur. Bu tür operatörler şunlardır: AND, OR, IN, NOT. Bu operatörlerin işleyişine dair birkaç örnek vereceğiz.
Run SQLSELECT *
FROM Sumproduct
WHERE Amount > 40000 AND City = 'Toronto'
Run SQLSELECT *
FROM Sumproduct
WHERE Month = 'April' OR Month = 'March'
AND ve OR operatörlerini birleştirelim. Bunun için Mart ayında satılan bisiklet (Bisiklet) ve paten (Paten) ürünlerinden bir seçki yapacağız.
Run SQLSELECT *
FROM Sumproduct
WHERE Product = 'Bikes' OR Product = 'Skates' AND Month = 'March'
Örneğimizde birçok değerin yer aldığını görüyoruz (Mart'ın yanı sıra Ocak, Şubat ve Nisan ayları da). Nedeni ne? Ve SQL'in komut yürütme önceliklerine sahip olduğu gerçeği. Yani, AND operatörü, OR operatöründen daha yüksek önceliğe sahiptir, bu nedenle ilk olarak Mart ayında satılan patenlerin kayıtları, ardından bisikletlerle ilgili tüm kayıtlar seçildi.
Dolayısıyla doğru örneklemeyi elde etmek için komut yürütme önceliklerini değiştirmemiz gerekiyor. Bunun için matematikte olduğu gibi parantez kullanacağız. Daha sonra önce parantez içindeki operatörler, sonra geri kalanlar işlenecektir.
Run SQLSELECT *
FROM Sumproduct
WHERE (Product = 'Bikes' OR Product = 'Skates') AND Month = 'March'
Run SQLSELECT *
FROM Sumproduct
WHERE ID IN (4, 12, 58, 67)
IN operatörü, OR ile aynı işlevi gerçekleştirir ancak birkaç avantajı vardır:
Run SQLSELECT *
FROM Sumproduct
WHERE NOT City IN ('Toronto', 'Montreal')
NOT anahtar kelimesi, gereksiz değerleri örnekten kaldırmanıza olanak tanır. Ayrıca özelliği, filtrelemeyle ilgili sütunun adının arkasına değil, önüne yerleştirilmesidir.