İçeriğe geç

SQL · 2/8

Koşullu filtreleme: WHERE

Tablodaki binlerce satır arasından yalnızca belirli koşullara uyan verileri WHERE ile filtrelemek.

Önerilen çalışma: 25–45 dakika; örnekleri kendin uygula. Süre kişiye göre değişir.

Bu sayfada · 9 başlık

Başlamadan önce

Önceki dersteki örneği çalıştırmış olman ve dosya/çıktı ayrımını biliyor olman yararlı.

Öğrenme sırası: konuyu oku → çıktıyı tahmin et → örneği değiştir → alıştırmayı çöz → cevabını gerekçelendir.

SQL · Koşullu filtreleme: WHERE — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.

Videoyla adım adım izle

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Koşullu filtreleme: WHERE

Tablodaki binlerce satır arasından yalnızca belirli koşullara uyan verileri WHERE ile filtrelemek.

Kavramı kur

Veritabanında her zaman tablonun tamamına ihtiyaç duymayız. Belirli bir kullanıcının bilgilerini getirmek, stokta tükenen ürünleri bulmak veya belirli bir tarihten sonraki kayıtları listelemek için WHERE filtresi kullanılır.

Neden böyle çalışıyor?

WHERE ifadesi FROM satırından sonra yazılır. Koşulda büyüktür (>), küçüktür (<), eşit (=) veya eşit değil (!=) gibi karşılaştırma işleçleri kullanılır. Birden çok koşulu AND (ve) veya OR (veya) ile bağlayabilirsin.

Çalışma sırası

Metinsel ve tarihsel değerler SQL'de tek tırnak içine ('...') yazılır. Sayısal değerlerde ise tırnak kullanılmaz. Tırnak işaretini unutmak SQL motorunun metni bir sütun adı sanmasına yol açar.

İkinci örnek · 1

SELECT ad, maas seçilecek sütunları listeler. Kodun tamamı yazılı derste bulunur.

Kod

SELECT ad, maas
FROM calisanlar
WHERE maas > 50000;

Beklenen sonucu oku

Sonuç kümesine yalnızca şartı sağlayan satırlar eklenir.

Beklenen çıktı: ad | maas Ahmet | 65000 Ayşe | 52000

Bir değeri sen değiştir

Maaşı 60000'den büyük çalışanları filtrele. Bölümü yalnızca 'Yazılım' olanları getiren bir metin filtresi yaz.

Hata nereden gelir?

Metin değerlerini tırnaksız yazmak hataya sebep olur; tek tırnak kullan.

Kendi çözümünü kur

AND işleci kullanarak hem Yazılım bölümünde olan hem de maaşı 50000 üzerinde olanları seç. Metin filtresinde tek tırnak kullan: WHERE bolum = 'Yazılım'. İki koşulu AND ile birleştir.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

SELECT ad, bolum, maas
FROM calisanlar
WHERE bolum = 'Yazılım' AND maas > 50000;

Kendini kontrol et

WHERE bolum = 'Yazılım' AND maas > 50000 sorgusunda her iki şart da sağlanmalı mıdır? Yanıt: Evet; AND işleci bağlı olduğu tüm koşulların aynı anda doğru olmasını zorunlu kılar.

Beklenen çıktı: ad | bolum | maas Ahmet | Yazılım | 65000

Konu anlatımı

Veritabanında her zaman tablonun tamamına ihtiyaç duymayız. Belirli bir kullanıcının bilgilerini getirmek, stokta tükenen ürünleri bulmak veya belirli bir tarihten sonraki kayıtları listelemek için WHERE filtresi kullanılır.

WHERE ifadesi FROM satırından sonra yazılır. Koşulda büyüktür (>), küçüktür (<), eşit (=) veya eşit değil (!=) gibi karşılaştırma işleçleri kullanılır. Birden çok koşulu AND (ve) veya OR (veya) ile bağlayabilirsin.

Metinsel ve tarihsel değerler SQL'de tek tırnak içine ('...') yazılır. Sayısal değerlerde ise tırnak kullanılmaz. Tırnak işaretini unutmak SQL motorunun metni bir sütun adı sanmasına yol açar.

İlk örneği oku ve dene

2

Koşullu filtreleme: WHERE

WHERE ile yalnızca belirli kriterlere uyan satırları getiririz. Metin değerleri tek tırnak içine yazılır.

SQL
SELECT ad, maas
FROM calisanlar
WHERE maas > 50000;

▶ Sonuç

ad | maas
Ahmet | 65000

Adım adım neden böyle çalışıyor?

  1. SELECT ad, maas seçilecek sütunları listeler.
  2. FROM calisanlar kaynak tabloyu işaret eder.
  3. WHERE maas > 50000 her satırın maas sütununu inceler; 50000'den büyük olanları geçirir, diğerlerini eler.
  4. Sonuç kümesine yalnızca şartı sağlayan satırlar eklenir.
102

İkinci çözümlü örnek

Tablodaki binlerce satır arasından yalnızca belirli koşullara uyan verileri WHERE ile filtrelemek.

SQL
SELECT ad, maas
FROM calisanlar
WHERE maas > 50000;

▶ Sonuç

ad | maas
Ahmet | 65000
Ayşe | 52000

Kolaydan zora sen dene

  1. Maaşı 60000'den büyük çalışanları filtrele.
  2. Bölümü yalnızca 'Yazılım' olanları getiren bir metin filtresi yaz.
  3. AND işleci kullanarak hem Yazılım bölümünde olan hem de maaşı 50000 üzerinde olanları seç.
İpucunu aç

Metin filtresinde tek tırnak kullan: WHERE bolum = 'Yazılım'. İki koşulu AND ile birleştir.

Üç görevin açıklamalı çözümünü oku
  1. WHERE maas > 60000 ile yüksek maaşlı satırlar filtrelenir.
  2. Metin karşılaştırmasında tek tırnak kullanılır: WHERE bolum = 'Yazılım'.
  3. AND işleci her iki koşulu aynı anda zorunlu kılar; parantez gerekmez.
Bir çözüm varyasyonu gör
202

Çözüm varyasyonu

Önce kendi görevlerini dene. Bu varyasyonda girdi ve sonuçları karşılaştır.

SQL
SELECT ad, bolum, maas
FROM calisanlar
WHERE bolum = 'Yazılım' AND maas > 50000;

▶ Sonuç

ad | bolum | maas
Ahmet | Yazılım | 65000

Yaygın hata ve çözümü

  1. Metin değerlerini tırnaksız yazmak hataya sebep olur; tek tırnak kullan.
  2. Eşitlik için çift eşittir (==) yazmak birçok motorda geçersizdir; SQL standart eşitlik için tek = kullanır.

Kendini değerlendir

Belirli bir koşula uyan satırları filtrelemek için hangi ifade kullanılır?

Ezberlemeden açıklayabiliyor musun?

WHERE bolum = 'Yazılım' AND maas > 50000 sorgusunda her iki şart da sağlanmalı mıdır?

Açıklamalı yanıt

Evet; AND işleci bağlı olduğu tüm koşulların aynı anda doğru olmasını zorunlu kılar.

Kendi çözümünde bir girdiyi değiştir. Çalıştırmadan önce beklenen sonucu yaz; gerçek sonuçla karşılaştır ve fark varsa hangi satırdan kaynaklandığını açıkla.

Kaynak ve çalışma ortamı

Örnekler küçük öğretim senaryolarıdır. Java/C#/PHP/Swift çalışma ortamını kendi cihazında ayrıca doğrula; yazılı sonuçlar beklenen davranışı açıklar.

Resmî dil belgeleri
Bu içerik işine yaradı mı?

Görüşünü aşağıdan işaretleyebilir ve varsa notunu bırakabilirsin.