İçeriğe geç
Educora
Başlangıç15 dk3 / 22

WHERE: satırları filtreleme

WHERE ile yalnızca gereken satırları seç: karşılaştırma işleçleri, AND, OR, NOT ve parantezlerin önemi.

Kendini test et
Bu derste öğreneceklerin
  • WHERE ile satırları bir koşula göre filtrelemek
  • Karşılaştırma işleçlerini sayılara, metinlere ve tarihlere uygulamak
  • AND, OR, NOT ile karmaşık koşullar kurmak ve parantezleri doğru kullanmak

Bir çevrim içi mağazada “fiyat 50'nin altında”, “yalnızca elektronik”, “stokta var” filtrelerini seçtiğinde site arka planda veritabanına bir sorgu gönderir. Her filtre SQL'de bir koşuldur ve koşullar WHERE bölümüne yazılır. Bu derste binlerce satır arasından yalnızca gerekenleri seçmeyi öğreneceksin.

WHERE nasıl çalışır

WHERE bölümü FROM sözcüğünden sonra yazılır. VTYS koşulu tablonun her satırı için denetler: koşul doğruysa satır sonuca girer, yanlışsa atlanır. Metin değerleri tek tırnakla, sayılar ise tırnaksız yazılır.

SQL
SELECT first_name, last_name, age
FROM students
WHERE city = 'Bakı'
ORDER BY id;
▸ Beklenen çıktı
first_name | last_name | age
Aysel | Məmmədova | 15
Leyla | Hüseynova | 14
Rəşad | Kərimov | 16
Kamran | Həsənov | 15
Bakü'de yaşayan öğrenciler.

Karşılaştırma işleçleri

İşleçAnlamıÖrnek
=eşittirgrade = 11
<> , !=eşit değildirsubject <> 'Math'
<küçüktürprice < 50
>büyüktürage > 15
<=küçük veya eşittirstock <= 20
>=büyük veya eşittirscore >= 90
<> SQL standardının işlecidir; != de tüm popüler VTYS'lerde çalışır.
SQL
SELECT name, price
FROM products
WHERE price < 50
ORDER BY price;
▸ Beklenen çıktı
name | price
Notebook | 3.2
Pen set | 7.9
Water bottle | 12
Desk lamp | 34.99
Chess set | 42

Karşılaştırma metinler ve tarihler için de çalışır. Metinlerde = harf harf karşılaştırır; bu yüzden 'bakı' ile 'Bakı' farklı değerlerdir. Alıştırma veritabanımızda tarihler YYYY-MM-DD biçiminde metin olarak tutulur; bu biçimde alfabetik sıra takvim sırasıyla örtüşür. Bu yüzden nisan–haziran siparişlerini sıradan >= ve < ile bulabiliriz.

SQL
SELECT id, product_id, quantity, order_date
FROM orders
WHERE order_date >= '2025-04-01'
  AND order_date <  '2025-07-01'
ORDER BY id;
▸ Beklenen çıktı
id | product_id | quantity | order_date
7 | 2 | 1 | 2025-04-09
8 | 8 | 3 | 2025-04-09
9 | 10 | 1 | 2025-05-21
10 | 5 | 4 | 2025-06-12
11 | 3 | 1 | 2025-06-30

Mantıksal işleçler: AND, OR, NOT

  • A AND B — iki koşul da doğru olmalıdır. Her yeni AND sonucu daraltır.
  • A OR B — koşullardan en az biri doğru olmalıdır. Her yeni OR sonucu genişletir.
  • NOT A — koşulu tersine çevirir: doğru yanlış, yanlış doğru olur.
SQL
SELECT first_name, age, city
FROM students
WHERE city = 'Bakı' AND age >= 15
ORDER BY id;
▸ Beklenen çıktı
first_name | age | city
Aysel | 15 | Bakı
Rəşad | 16 | Bakı
Kamran | 15 | Bakı
AND: Bakü'de yaşayan ve en az 15 yaşında olan öğrenciler.
SQL
SELECT name, category, price
FROM products
WHERE category = 'Games' OR price > 800
ORDER BY id;
▸ Beklenen çıktı
name | category | price
Laptop | Electronics | 1450
Smartphone | Electronics | 899.99
Chess set | Games | 42
OR: oyun kategorisindeki veya 800'den pahalı ürünler.
SQL
SELECT first_name, last_name, age, grade
FROM students
WHERE age > 15 AND NOT city = 'Bakı'
ORDER BY id;
▸ Beklenen çıktı
first_name | last_name | age | grade
Murad | Əliyev | 16 | 10
Elvin | Quliyev | 17 | 11
Tural | İsmayılov | 17 | 11
Səbinə | Nəsirova | 16 | 10
Fidan | Cəfərova | 17 | 11
NOT: 15 yaşından büyük olup Bakü'de yaşamayan öğrenciler.

İşlem önceliği ve parantezler

Matematikte çarpma toplamadan önce yapıldığı gibi, SQL'de de AND, OR işlecinden önce hesaplanır. Diyelim ki 150'den ucuz elektronik ve aksesuar ürünleri istiyoruz. Parantezsiz yazılan koşulu VTYS bambaşka anlar: “tüm elektronik ürünler veya 150'den ucuz aksesuarlar”.

SQL
-- without parentheses: AND is applied first
SELECT name, category, price
FROM products
WHERE category = 'Electronics'
   OR category = 'Accessories' AND price < 150
ORDER BY id;
▸ Beklenen çıktı
name | category | price
Laptop | Electronics | 1450
Smartphone | Electronics | 899.99
Headphones | Electronics | 120.5
Backpack | Accessories | 55
Water bottle | Accessories | 12
Monitor | Electronics | 310
Dizüstü bilgisayar 1450 ediyor ama yine de sonuçta — koşul yanlış kurulmuş.
SQL
-- with parentheses: OR is applied first
SELECT name, category, price
FROM products
WHERE (category = 'Electronics' OR category = 'Accessories')
  AND price < 150
ORDER BY id;
▸ Beklenen çıktı
name | category | price
Headphones | Electronics | 120.5
Backpack | Accessories | 55
Water bottle | Accessories | 12
Örnek görev

Depodaki toplam değeri (price * stock) 3000'den fazla olan ürünleri bul.

Çözümü göster
Koşulda sütunlar gibi ifadeler de kullanılabilir: WHERE price * stock > 3000.
Sonuç: Laptop, Smartphone, Headphones ve Backpack.
Dikkat: ifadeyi WHERE içinde tekrar yazıyoruz, çünkü VTYS WHERE bölümünü SELECT bölümünden önce çalıştırır ve takma adlar henüz yoktur.
SQL
SELECT name, price, stock
FROM products
WHERE price * stock > 3000
ORDER BY id;
▸ Beklenen çıktı
name | price | stock
Laptop | 1450 | 8
Smartphone | 899.99 | 15
Headphones | 120.5 | 40
Backpack | 55 | 60
Alıştırma

students tablosundan Bakü'de (Bakı) yaşayan öğrencilerin adını (first_name) ve yaşını (age) seç. Sonucu yaşa, yaşı aynı olanları ada göre artan sırada sırala.

Alıştırma · SQL
SELECT first_name, age
FROM students
-- add WHERE and ORDER BY
▸ Beklenen çıktı
first_name | age
Leyla | 14
Aysel | 15
Kamran | 15
Rəşad | 16

Önemli noktalar

  • WHERE her satır için koşulu denetler ve yalnızca uyan satırları bırakır.
  • Karşılaştırma işleçleri: =, <> (!=), <, >, <=, >=.
  • Metinler ve tarihler tek tırnakla yazılır; YYYY-MM-DD biçimindeki tarihler sıradan işleçlerle karşılaştırılabilir.
  • AND sonucu daraltır, OR genişletir, NOT koşulu tersine çevirir.
  • AND, OR işlecinden önce hesaplanır; ikisini birlikte kullanırken parantez koy.

Kendini test et

10 soru. Her doğru cevap XP kazandırır.

1 / 10
Standart SQL'de “eşit değildir” hangi işleçle yazılır?