TOP

SQL Dersi 4. Veri filtreleme (WHERE)

Ç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.


1. WHERE operatörüyle basit filtreleme.

Ö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.

Metin değerlerini seçmek için bir sorgu örneği:

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.

Sayısal değerleri seçmeye yönelik bir sorgu örneği:

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 Відсутній запис

2. Değer aralığına göre filtreleme (BETWEEN)

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.

3. Boş kayıtların seçimi (IS NULL)

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.

4. Gelişmiş filtreleme (AND, OR)

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'

5. Gelişmiş filtreleme (IN operatörü)

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:

  • Uzun listelerle çalışırken IN içeren cümleleri okumak daha kolaydır;
  • Daha az operatör kullanılır, bu da istek işlemeyi hızlandırır;
  • IN'nin en önemli avantajı, yapımında SELECT ek yapısını kullanabilmenizdir.
  • відкриває великі можливості для створення складних підзапитів.

    6. Gelişmiş filtreleme (NOT operatö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.