WHEREile satırları bir koşula göre filtrelemek- Karşılaştırma işleçlerini sayılara, metinlere ve tarihlere uygulamak
AND,OR,NOTile 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.
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
Karşılaştırma işleçleri
| İşleç | Anlamı | Örnek |
|---|---|---|
| = | eşittir | grade = 11 |
| <> , != | eşit değildir | subject <> 'Math' |
| < | küçüktür | price < 50 |
| > | büyüktür | age > 15 |
| <= | küçük veya eşittir | stock <= 20 |
| >= | büyük veya eşittir | score >= 90 |
<> SQL standardının işlecidir; != de tüm popüler VTYS'lerde çalışır.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.
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 yeniANDsonucu daraltır.A OR B— koşullardan en az biri doğru olmalıdır. Her yeniORsonucu genişletir.NOT A— koşulu tersine çevirir: doğru yanlış, yanlış doğru olur.
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.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.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”.
-- 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
-- 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
Depodaki toplam değeri (price * stock) 3000'den fazla olan ürünleri bul.
Çözümü gösterÇözümü gizle
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.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
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.
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
WHEREher 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-DDbiçimindeki tarihler sıradan işleçlerle karşılaştırılabilir. ANDsonucu daraltır,ORgenişletir,NOTkoşulu tersine çevirir.AND,ORişlecinden önce hesaplanır; ikisini birlikte kullanırken parantez koy.
Kendini test et
10 soru. Her doğru cevap XP kazandırır.