WHERE
yas
>
18
WHERE
— WHERE koşulu SQL içinde tablo/kolon/koşul ilişkisini kurar; kullanıcı değeri varsa SQL metninden ayrı parametre olarak bağlanmalıdır.
Öğretmen açıklaması
Bu adımı hiç bilmeyen biri için okuyalım: WHERE koşulu, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi içinde bu örneğin ilgili görevini üstlenir. Satırın rolü: Veritabanı sorgusunun komut/koşul parçası. Sözdizimi açısından WHERE koşulu SQL içinde tablo/kolon/koşul ilişkisini kurar; kullanıcı değeri varsa SQL metninden ayrı parametre olarak bağlanmalıdır. Çalışma sırasında Veritabanı sorgu motoru bu SQL parçasını ayrıştırır, koşulları uygular ve uygun kayıtları sonuç kümesine taşır. WHERE koşulu sonraki backend işleminin girdisini hazırlar. Gözlenebilir ara sonuç şudur: Bu adımın sonunda WHERE koşulu için gerekli ara durum oluşur; veritabanından seçilen veya değiştirilen kayıtlar, sorgunun koşullarıyla birlikte ölçülebilir hale gelir. Bir sonraki satır bu sonucu kullanır. Kod parçaları: WHERE: Veritabanı motoruna okunacak veya değiştirilecek veri akışını bildirir. Bu satırın neden burada olduğunu anlamak için girdiyi ve bir sonraki satıra taşınan değeri birlikte kontrol edin.
- Önce WHERE koşulu parçasının hangi girdiyi aldığını ve SQL sorgusu ve veri erişimi içindeki görevini söyleyin.
- Sonra sözdizimini parçalara ayırın; hangi anahtar kelime, değişken veya parametrenin neyi belirlediğini gösterin.
- Çalışma zamanında verinin bu satırdan önceki ve sonraki halini karşılaştırın; terminal/response sonucunu kontrol edin.
- Aynı fikri boş, hatalı veya farklı bir değerle deneyin; hata oluşursa mesajı okuyup tek değişiklikle yeniden test edin.
Yaygın hata: Bu adımda en yaygın hata, WHERE koşulu parçasını SQL sorgusu ve veri erişimi bağlamından koparıp yalnızca ezberlemektir. Önce girdiyi doğrulayın, sonra beklenen çıktıyı küçük bir testle karşılaştırın.
Şimdi sen dene: WHERE koşulu üzerinde küçük bir değişiklik yapın; SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi akışında hangi çıktının değişmesini beklediğinizi yazın, sonra normal ve hatalı bir girdiye karşı çalıştırın.
Bu satırı hiç bilmeyen biri için parçalayalım
Satırın görevi: Veritabanı sorgusunun komut/koşul parçası
Kavram: SQL sorgusu ve veri erişimi
WHERE koşulu satırını yalnızca sözdizimiyle değil, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi içindeki göreviyle okuyun.
Blok kapsamı: WHERE koşulu satırının bulunduğu backend akışındaki kapsamı ve sonraki adıma taşıdığı sonucu belirler.
Neden şimdi: Bu parça, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi akışında sonraki adımın ihtiyaç duyduğu girdiyi hazırlamak için şimdi kuruluyor.
Kod etiketlerini tek tek incele
WHERE
SQL komutu/koşulu
Ne yapar? Veritabanı motoruna okunacak veya değiştirilecek veri akışını bildirir.
Neden burada? Dersin sorgu amacını bu anahtar kelime üzerinden kurar.
Silinirse: Sorgunun sonucu, kapsamı veya veri değişikliği bozulur.
Amaç
WHERE koşulu, SQL sorgusunun tablo, koşul, kolon ve dönen kayıtlar arasındaki ilişkisi içinde bu örneğin ilgili görevini üstlenir.
Nasıl Çalışır
Veritabanı sorgu motoru bu SQL parçasını ayrıştırır, koşulları uygular ve uygun kayıtları sonuç kümesine taşır. WHERE koşulu sonraki backend işleminin girdisini hazırlar.
Akış Şeması (Flowchart)
AST (Abstract Syntax Tree)
{
"type": "SelectStatement",
"where": {
"type": "Comparison",
"left": {
"type": "ColumnRef",
"name": "yas"
},
"operator": ">",
"right": {
"type": "Literal",
"value": 18
}
}
}
Değişiklikler (Diff)
+ Eklendi:
+ WHERE yas > 18
Akıllı İpuçları (Adaptive Hints)
Tetikleyici: null_comparison
NULL karşılaştırması: WHERE email = NULL => HIÇBİR ZAMAN TRUE DÖNMEZ! Doğru: WHERE email IS NULL. NULL = NULL bile FALSE'dır (UNKNOWN).
Tetikleyici: index_missing
Sık filtrelenen sütunlarda INDEX oluşturun (CREATE INDEX idx_yas ON kullanicilar(yas)). WHERE koşulları sargable (Search ARGument ABLE) olmalı: WHERE yas > 18 iyi, WHERE YEAR(dogum_tarihi) > 2000 kötü (fonksiyon index'i bozar).
Tetikleyici: operator_confusion
WHERE operatörleri: > (büyüktür), >= (büyüktür/eşittir), < (küçüktür), <= (küçüktür/eşittir), = (eşittir), != veya <> (eşit değil). AND/OR ile birleştirme: WHERE yas > 18 AND aktif = true.
Yaygın Hata
Girdiyi doğrulamadan bu satırın ürettiği sonucu doğru kabul etmek.
Ek Açıklama
Son olarak filtre ekliyoruz: sadece yaşı 18'den büyük olanları getir. WHERE koşulu veritabanı sorgularının kalbidir - veriyi daraltır, istediğiniz kısmı getirir. > operatörü 'büyüktür' demek, >= 'büyüktür veya eşittir'. Index kullanımı performans için kritiktir.